解题思路和注意事项:
在这里我们会用到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分
179 人评分
#include<stdio.h> void main() { int a,count1=0,count2=0,count3=0,count4=0; 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++; } printf("%d,%d,%d,%d",count2,count3,count1,count4); } 这个为什么输入为数据后,回车没用
#include <stdio.h> #include <string.h> int main(void){ char str[500]; gets(str); int i; int cnt_ch = 0, cnt_num = 0, cnt_spa = 0, cnt_sym = 0; for(i=0; i<strlen(str); i++){ if((str[i]>='A' && str[i]<='Z') || (str[i]>='a' && str<='z')){ cnt_ch++; } else if(str[i]>='0' && str[i]<='9'){ cnt_num++; } else if(str[i]==' '){ cnt_spa++; } else{ cnt_sym++; } } printf("%d %d %d %d\n", cnt_ch, cnt_num, cnt_spa, cnt_sym); return 0; } 请问用字符串做为什么不对?
#include <stdio.h> int main() { int b=0,c=0,d=0,e=0,a; while((a=getchar())!='\n') { if(a>='a' && a<='z' || a>='A' && a<='z') b=b+1; else if(a>='0' && a<='9') c=c+1; else if(a==' ') d=d+1; else e=e+1; } printf("%d %d %d %d",b,c,d,e); return 0; } 为什么编译%50答案错误啊
为什么不能吧c=getchar()写到外面,然后直接判断(c!='\n')
冲进前五百冲鸭 2019-10-14 08:45:24 |
因为你不加while他就只判断了第一个字符了啊,你需要循环判断好几个呢啊.....应该是的。
#include<stdio.h> int main() { char c; int letters=0,space=0,digit=0,others=0; while(c!='\n') { if(c==' ') space++; else if((c>='a'&&c<='z')||(c>='A'&&c<='Z')) letters++; else if('0'<=c&&c<='9') digit++; else others++; } printf("letters=%d space=%d digit=%d others=%d\n",letters,space,digit,others); return 0; } 显示运行时间超限,请问是什么意思?
专业报大腿 2019-07-03 21:17:17 |
内个,你没用getchar(),没有输入字符
钱钱 2019-07-04 10:01:23 |
@201821440027 while(c!='\n')改成 while((c=getchar())!='\n')后可以运行,但是显示答案错误,这是为什么呢?不好意思,我刚学,很多不懂的
小小流星 2019-07-04 11:10:11 |
@Specialmoney 四个答案的顺序不对,检查答案的 也是个程序 要严格按照它给的答案的顺序和格式的,最后输出的letters=等等也不能有
钱钱 2019-07-04 14:53:54 |
@xxliuxing 理解了,谢谢!
小小流星 2019-07-09 16:40:59 |
@Specialmoney 不客气额 互相学习
#include<stdio.h> int main() { int i,a=0,b=0,c=0,d=0; while((i=getchar())!='\n') //!='\n' { if((i>='a'&&a<='z')||(i>='A'&&i<='Z')) a=a+1; else if(i>='0'&&i<='9') b=b+1; else if(i==' ') c=c+1; else d=d+1; } printf("%d %d %d %d",a,b,c,d); return 0; } 怎么说格式错误呢???大佬指导下
#include<stdio.h> int main() { int b=0,c=0,d=0,e=0; char a; while ((a=getchar())!='\n') { if(a>='a'&&a<='z'||a>='A'&&a<='Z') { b++; }else if(a==' ') { c++; }else if(a>='0'&&a<'9') { d++; }else { e++; } } printf("%d,%d,%d,%d\n",b,c,d,e); return 0; } 不知道自己的哪里错了!!
#include<stdio.h> int main() { char x1; int letter=0, number=0,space=0,left=0; x1=getchar(); while (x1!='\n') { if (x1>='a'&& x1<='z' || x1>='A'&& x1<='Z' ) { letter++; } else if(x1>='0'&& x1<='9') {number++;} else if (x1==' ') { space++; } else { left++;} } printf("%d %d %d %d",letter,number,space,left); return 0; } 我这样写为什么没有输出呢? 先get 字符串 再比较问题出在哪里
C语言程序设计教程(第三版)课后习题10.2 (C语言代码)浏览:1055 |
C语言训练-排序问题<1> (C语言代码)浏览:1411 |
C二级辅导-进制转换 (C语言代码)浏览:657 |
【绝对值排序】 (C语言代码)浏览:832 |
大神老白 (C语言代码)浏览:690 |
A+B for Input-Output Practice (IV) (C语言代码)浏览:484 |
WU-蓝桥杯算法提高VIP-交换Easy (C++代码)浏览:1186 |
2005年春浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:637 |
C语言程序设计教程(第三版)课后习题9.6 (C语言代码)浏览:597 |
母牛的故事 (C语言代码)浏览:739 |
soking 2020-01-14 14:27:59 |
a = getchar()没有进入循环,只能接收输入的一个字符