原来的排序的基础上插入数字于数组中 的问题
#include<stdio.h>int main()
{
int i,a={1,3,5,6,8,9,13,45,76,443},t;
printf("已有列表:");
for(i=0;i<10;i++)
printf("%d ",a);
printf("\n请输入一个插入数:");
scanf("%d",&t);
for(i=0;i<11;i++)//2
{
if(t>a)
{
a=t;
do
{
a=a;
i++;
}
while(i<9);
}
else if(t<a)
{
a=t;
for(i=2;i<11;i++)
{
a=a;
}
}
else
{
continue;
}
}
printf("\n插入该数后的列表:");
for(i=0;i<11;i++)
printf("%d ",a);
return 0;
对一个已排好序的数组,向里面插入一个数,按原来排序的规律将他插入数组中,,
当我输入2的时候
输出的是 1 2 6 8 9 13 45 76 443 0 0
为什么呢 哪里出错了?
依你的题意是不是得先确定数组是升序还是降序?
首先你数组大小是11插入后是12个值,多的哪个你想怎么办?
另外你的数组后移也有问题,会直接覆盖掉a
其次i=9之后还会进行for循环 ba21 发表于 2019-11-21 20:53
依你的题意是不是得先确定数组是升序还是降序?
我是先默认升序噢 永夜无昼 发表于 2019-11-22 14:56
首先你数组大小是11插入后是12个值,多的哪个你想怎么办?
另外你的数组后移也有问题,会直接覆盖掉a
其 ...
大小是11但我之前赋了值只有10个呀
会覆盖的话是应该要一个新的数组吗?
代码我是这么写的
#include<stdio.h>
#define LEN 11
int main()
{
int i, a={1,3,5,6,8,9,13,45,76,443}, t, j;
printf("已有列表:");
for( i=0; i<LEN-1; i++ ) // 10 个元素
{
printf("%d ", a);
}
putchar('\n');
printf("\n请输入一个插入数:");
scanf("%d", &t);
for( i=0; i<LEN-1; i++ ) // 10 个元素
{
if( t<a ) // 先找到插入位置
{
for( j=LEN-1; j>i; j--) // 后移, 11 个元素 倒序序号=LEN-1=10
{
a = a;
}
a = t; // 插入
break;
}
}
printf("\n插入该数后的列表:");
for( i=0; i<LEN; i++ ) // 11 个元素
{
printf("%d ",a);
}
return 0;
}
整体后移 ba21 发表于 2019-11-22 21:52
代码我是这么写的
懂了!!谢谢你!!
页:
[1]