对于练习我试图创建一个程序来计算一行中每个数字,字母字符和“空格”字符的数量。
我的程序打印正常但是我的计数器没有正确添加它读取的每个字符。以下是该计划的代码(我一周前才开始学习,所以请原谅任何明显的问题)。
我认为我的主要问题在于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;
}
以下是输出示例:
绿色字符是输入,正如您可能知道的那样,它们都没有添加到相应的变量中。
答案 0 :(得分:4)
您需要修复数字计数器:
if (c >= '0' && c <= '9') {
++CountDigits[c];
}
这将是增量CountDigits[48]
(对于'0'
)等。不是你想要的。你已经适合a..z
;在这里做同样的事情:
if (c >= '0' && c <= '9') {
++CountDigits[c - '0'];
}