永发信息网

补充main函数,该函数功能是:把一个整数插入到一个已经按从小到大的顺序排列在数组中。插入后仍然有序。

答案:2  悬赏:70  手机版
解决时间 2021-03-19 04:55
例如插入99则结果为,bb[N]={11,21,31,41,51,61,71,79,81,95,99}
程序编码如下:
#include
#define N 10
main()
{
int i, j;
int n;
int bb[N] = {11, 21, 31, 41, 51, 61, 71, 79, 81, 95};
printf("\nInput n \n");
scanf("%d", &n);
printf("\nn=%d ", n);
printf("\n****** original list ******* \n");
for (i=0; iprintf("%4d ", bb[i]);
for (i=0; iif (n <= bb[i])
{
for (j=N; j>i; j--)
bb[j]=bb[j-1];
bb[j] = n;
break;
}
if (i == N)
bb[i] = n;
printf("\n****** new list ******* \n");
for (i=0; iprintf("%4d ", bb[i]);
}

检查了好几遍程序应该没有编写问题,但是若输入80则输出bb[N]={11,21,31,41,51,61,71,79,95,81,95,99}应该输出80的问题却输出了95,为什么会这样呢,麻烦各位帮我解答下看看。感激不尽
最佳答案
int bb[N + 1] = {11,21,31,41,51,61,71,79,81,95}; // 数组bb应该预留空间,否则,易造成内存覆盖,其他没有问题。
全部回答
#include #define N 20 //数组越界 int main() { int i, j; int n; int bb[N] = {11, 21, 31, 41, 51, 61, 71, 79, 81, 95};//你再增加元素,原来的数组就越界了 int len = 10; //用len来记录数组中有多少元素 printf("\nInput n \n"); scanf("%d", &n); printf("\nn=%d ", n); printf("\n****** original list ******* \n"); for (i=0; ii; j--) bb[j]=bb[j-1]; bb[j] = n; break; } if (i == len) bb[i] = n; printf("\n****** new list ******* \n"); for (i=0; i
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯