69,726
社区成员
#include <stdio.h>
int main(void)
{
int i, ch;
int cnt[10] = {0}; /* 数字字符的出现次数 */
while ((ch = getchar()) != EOF) {
switch (ch) {
case '0' : cnt[0]++; break;
case '1' : cnt[1]++; break;
case '2' : cnt[2]++; break;
case '3' : cnt[3]++; break;
case '4' : cnt[4]++; break;
case '5' : cnt[5]++; break;
case '6' : cnt[6]++; break;
case '7' : cnt[7]++; break;
case '8' : cnt[8]++; break;
case '9' : cnt[9]++; break;
}
}
puts("数字字符的出现次数");
for (i = 0; i < 10; i++)
printf("'%d':%d\n", i, cnt[i]);
return 0;
}
switch内的break只break switch,不会 break while
同学,你输入了多个字符后,如果你没有清除键盘缓冲区,getchar()会将它们都读取,所以,每一次调用getchar()函数后,最好清除一下键盘缓冲区,像这样:
#include <stdio.h>
int main(void) {
int i, ch;
int cnt[10] = {0}; /* 数字字符的出现次数 */
while ((ch = getchar()) != EOF) {
setbuf(stdin, NULL); // 加上这1行:清除键盘缓冲区【windows可以直接用fflush(stdin)】
switch (ch) {
case '0' :
cnt[0]++;
break;
case '1' :
cnt[1]++;
break;
case '2' :
cnt[2]++;
break;
case '3' :
cnt[3]++;
break;
case '4' :
cnt[4]++;
break;
case '5' :
cnt[5]++;
break;
case '6' :
cnt[6]++;
break;
case '7' :
cnt[7]++;
break;
case '8' :
cnt[8]++;
break;
case '9' :
cnt[9]++;
break;
}
}
puts("数字字符的出现次数");
for (i = 0; i < 10; i++)
printf("'%d':%d\n", i, cnt[i]);
return 0;
}
那就是 break; 只 break 了 switch() 吧,外面还有个 while()
写switch 为什么没有 default ???
那么while是啥意思呢?