c语言 将一个数插入一个数组

已有一个已排好序的数组,要求输入一个数后,按原来排序的规律将它插入数组中

#include<stdio.h>
int main()
{
int a[11]={1,3,5,15,36,37,58,79,80,95},i,t1,t2;
printf("Previous is:\n");
for(i=0;i<=9;i++)
printf("%5d",a[i]);
printf("\nPlease input a number:");
scanf("%d",&t1);
printf("\nNow is:\n");
for(i=0;i<=9;i++)
{
if(a[i]>t1)
{
for(;i<=10;i++)
{
t2=a[i];
a[i]=t1;
t1=t2;
}
}
break;
}
for(i=0;i<=10;i++)
printf("%5d",a[i]);
printf("\n");
return 0;
}

不知道哪里有错
我默认原来数组11个,最后一个是a[10]=0

下面是改好的,具体请看注释:

#include<stdio.h>
int main()
{
int a[11]={1,3,5,15,36,37,58,79,80,95},i,t1,t2;
int j;//这里!这里!这里!这里!需要新定义一个变量来控制数组元素的后移
printf("Previous is:\n");
for(i=0;i<=9;i++)
printf("%5d",a[i]);
printf("\nPlease input a number:");
scanf("%d",&t1);
printf("\nNow is:\n");
for(i=0;i<=9;i++)
{
if(a[i]>t1)
{
for(j=10;j>i;j--) //这里!这里!这里!这里!
{
a[j]=a[j-1];//这里!这里!这里!这里!
}

a[i] = t1;
break; //这里!这里!这里!这里!放错位置了,应该在里面
}
}
for(i=0;i<=10;i++)
printf("%5d",a[i]);
printf("\n");
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-11-26
有一个已排好序(从大到小)的数组有5个元素,从键盘输入一个数,要求按原排序的规律将它插入到数组中
#include<stdio.h>
void main()
{
int i,x,j;
int a[6]={1,5,10,15,20};
scanf("%d",&x);
for(i=0;i<5;i++)
if(x<a[i])
{
j=i; /*当这个数比当前数小时,用j记住当前位置,即j=i,中断循环。比当前数大时继续下一个(小应当在左侧,大则在右侧) */
break;
}
for(i=5;i>=j;i--)
a[i+1]=a[i]; /*将位置j以后的数据都向后移一位*/
a[i+1]=x; /* 把要插入的数x放到a[i]中,因为i--后 i 比实际要插入的位置少1,所以真正插入的位置应该i+1*/

for(i=0;i<=5;i++) /*这时一共有6个数*/
{
printf("%d ",a[i]);
}
}
第2个回答  2011-12-10
#include<stdio.h>
int main()
{
int a[11]={1,3,5,15,36,37,58,79,80,95},i,t1,t2;
printf("Previous is:\n");
for(i=0;i<=9;i++)
printf("%5d",a[i]);
printf("\nPlease input a number:");
scanf("%d",&t1);
printf("\nNow is:\n");
for(i=0;i<=10;i++)
{
if(a[i]>t1)
{
for(;i<=10;i++)
{
t2=a[i];
a[i]=t1;
t1=t2;
}
break;
}

}
for(i=0;i<=10;i++)
printf("%5d",a[i]);
printf("\n");
return 0;
}
break应该放在if里面,这是改好的,运行已通过,不懂hi我
第3个回答  2011-11-26
#include<stdio.h>
void main()
{
int s[10]={1,2,3,4,5,6,7,8,9};
int n;
printf("请输入需要插入到数组中的位置:");
scanf("%d",&n); //比如说插入到第三个位置,即s[2]中,则输入3
int num;
printf("请输入需要插入的数:");
scanf("%d",&num);
for (int i=10-1;i>=n;i--)
{
s[i]=s[i-1];
}
s[i]=num;
printf("插入之后的数组:\n");
for (i=0;i<10;i++)
{
printf("%d ",s[i]);
}
printf("\n");
}
第4个回答  2011-11-26
你可以先定义一个数组和一个变量,然后把这个变量写入数组,比如
int x,i,a[10];
for(i=0;i<=9;i++)
a[i]=x;
这样程序运行后,数组a[10]的内容依次插入了里面。