补充main函数,该函数功能是:把一个整数插入到一个已经按从小到大的顺序排列在数组中。插入后仍然有序。
解决时间 2021-03-19 04:55
- 提问者网友:相思似海深
- 2021-03-18 22:28
例如插入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,为什么会这样呢,麻烦各位帮我解答下看看。感激不尽
最佳答案
- 五星知识达人网友:第幾種人
- 2021-03-18 23:57
int bb[N + 1] = {11,21,31,41,51,61,71,79,81,95}; // 数组bb应该预留空间,否则,易造成内存覆盖,其他没有问题。
全部回答
- 1楼网友:孤老序
- 2021-03-19 00:11
#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
我要举报
大家都在看
推荐资讯