【发布时间】:2014-12-29 16:19:01
【问题描述】:
为了练习,我正在尝试创建一个程序来计算一行中每个数字、字母字符和“空白”字符的数量。
我的程序打印正常,但是我的计数器没有正确添加它读取的每个字符。下面是该程序的代码(我大约一周前才开始学习,所以请原谅任何明显的问题)。
我相信我的主要问题在于 if/else if 语句,我将 int c 与各种 ASCII 值进行比较。
/* Print Count of Each Char, Spaces, and Digits */
int main(void) {
int c, i, CountWhitespace, count, Alpha;
int CountCharacter[26];
int CountDigits[10];
CountWhitespace = 0;
for (i = 0; i < 10; ++i) {
CountDigits[i] = 0; }
for (i = 0; i < 26; ++i) {
CountCharacter[i] = 0; }
while ((c = getchar()) != '\n') {
if (c >= '0' && c <= '9') {
++CountDigits[c]; }
else if (c == '\t' || c == ' ') {
++CountWhitespace; }
else if (c >= 'a' || c <= 'z') {
++CountCharacter[( c - 'a')]; }
else if (c >= 'A' && c <= 'Z') {
++CountCharacter[(c - 'A')]; }
}
printf("Whitespace Characters: %d\n", CountWhitespace);
for (i = 0; i < 10; i++) {
printf("%d appears %d times.\n", i, CountDigits[i]); }
for (Alpha = 'a', count = 0; count < 26; count++, Alpha++) {
printf("%c appears %d times.\n", Alpha, CountCharacter[count]); }
return EXIT_SUCCESS;
}
以下是输出示例:
绿色字符是输入,你可能知道,它们都没有添加到它们对应的变量中。
【问题讨论】:
-
“主要问题”是什么意思?究竟什么不起作用?
-
进行 Paul Roub 建议的更改,它会起作用。
-
问题已解决。感谢您的快速检查和大家的帮助。
-
嗯,你的第二个
else if需要&&而不是||否则它将永远是真的! -
@CoolGuy 是的,谢谢你的指出,我已经进行了编辑,但对于未来的读者来说,这是值得注意的。
标签: c comparison ascii