#include
int main() {
int m = 0, i, x, y;
int n;
int a[10] = {0};
scanf("%d", &n);
y = n;
do {
y = y / 10;
m++;
} while (y != 0);
for (i = 0; i < m; i++) {
x = n % 10;
a[x]++;
n = n / 10;
}
for (i = 0; i < 10; i++) {
if (a[i] > 0) {
printf("%d:%d\n", i, a[i]);
}
}
return 0;
}
我让chatgpt生成的正确答案,
#include
int main() {
char num[1001];
int digit[10] = {0}; // 统计每个数字的出现次数
scanf("%s", num);
for (int i = 0; num[i] != '\0'; i++) {
digit[num[i] - '0']++;
}
for (int i = 0; i < 10; i++) {
if (digit[i] > 0) {
printf("%d:%d\n", i, digit[i]);
}
}
return 0;
}
这个就没问题
int a[10] = {0};
你以为这段代码是把10个元素全部设置为0,其实只是把第一个元素设置为0
其余都没有初始化