#include"stdio.h" main() {char c;int i=0,j=0,k=0,l=0; while((c=getchar())!=’\n’) {if(c>=65&&c<=90||c>=97&&c<=122) i++; else if(c>=48&&c<=57) j++; else if(c==32) k++; else l++;} printf("i=%d,j=%d,k=%d,l=%d\n",i,j,k,l); } 为什么仅用while((c=getchar())!=’\n’)就可以实现输入? getchar() 不是只能读取一个字符吗? 为什么不用 scanf ? 就是这个代码的流程是怎么样的 希望懂的能教教我! 谢谢,还是个新手,自学中我的问题可能没讲清楚 就是 getchar() 不是只能读取一个字符吗 而我输入的是一串一段字符 他怎么读?
while((c=getchar())!=’\n’)是先执行getchar(),就是从键盘读入一个字符,再将这个字符赋值给c,然后再执行while(c!='\n'),就是判断是否是回车符。scanf("%d%d%d,a,b,c")里边%d是格式控制输入,就是一大串的相同格式的东西一起输入至于为什么不用它,就是要根据你的题目要求了 因为你是用scanf的时候输入回车符不会停止输入,比如scanf("%d%d%d,a,b,c")你先输入一串数字,回车,那只是把你刚才输入的数字赋值给a,接下去的就是赋值给b,c,d……
c=getchar()由键盘接收输入一个字符,相当于scanf("%c",c);while((c=getchar())!=’\n’)while的条件语句相当于两条语句c=getchar() 由键盘接受一个字符,并把它付给c判断c字符是否为回车
#include <stdio.h>void main(){ char line[30]; int i,count1=0,count2=0,count3=0,count4=0; printf("\n请输入一行字符: "); gets(line); i=0; while(line[i]!='\0') { if(((line[i]>=97) && (line[i]<=122))||((line[i]>=65) && (line[i]<=90))) { count1++; } else if(line[i]==' ') { count2++; } else if(line[i]>='0' && line[i]<='9') { count3++; } else count4++; i++; } printf("\n其中的英文字母个数为 %d\n",count1); printf("\n其中的空格个数为 %d\n",count2); printf("\n其中的数字个数为 %d\n",count3); printf("\n其中的其他字符个数为 %d\n",count4);}
getchar()每次读一个字符,每读一个字符就去执行一次循环体,直到读到回车符\n时循环停止。while((c=getchar())!='\n'){。。。。}它相当于c=getchar();while(c!='\n'){...... c=getchar();}当然可以改成:scanf("%c",&c);while(c!='\n'){......scanf("%c",&c);}但这样改不能原来的格式,没那样紧凑
getchar()每次读一个字符,每读一个字符就去执行一次循环体,直到读到回车符\n时循环停止。while((c=getchar())!='\n'){。。。。}它相当于c=getchar();while(c!='\n'){...... c=getchar();}当然可以改成:scanf("%c",&c);while(c!='\n'){......scanf("%c",&c);}