问题
DevC++没有报错
在线编程网站提示可能是数组访问越界,但是我不太理解哪里会出现越界。
所以想请教一下。
相关代码
#include<stdio.h>
int main()
{
int a[2]; //如果改为3就不会报错了,也不会有问题
scanf("%d%d%d", &a[0],&a[1],&a[2]);
for(int i = 0; i < 2; i=i+1) //就是一个冒泡排序
{
for(int j = 0; j < 2-i; j = j+1)
{
if(a[j+1]<a[j])
{
int x;
x = a[j];
a[j] = a[j+1];
a[j+1] = x;
}
}
}
printf("%d %d %d\n", a[0], a[1], a[2]);
return 0;
}
运行结果及报错内容
int a[2];
输入5 2 7,会得到5 5 2
但如果是 int a[3];
输入5 2 7,会得到7 5 2
DevC++没有报错
在线编程网站提示可能是数组访问越界
我的解答思路和尝试过的方法
调试过程中发现在冒泡排序的循环里
int x;
x = a[j];
a[j] = a[j+1];
a[j+1] = x;
第一次运行这几排(交换两个数字位置),a[2]的值就出现了错误。