排序后再输入一个数字按顺序插入我感觉没问题但总是不行

来源:百度知道 编辑:UC知道 时间:2024/06/13 16:19:06
#include<stdio.h>
void main()
{
int a[11],i,j,t,n,m;
printf("input ten numbers\n");
for(i=0;i<10;i++)

scanf("%d",&a[i]);
for(i=0;i<9;i++)
{
for(j=i+1;j<10;j++)
if(a[i]<a[j])
{ t=a[j];
a[j]=a[i];
a[i]=t;
}
}
printf("input a bnumber");
scanf("%d",&n);
for(i=0;i<10;i++)
{

if(a[i]<=n)
{
for(m=10;m>i;m--)
a[m]=a[m-1];
a[m-1]=n;
}
break;

}
if(n<a[9]) a[10]=n ;
for(i=0;i<11;i++)
printf("%d\n",a[i]);
}

帮你改好了,看看吧 ,主要问题出在后面元素移动

#include"stdio.h"
void main()
{
int a[11],i,j,t,n,m;
printf("input ten numbers\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);

for(i=0;i<9;i++)
{
for(j=i+1;j<10;j++)
if(a[i]<a[j])
{
t=a[j];
a[j]=a[i];
a[i]=t;
}
}
printf("input a bnumber");
scanf("%d",&n);

a[10]=0;

for(i=0;i<10;i++)
{
if(a[i]<=n)
{
for(m=10;m>i;m--)
{
a[m]=a[m-1];
}
a[m]=n; //比较,全部移动之后,再进行赋值,在上面的这个循环中有个m--所以这里不用m-1,而直接用m;

break;

}
}

for(i=0;i<11;i++)
printf("%d\n",a[i]);
}

倒数第三行里面用for你循环了11个数,应该把i<11改成i<10。

一个已按从小到大的顺序排好的数组,今输入一个数要求按原来排序的规律将它插入数组中。 C语言:输入三个字符串并按字母顺序排序后输出 用C语言编出“已有一个已排好序的数组,要求输入一个数后,按原来排序的规律将它插入数组中” C++问题:输入8个数字 按照从大到小的顺序排序 然后输出 已有一个已排序好的数组,今输入一个数,要求按原来排序的规律将它插入数组中 用c实现的插入排序法,先输入10个数,然后利用插入排序法从中间插入一个数进行排序,将结果输出。 怎么快速在Excel一列按顺序输入一列数字? 用java编写输入数字,排序输出 用java编写任意输入数字,排序 c语言 已有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中。