qq_38034939
2017-05-10 08:43
采纳率: 46.2%
浏览 3.3k
已采纳

大神 看这里 这个算法题 首先输入一个数字T(1 <= T <= 100)

首先输入一个数字T(1 <= T <= 100),表示有T个样例,每个样例输入一个仅包含大写英文字母的符串str,字符串长度用|str|来表示,1 <= |str| <= 100。
输出描述

输出对应的小写字符串。
样例输入

3
ACMERGOGOGO
YOUBADBAD
HAPPYBOY

样例输出

acmergogogo
youbadbad
happyboy

提示

输入一个不包含空格的连续字符串,可以使用scanf()函数或gets()函数

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

6条回答 默认 最新

  • 君子黎 2017-05-10 10:56
    已采纳

    图片说明

    打赏 评论
  • 大宝lyangl 2017-05-10 09:11

    表示看不懂。。。。。

    打赏 评论
  • 君子黎 2017-05-10 10:54
    #include<stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <ctype.h>
    void ToLowerChar(char *str)
    {
        while (*str)
        {
            *str = tolower(*str);
            str++;
        }
    }
    
    int main()
    {
        int num,i;
        char str1[20] = {0};
        char str2[20] = {0};
        char str3[20] = {0};
        puts("输入多少个案例:");
        scanf("%d",&num);
        if (num<0||num>100)
        {
            puts("输入不合要求!");
            return;
        }
        getchar();
    
        gets(str1);
        gets(str2);
        gets(str3);
        ToLowerChar(str1);
        ToLowerChar(str2);
        ToLowerChar(str3);
        puts(str1);
        puts(str2);
        puts(str3);
        system("pause");
        return 0;
    }
    
    

    望楼主采纳!谢谢~~

    打赏 评论
  • lvfirst 2017-05-11 04:54

    就是大写转成小写呗。。

    打赏 评论
  • strangejie 2017-05-11 08:12

    上面的程序只支持三个样例吧,看我这个
    #include
    #include
    #include
    #define STRLEN 100

    void ifree(char **p,int i);

    int CheckAndChange(char *p);

    int main()
    {
    int T;/*样例个数*/
    int i;/*循环参数*/
    char **p=NULL;/*指针p指向的内存空间存放指向各个字符串的指针*/

    scanf("%d\n",&T);/*读取T*/
    
    if((p=malloc(T*sizeof(char *)))==NULL)
    {
        printf("malloc p fail!\n");
        return -1;
    }
    
    for(i=0;i<T;i++)
    {
        if((*(p+i)=malloc((STRLEN+1)*sizeof(char)))==NULL)
        {
            printf("malloc p+%d fail!\n",i);
            ifree(p,i);/*释放之前分配的空间*/
            free(p);/*释放p*/
            return -1;
        }
        gets(*(p+i));
    }
    
    for(i=0;i<T;i++)
    {
        if(CheckAndChange(*(p+i))>0)/*判断是否都是大写字符,如果是,则变成小写*/
        {
            printf("%s\n",*(p+i));
        }
        else
        {
            printf("string %d contains incorrect character!\n",i+1);
        }
    }
    
    ifree(p,T);
    free(p);
    return 0;
    

    }

    void ifree(char **p,int i)
    {
    int j;
    for(j=0;j<i;j++)
    {
    free(*(p+j));
    }
    }

    int CheckAndChange(char p)
    {
    int i;
    for(i=0;i<strlen(p);i++)
    {
    if((
    (p+i)>='A')&&(*(p+i)<='Z'))
    {
    *(p+i)+='a'-'A';
    }
    else
    {
    return -1;
    }
    }
    return 1;
    }

    打赏 评论
  • strangejie 2017-05-11 08:24

    #include
    #include
    #include
    #define STRLEN 100
    void ifree(char **p,int i);

    int CheckAndChange(char *p);

    int main()
    {
    int T;/*样例个数*/
    int i;/*循环参数*/
    char **p=NULL;/*指针p指向的内存空间存放指向各个字符串的指针*/

    scanf("%d\n",&T);/*读取T*/
    
    if((p=malloc(T*sizeof(char *)))==NULL)
    {
        printf("malloc p fail!\n");
        return -1;
    }
    
    for(i=0;i<T;i++)
    {
        if((*(p+i)=malloc((STRLEN+1)*sizeof(char)))==NULL)
        {
            printf("malloc p+%d fail!\n",i);
            ifree(p,i);/*释放之前分配的空间*/
            free(p);/*释放p*/
            return -1;
        }
        gets(*(p+i));
    }
    
    for(i=0;i<T;i++)
    {
        if(CheckAndChange(*(p+i))>0)/*判断是否都是大写字符,如果是,则变成小写*/
        {
            printf("%s\n",*(p+i));
        }
        else
        {
            printf("string %d contains incorrect character!\n",i+1);
        }
    }
    
    ifree(p,T);
    free(p);
    return 0;
    

    }

    void ifree(char **p,int i)
    {
    int j;
    for(j=0;j<i;j++)
    {
    free(*(p+j));
    }
    }

    int CheckAndChange(char p)
    {
    int i;
    for(i=0;i<strlen(p);i++)
    {
    if((
    (p+i)>='A')&&(*(p+i)<='Z'))
    {
    *(p+i)+='a'-'A';
    }
    else
    {
    return -1;
    }
    }
    return 1;
    }

    打赏 评论

相关推荐 更多相似问题