查询范围内数字的程序?

编写了一个程序,此程序可以输入10个整数值,(用到了阵列),然后再定义一个范围,程序的最后会显示出在10个整数值内,符合此范围的数字,但是最后总会莫名奇妙出现一个9,不知为什么?

#include <stdio.h>
int main (){
    int i,n[9],x,t;
    for(i=0;i<=9;i++){
        scanf("%d", &n[i]);
    }
    printf("x is: ");
    scanf("%d",&x);
    printf("t is: ");
    scanf("%d",&t);
    for(i=0;i<10;i++){
        if(n[i] >= x && n[i] <= t){
            printf("%d\n",n[i]);
        }
    }
    return 0;
}

图片描述

阅读 2.9k
2 个回答

n[9],这个数组只分配了 9 个 int 空间,但是 for (i = 0; i < 10; i++) 一共是 0 ~ 9 共访问了 10 个元素,肯定有一个是越界。当然 C++ 不会检查越界,它会按地址去取个值出来,只不过这个值谁也不清楚会是什么,这次可能是 9,明天也许就是 128 了。

顺便说一下,声明 n[9]n[0]n[8] 共 9 个元素。

你定义的数组n[9] 只有9个整数,但是无论你输入和输出都是循环了10次,导致数组越界了,这个9是取到了越界之后的地址所存放的值。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题