|  | 
 
| 
本帖最后由 zhuangzitao 于 2021-9-23 17:27 编辑
x
马上注册,结交更多好友,享用更多功能^_^您需要 登录 才可以下载或查看,没有账号?立即注册  
 我用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 已经超出了允许范围,从而出现了下标越界错误。*/  | 
 |