油漆检验记录表:c语言新人问题

来源:百度文库 编辑:查人人中国名人网 时间:2024/04/27 22:26:47
我大一,这学期刚开始学C,作业有问题请教,请先见题:
题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
#include "stdio.h"
main()
{char c;
int letters=0,space=0,digit=0,others=0;
printf("please input some characters\n");
while((c=getchar())!='\n')
{
if(c>='a'&&c<='z'||c>='A'&&c<='Z')
letters++;
else if(c==' ')
space++;
else if(c>='0'&&c<='9')
digit++;
else
others++;
}
printf("all in all:char=%d space=%d digit=%d others=%d\n",letters,
space,digit,others);
}
我不懂while((c=getchar())!='\n')这一行,它能省去sanf?定义的c不是字符吗,它不是只能存一个字符吗?为什么输入任意的东西都能存到c里面??
问题2:为什么输入的一定要是非“\n”才行,如果真输入的算成1个字母一个其他不就行了吗?

1、getchar()是只能是字符,但是用了循环while,就可以不断(直到回车结束\n)的接收字符。
2、在c中\n表示回车,\的意思是转意,就是说把原来的含义改变了,具体的你的书上应该很详细。

1.scanf是指格式化字符串输入,这样的话输入的可是字符串,这样做起来比较麻烦,getchar指的是输入任何一个字符,这样只要你按任意键就会执行while循环里面的语句了.并把输入的字符返组C
2(c=getchar())!='\n'这句是让c和"\n"比较,如果是回车"\n"的话就退出循环,如果不是回车的话就继续循环.

1.没有保存,在循环里做了检查后被下次接收的字符覆盖.
2.\n 回车,特殊的转义字符,意思是,回车便做完检查.getchar()要回显.所以在你输完后,结果也同时完成.

题目是:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。这行字符的结束标志就是\n,即回车。所以当输入的字符为\n时循环结束。gerchar()函数表示的就是输入一个字符,所以它的值可以赋给c。