发布网友 发布时间:2023-05-08 01:34
共3个回答
热心网友 时间:2024-11-22 00:50
循环控制不对,j等于0时,H-1-j等于2,i可能等于2,i+1可能等于3,a只有3个元素,最大索引为2,所以是数组越界了热心网友 时间:2024-11-22 00:50
把for(j=0;j<H-1;j++) for (i=0;i<=H-1-j;i++)这两句分别改成for(j=0;j<H;j++) for(i=0;i<H-1-j;i++)试试……追问我那个程序是越界了吗??追答设H=3:当j=0、i=H-1-j时,最后i=2,a[2]就是最后一个元素;而后面if语句中a[i]=a[i+1];
a[i+1]=t;两句中a[i+1]就是a[3],请问有a[3]吗?没有!没有a[3]就没有给它赋值,其中的就是“飞数”,把“飞数”用来与其它元素交换,必然错误。另:把printf("这十个数字从大到小输出如下:\n");
改成printf("这%d个数字从大到小输出如下:\n",H);才合理吧?
热心网友 时间:2024-11-22 00:51
已经帮你改正。你怎么没有悬赏分嘛。。。