|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 zhuangzitao 于 2021-9-23 17:27 编辑
我用dev-c++,一开始这样写,到最后报错
#include <stdio.h>
int main(void)
{
int digit_seen[10] = {0};
int digit;
long n;
while (1) {
printf("Enter a number: ");
scanf("%ld", &n);
if (n <= 0)
break;
while (n > 0) {
digit = n % 10;
digit_seen[digit]++;
n /= 10;
}
printf("Digit: \t0 1 2 3 4 5 6 7 8 9\n");
printf("Occurrences:\t");
for (digit = 0; digit < 10; digit++)
printf("%d ", digit_seen[digit]);
putchar('\n');
digit_seen[10] = 0; //这里报错
}
return 0;
}
改成这样就可以正常运行了,这是为什么?
#include <stdio.h>
int main(void)
{
int digit_seen[10] = {0};
int digit;
long n;
while (1) {
printf("Enter a number: ");
scanf("%ld", &n);
if (n <= 0)
break;
while (n > 0) {
digit = n % 10;
digit_seen[digit]++;
n /= 10;
}
printf("Digit: \t0 1 2 3 4 5 6 7 8 9\n");
printf("Occurrences:\t");
for (digit = 0; digit < 10; digit++)
printf("%d ", digit_seen[digit]);
putchar('\n');
for (digit = 0; digit < 10; digit++)
digit_seen[digit] = 0;
}
return 0;
}
int digit_seen[10] = {0}; /* 这个数组的下标范围是 0 ~ 9,所以,语句 digit_seen[10] = 0 的下标 10 已经超出了允许范围,从而出现了下标越界错误。*/
|
|