建立一个数组先排序然后插入 但是到插入的时候遇到问题了 看下面的注释
#include<stdio.h>
void main()
{
int a[20],i,j,n,num,temp;
i=0;
printf("请输a[]的值,以-1作为结束标志\n\n"); //建立数组//
do
{
printf("输入a[%d]的值:",i);
scanf("%d",&a[i]);
}while(i<19 && a[i++]!=-1);
n=i-1;
printf("排序前的数组\n");
for(i=0;i<n;i++)
{
printf("%5d",a[i]);
}
putchar('\n');
printf("排序后的数组\n"); //降序排列//
for(i=1;i<=n-1;i++)
{
for(j=n-1;j>=i;j--)
{
if(a[j]>a[j-1])
{
temp=a[j];
a[j]=a[j-1];
a[j-1]=temp;
}
}
}
for(i=0;i<n;i++)
{
printf("%5d",a[i]);
}
putchar('\n');
printf("请输入一个要插入的数:"); //实现插入//
scanf("%d",&num);
for(i=0;i<n;i++)
{
if(num > a[i])
{
for(j=n-1;j>=i;j--)
{
a[j+1]=a[j];
}
a[i]=num;
break;
}
else //如果插入的数比数组中最小的数还小,这段代码怎么写??//
{
a[] //我是这样写的 else
} { a[n+1]=num;} 可是运行时有问题. 请指教
}
n+=1;
printf("插入后的数组\n");
for(i=0;i<n;i++)
{
printf("%5d",a[i]);
}
printf("\n");
}
----------------解决方案--------------------------------------------------------
你的数组够大不
是否越界
----------------解决方案--------------------------------------------------------
数组如果有长度为N,则最后一个为a[N-1],所以呢,最小的时候应该是a[N]=num,而不是a[N+1]
----------------解决方案--------------------------------------------------------
#include<stdio.h>
main()
{
int i,j,m,t,n,a[6];
printf("enter 5 number:");
for(i=0;i<5;i++)
scanf("%d",&a[i]);
for(i=0;i<5;i++) //对输入的数字排序
for(j=i+1;j<5;j++)
if(a[i]>a[j])
{
n=a[i];
a[i]=a[j];
a[j]=n;
}
printf("\n");
printf("the original sequence is:");
for(i=0;i<5;i++)
printf("%-5d",a[i]);
printf("\n");
printf("enter the inserted number:"); //插入一个数并与原数列进行比较
scanf("%d",&t);
if(t<a[0]) //插入的数比原数列中最小的还小
{
for(i=5;i>=1;i--)
a[i]=a[i-1];
a[0]=t;
}
for(i=0;i<4;i++) //插入的数大小介于数列最大数与最小数之间
{
if(t>a[i]&&t<a[i+1])
{
{
m=a[i+1];
a[i+1]=t;
t=m;
}
a[5]=t;
}
}
if(t>a[4]) //插入的数大于原数列中最大的数
a[5]=t;
printf("the new sequence is:"); //输出新数列
for(i=0;i<6;i++)
printf("%-5d",a[i]);
printf("\n");
}
没仔细看你的程序,我自己写了一个你看是否对你有用!!~~~
----------------解决方案--------------------------------------------------------