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

2024-11-27 09:48:44
推荐回答(4个)
回答1:

#include
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] {
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];放错位置。
若还不明就向我追问吧,我会详细回答。先让你自行解决一下吧!

回答2:

因为你的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有问题吗?一点问题都没有。

回答3:

#include
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] {
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;
}

回答4:

直接t=a[j+1];呢?