阿康康康 发表于 2019-12-20 19:20:01

求助大佬们!字符串怎么多组输入呀?

如图所示,



我只知道有while(scanf("%d", &a) != EOF)这种写法,

但是字符串的gets好像不能这样写……

所以我应该怎么写呢?{:10_266:} {:10_291:}

Croper 发表于 2019-12-20 20:33:18

如果是用scanf输入,那么只能用getchar()=='\n'判断,
如果有多个回车,那么没法判断,谁知道你这个回车后是打完了还是没打完

ba21 发表于 2019-12-20 20:37:31


参考
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define LINE100
#define CHARNUM1000

void printAlpha(char *str);

int main(void)
{
        char *sArr = {NULL};
        char *s = NULL;
        char ch;
        int i = 0, j = 0;

        // 获取输入 ! 表示结束
        while ( (ch=getchar()) != '!' )
        {
                s = (char *) malloc( sizeof(char) * CHARNUM );
                memset(s, '\0', sizeof(char) * CHARNUM);
                i = 0;
                while( (ch=getchar()) != '\n' )
                {
                       
                        s = ch;
                }
                sArr = s;
        }

        // 打印输出
        i = 0;
        while( (s=sArr) != NULL)
        {
                printAlpha(s);
        }
       

        return 0;
}

void printAlpha(char *str)
{
        int i = 0, j, max;
        int sArr = {0};
        char s;

        // 统计
        while( (s=str) != '\0' )
        {
                if ( (s>='A') && (s<='Z') )
                {
                        // 大写
                        sArr += 1;
                }
                else if ( (s>='a') && (s<='z') )
                {
                        // 小写
                        sArr += 1;
                }
        }

        // 找出现次数最多的
        max = 0;
        j = 0;
        for( i=0; i<26; i++)
        {
                if ( sArr>max )
                {
                        max = sArr;
                        j = i;
                }
        }

        printf("%c = %d\n", 65+j, max);

}
页: [1]
查看完整版本: 求助大佬们!字符串怎么多组输入呀?