输入:
为N个数字,以空格间隔。
输出:
第一行为一个整数,即N的个数,第二行为0~20中不同数的个数。
不知道为什么我的代码最后20的个数总是不对
```c
#include
int main() {
int ge[20], i, a, b, c = 0, shu[100000];
for (i = 0; i <= 20; i++) {
ge[i] = 0;
}
while (scanf("%d", &shu[c]) != EOF)
c++;
printf("%d\n", c);
for (a = 0; a <= c-1; a++) {
ge[shu[a]]++;
}
for (b = 0; b <= 20; b++)
printf("%d ", ge[b]);
return 0;
}
```怎么办
0~20一共有21个数,你数组长度只有20,越界了
修改如下,供参考:
#include <stdio.h>
int main() {
int ge[21], i, a, b, c = 0, shu[100000]; //修改
for (i = 0; i < 21; i++) { //(i = 0; i <= 20; i++)
ge[i] = 0;
}
while (scanf("%d", &shu[c++]) == 1 && (getchar()) != '\n'); //(scanf("%d", &shu[c]) != EOF)
printf("%d\n", c);
for (a = 0; a < c; a++) { //(a = 0; a <= c - 1; a++)
ge[shu[a]]++;
}
for (b = 0; b < 21; b++) //(b = 0; b <= 20; b++)
printf("%d ", ge[b]);
return 0;
}