湖畔读书人


私信TA

用户名:2814787590

访问量:55854

签 名:

等  级
排  名 25
经  验 9707
参赛次数 0
文章发表 42
年  龄 0
在职情况 学生
学  校 武汉东湖学院
专  业

  自我简介:

解题思路和注意事项:


在这里我们会用到getchar()函数,简单来说,getchar()就是从键盘获取字符,直到回车为止;


代码中while里的表达式(c = getchar()) != '\n',意思是,当输入的字符不是换行符的时候,继续往下执行;


注意这里的括号不能丢,因为!=的优先级比=高,如果去掉了外面的括号就等价于 c = (getchar()!='\n');

参考代码:

#include<stdio.h>
int main()
{
	int letter = 0,number = 0,blank = 0,others = 0,c;        //分别为字母、数字、空格、其他
	while((c = getchar()) != '\n'){
		if(c >= 'A' && c<='Z' || c >= 'a' && c <= 'z')    //判断是否为字母
			letter++;
		else if(c >= '0' && c <= '9')                     //判断是都为数字
			number++;
		else if(c == ' ')                                 //判断是否为空格
			blank++;
		else                                              //其他
			others++;
	}
	printf("%d %d %d %d\n",letter,number,blank,others);
	return 0;
}


 

0.0分

78 人评分

  评论区

为什么不能直接用三个if要用else if啊qwq
2020-10-06 17:13:52 | |
a=getchar();
	while(a!='\n')
	{
	if(a==' ')
		count1++;
	else if(a>=65&&a<=90||a>=97&&a<=122)
			count2++;
	else if(a>=48&&a<=57)
				count3++;
	else
	 	count4++;
	}
2020-07-11 14:45:47 | |
各位大佬我哪里错了。蓝瘦
#include <stdio.h>
int main(void)
{
    int character=0;
    int number=0;
    int space=0;
    int others=0;

    char c;
    while((c=getchar())!='\n')
    {
        if (c>='a'&&c<='z'||c>='A'&&c<='Z')
            character++;
        else if('1'<=c&&c<='9')
            number++;
        else if(c==' ')
            space++;
        else
            others++;
    }
    printf("%d  %d  %d  %d",character,number,space,others);
    return 0;
}
2020-07-11 14:18:00 | |
问个问题,为什么c=gtechar!='\n',这个'\n'是什么意思
2020-06-01 17:40:26 | |
2020-05-30 16:06:20 | |
为什么我用fgets就不给我通过呢?说运行错误,提示不能处理所有情况,我的buf,4096还不够大?或者说他们就不推荐使用数组?
2020-05-13 01:11:27 | |
妙啊
2020-02-20 16:06:52 | |
#include <stdio.h>
//输入一行字符,分别统计出其中英文字母、数字、空格和其他字符的个数。
void main()

{
        int a,c,num,space,y;

        a = c = num = space = y = 0;
        while((a = getchar()) != '\n')
        {
                if(a>='A'&&a>='Z'||a>='a'&&a>='z')
				{
                    ++c;	
				}        
                else if(a>='0'&&a<='9')
                {
                    ++num;
				}    
                else if(a==' ')
				{
                    ++space;
        		}
        		else
        		{
        			++y;
				}
		}
        printf("%d %d %d %d\n",c,num,space,y);
}
提交说我答案错误50%。。。。。。可我编译器没啥错误啊。。。求解
2020-01-22 14:16:16 | |