PROBLEM:
编写一个 C 程序,提示用户输入一串以 ENTER 键结尾的字符(即‘\n’),然后统计该字符串中每个元音出现的总数。您的程序应遵循以下准则:
• 你的程序应该声明一个由5个整型计数器组成的数组,即counter。
• 使用循环,您的程序应将数组的每个成员初始化为 0。
• 然后检查字符串中的每个字符是否为元音,即“a”、“e”、“i”、“o”或“u”。在这种情况下,相应的计数器会递增。例如,如果读取“a”,则 counter[0] 递增,如果读取“i”,则 counter[2] 递增,依此类推。
• 输入的字符可以是小写或大写。
• 您的程序应该使用循环来打印5 个计数器的内容。
• 最后,您的程序应该打印字符串中元音的总数。
结果应该如下所示:
请输入以 ENTER 键结尾的字符串:
“棕色的狐狸跳过了那只懒狗”
counter[0] = 1
counter[1] = 4
counter[2] = 0
counter[3] = 4
counter[4] = 1
元音总数= 10
我的代码:
#include <stdio.h>
main(){
int counter[5];
int c, i;
for(i = 0; i < 5; i++)
counter[i] = 0;
printf("Please enter a string terminated by ENTER key:\n");
while((c = getchar()) != '\n')
{
if((counter[i] == 'a' || counter[i] == 'e' || counter[i] == 'i' || counter[i] ==
'o' || counter[i] == 'u') ||(counter[i] == 'A' || counter[i] == 'E' || counter[i] ==
'I' || counter[i] == 'O' || counter[i] == 'U'))
{
for(i = 0; i < 5; i++)
{
if(c == 'a' + i)
counter[i] = counter[i] + 1;
}
}
}
for(i = 0; i < 5; i++)
printf("counter[%d] = %d\n", i, counter[i]);
}
我的计数器出了什么问题?
提前致谢。
首先,您应该将 main 的返回类型设置为: int (例如: int main() ),这不会破坏您的代码,但它符合 C 标准,并会引起编译器的警告。
C 中的字符采用 ASCII 编码标准中的数值:http://upload.wikimedia.org/wikipedia/commons/1/1b/ASCII-Table-wide.svg,查看那里的值(例如“a”是 97),更多信息请参见维基百科:http://en.wikipedia.org/wiki/ASCII
您在最后一个 for 循环中所做的就是将字符与 a、b、c、d、e 进行比较。
我建议你做的是切换角色:
switch(c) {
case 'a':
case 'A':
counter[0]++;
break;
case 'e':
case 'E':
counter[1]++;
break;
case 'i':
case 'I':
counter[2]++;
break;
case 'o':
case 'O':
counter[3]++;
break;
case 'u':
case 'U':
counter[4]++;
break;
}
或者,您可以创建五个 if 语句。
现在应该可以正常工作了。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)