我正在制作一个小程序,它接收来自用户的输入并显示每个元音在输入中出现的次数(以及位数)。我无法弄清楚如何做的一件事就是限制它,以便只计算前50个字符(例如,如果用户输入超过50个数字,则忽略过去的50个字符。)
我已经尝试过一个计数变量,它在每次迭代时递增但不起作用。
#include <stdio.h>
int main(void) {
int input, digits = 0, a = 0, e = 0, i = 0, o = 0, u = 0, count = 0;
printf("Enter a string of chars. Hit control - D to end. Thanks. \n");
while(count < 51){
while ((input = getchar()) != EOF) {
switch(input) {
case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9': digits += 1; break;
case 'a':
case 'A': a += 1; break;
case 'e':
case 'E': e += 1; break;
case 'i':
case 'I': i += 1; break;
case 'o':
case 'O': o += 1; break;
case 'u':
case 'U': u += 1; break;
}
count += 1;
}
}
printf("a:%d e:%d i:%d o:%d u:%d digits:%d\n",a,e,i,o,u,digits);
}
答案 0 :(得分:1)
你的内部while循环将继续循环直到EOF
才会退出循环并递增并检查你的计数器。将计数器的检查放在相同的while
循环中,如同其中一条注释一样。
删除while(count < 51) {
和右括号,并制作while
声明:
while ((count < 51) && (input = getchar()) != EOF) {
答案 1 :(得分:0)
怎么做是限制它,以便只计算前50个字符
放弃while(count < 51){
。更改选择增量以添加0或1
#define LIMIT 50
// digits += 1;
digits += count < LIMIT;
...
a += count < LIMIT;
...
count += 1;