【发布时间】:2021-06-17 23:27:50
【问题描述】:
我最近开始学习 C 语言,目前正在尝试编写一个简单的程序,该程序应该返回一个字符被使用的次数,但输出是错误的。 为什么它不能正常工作?任何帮助将不胜感激。 代码如下:
#include <stdio.h>
main() {
int c, i;
int ndigit[25]; //a = 97
while( (c = getchar()) != EOF) {
++ndigit[c - 97];
}
for (i = 0; i < 26; i++) {
putchar(i + 97);
printf(" = %d\n", ndigit[i]);
}
}
这是带有单词“hello”的输出:
a = 8
b = 0
c = 4203649
d = 0
e = 4202641
f = 0
g = 84
h = 1
i = 12260176
j = 0
k = 1
l = 2
m = -1
n = -1
o = 85
p = 0
q = 1
r = 0
s = 4203673
t = 0
u = 0
v = 0
w = 84
x = 0
y = 0
z = 0
【问题讨论】:
-
您想当然地认为
getchar读取的每个字符都是小写字母字符,您的字符集是ASCII -
您应该使用
c +/- 'a'而不是c +/- 97。并且您的数组未初始化,这意味着它包含随机数。您应该将所有项目设置为 0。 -
你应该将
ndigit初始化为26 -
你可以使用 ```
Your code `` 来包含你的代码而不缩进。
标签: c