C语言一个已排序数组a[10]={10,20,30,40,50,60,70,80,90},现输入一个数,要求按原来的规律将它插入数组中

#include<stdio.h>
main()
{
int i,j,t,a[10]={10,20,30,40,50,60,70,80,90};
printf("请输入一个数");
scanf("%d",&a[9]);
for(i=0;i<9;i++)
if(a[9]<a[i])
for(j=8;j>=i;j--)
{
t=a[9];
a[j+1]=a[j];
a[j]=t;
}
for(i=0;i<10;i++)
printf("%d ",a[i]);
}
这是我写的,有个问题
比如输入12,输入的结果是10 90 20 30 40 50 60 70 80 90
输入22, 10 20 90 30 40 50 60 70 80 90
可见,输入的数能找见自己应处于的位置,但是输出的结果不是这个输入的数了,而是定值90,请问高手这是怎么回事。。。。?

#include<stdio.h>
main()
{
int i,j,t,a[10]={10,20,30,40,50,60,70,80,90};
printf("请输入一个数:\n");
scanf("%d",&a[9]);
for(i=0;i<9;i++)
if(a[9]<a[i])
{
t=a[9];
for(j=8;j>=i;j--)
{
a[j+1]=a[j];
a[j]=t;
}
}
for(i=0;i<10;i++)
printf("%d ",a[i]);
return 0;
}
改正了。认真看看那两个for语句吧 。错处:t=a[9];放错位置。
若还不明就向我追问吧,我会详细回答。先让你自行解决一下吧!
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-06-15
因为你的a[9]经过第二轮循环保存的就不再是12或者22啦!

看这三句话:
t=a[9];
a[j+1]=a[j];
a[j]=t;

你把a[9](12或者22)的值赋给t了,第一次循环a[9])=a[8]后,a[9]保存的是90吧?
第二次再进来,t=a[9];就把90赋值给了t。最后你把t给了a[j],你说最后输出12或者22的位置是90有问题吗?一点问题都没有。
第2个回答  2011-06-15
#include<stdio.h>
main()
{
int i,j,t,a[10]={10,20,30,40,50,60,70,80,90};
printf("请输入一个数:");
scanf("%d",&a[9]);
for(i=0;i<9;i++)
if(a[9]<a[i])
{
t=a[9];
for(j=8;j>=i;j--)
{
a[j+1]=a[j];
}
a[j+1]=t;
}
for(i=0;i<10;i++)
printf("%d ",a[i]);
printf("\n");
return 0;
}
第3个回答  2011-06-15
直接t=a[j+1];呢?

C语言一个已排序数组a[10]={10,20,30,40,50,60,70,80,90},现输入一个...
include<stdio.h> main(){ int i,j,t,a[10]={10,20,30,40,50,60,70,80,90};printf("请输入一个数:\\n");scanf("%d",&a[9]);for(i=0;i<9;i++)if(a[9]<a[i]){ t=a[9];for(j=8;j>=i;j--){ a[j+1]=a[j];a[j]=t;} } for(i=0;i<10;i++)printf(...

c语言程序设计:有一个已排好序的数组,要求输入一个数后,按原来排序的规...
此时i=10,结果是把n赋于a[10]。最后一个循环输出插入数后的数组各元素值。程序运行时,输入数47。从结果中可以看出47已插入到54和 28之间。

...有10个元素,要求从键盘输入一个数后,按原来排序的规律将它插入数组中...
include <stdio.h> int main(){ int a[20],i,n,x,k;printf("请输入一组顺序数(从小到大的顺序):");for( i=0; ;i++ ){ scanf("%d",&a[i]);if( getchar() == '\\n' )break;} n = i + 1; \/\/n表示数组内数字的个数 printf("请输入需要插入的数:");scanf("%d"...

C语言中,有一个已排好序的数组,要求输入一个数后,按原来排序的规律将它...
{ int a[11]={1,4,6,9,13,16,19,28,40,100};int temp1,temp2,number,end,i,j;printf("array a:\\n");for (i=0;i<10;i++)printf("%5d",a[i]);printf("\\n");printf("insert data:");scanf("%d",&number);end=a[9];if (number>end)a[10]=number;else {for (i=0...

C语言(简单的)编写程序输入一维整形数组a[10],将其按由小到大排序后输 ...
这个应该用起泡法排序算法。include<stdio.h> int main(){ int a[10];int i,j,k;printf("input 10 numbers:\\n");for(i=0;i<10;i++){\/\/输入十个数,一次循环输入10次 scanf("%d",&a[i]);printf("\\n");\/\/换行 for(j=0;j<9;j++)\/\/从小到大换行经典方法四行 for(i=0;i<...

c语言选择法整数数组排序(改错) #include<stdio.h> void main () {i...
选择法排序是一种简单的容易实现的对数据排序的算法。以整形数组元素为例,有数组A[10](以C语言为例描述),即A[0],A[1],…,A[8],A[9](假设其元素均互不相同)。要求对其元素排序使之递增有序。首先以一个元素为基准,从一个方向开始扫描,比如从左至右扫描,以A[0]为基准。接下来...

【急求:2010 南开100题 上机题 2级C语言
int score [9]={10,20,30,40,50,60,70,80,90}; clrscr(); n=fun(score,9,below); printf("nBelow the average score are:"); for (i=0;i<n;i++) printf ("%d",below[i]);}3、 改错2下列给定程序中,函数fun的功能是:逐个比较a、b两个字符串对应位置中的字符,把ASCII值大或等于的字符...

C语言:输入10个整数,按从小到大排序,再输入一个整数,插入到已排好序的...
第2个 include<stdio.h> define N 20 \/\/宏定义数组大小 int main(){ int a[N];int n,Con=0,i=0,Total_p;printf("input n(n<%d):",N);scanf("%d",&n); \/\/输入人数,小于N while(n>N)\/\/如果输入数据大于数组的最大宽度,则重新输入 { printf("wrong number\\n input again:");...

C语言定义一个数组a[10],输入10个数,倒叙输出问题
scanf("%d", a[i]);a【i】前面要加&

有一个已排好序的数组,要求输入一个数后,按原来排序的规律将它插入数组...
int a[11]={1,4,6,9,13,16,19,28,40,100};int

相似回答