笨办法:
#include <stdio.h>
int main()
{
int a[11];
int i,j,t;
printf("请先输入10个整数(中间用空格间隔):\n");
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
}
printf("\n");
for(i=0;i<9;i++)
{
for(j=i+1;j<10;j++ ) //每一遍都与当前a[i]比较
{
if (a[i]>a[j]) //大的后移
{
t=a[i];
a[i]=a[j];
a[j]=t ;
}
}
}
printf("原先这10个数由小到大排列为:\n");
for(i=0;i<10;i++)
{
printf("%d ",a[i]);
}
printf("\n\n");
printf("请输入要插入的数:");
int num;
scanf("%d",&num);
printf("\n");
if(num>a[9])
{
printf("经过判断有:%d<%d\n",a[9],num);
a[10]=num;
}
else
{
for(i=0;i<10;i++)
{
if(a[i]>num)
{
if((i>0)&&(i<=9))
{
printf("经过判断有:%d<%d<%d\n",a[i-1],num,a[i]);
for(j=9;j>=i;j--)
{
a[j+1]=a[j];
}
a[i]=num;
}
else
{
printf("经过判断有:%d<%d\n",num,a[i]);
for(j=9;j>=i;j--)
{
a[j+1]=a[j];
}
a[0]=num;
}
break;
}
}
}
printf("\n");
printf("最终这11个数由小到大排列为:\n");
for(i=0;i<11;i++)
{
printf("%d ",a[i]);
}
return 0;
}
更简单的办法:用两次排序(冒泡法或选择法)
#include <stdio.h>
int main()
{
int a[11];
int i,j,t;
printf("请先输入10个整数(中间用空格间隔):\n");
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
}
printf("\n");
for(i=0;i<9;i++)
{
for(j=i+1;j<10;j++ ) //每一遍都与当前a[i]比较
{
if (a[i]>a[j]) //大的后移
{
t=a[i];
a[i]=a[j];
a[j]=t ;
}
}
}
printf("原先这10个数由小到大排列为:\n");
for(i=0;i<10;i++)
{
printf("%d ",a[i]);
}
printf("\n\n");
printf("请输入要插入的数:");
int num;
scanf("%d",&num);
printf("\n");
a[10]=num;
//下面采用冒泡排序法!
for(j=0;j<10;j++)
{
for(i=0;j<10-i;i++)
{
if(a[i]>a[i+1])
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
}
}
printf("\n");
printf("最终这11个数由小到大排列为:\n");
for(i=0;i<11;i++)
{
printf("%d ",a[i]);
}
return 0;
}