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

代码如下: 请问哪里错了?编译没有错,可是一跑就错!
#include<stdio.h>
int main()
{
int a[9]={0};
scanf("%d",&a[9]);
int i=0,j,temp;
for(i=0;i<8;i++)
for(j=i+1;j<9;j++)
if(a[i]>a[j])
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
printf("%d ",a[j]);
}
C语言编程

#include<stdio.h>
int main()
{
int a[100]={0}; //因为你要继续加入数据,所以数组不能定义成9,要大一些,至少应该是10
int i;
for(i=0;i<9;i++ ) //输入9个数,必须用循环,一句解决不了
scanf("%d",&a[i]);

int j,temp;
for(i=0;i<8;i++) //完成排序
{
for(j=i+1;j<9;j++)
if(a[i]>a[j])
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
printf("input a number: " );
scanf("%d", &temp );
for(i=0;i<9;i++ ) //查找插入位置
{
if ( temp < a[i] )
break;
}
for( j=8;j>=i;j-- ) //i后面的数后移
a[j+1]=a[j] ;
a[i]=temp; //插入数据到i位

for( i=0;i<10;i++ ) //输出数组
printf("%d ",a[i]);
printf("\n");
return 0;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-12-17
复杂啊