这是一个一维数组的问题:已有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中。
#include<stdio.h>
#include<conio.h>
int main(void)
{
int a[9]={-98,-45,-36,0,12,23,85,98};
int i,j,k;
scanf("%d",&i);
for(j=0;j<8;j++)
if(i<a[j])
break;
k=j;
a[k]=i;
for(j=8;j>=k;j--)
a[j+1]=a[j];
for(k=0;k<9;k++)
printf("%d ",i);
getch();
}
当输入了一个数之后,能把它排出顺序,但是它会把一下也盖掉的!!
如:输入一个数学为“5”,则输出的排序为:-98,-45,-36,0,5,5,23,85,98
请高手指教,其中错在那里!!!
----------------解决方案--------------------------------------------------------
写一串数字自己模拟下,看看问题
----------------解决方案--------------------------------------------------------
for(j=8;j>=k;j--)
a[j+1]=a[j];
8在那里
----------------解决方案--------------------------------------------------------
小弟不明,8不是可以临时赋值勤的吗?
还有写一串字符串去模拟一下,又应该怎么样去做,还是不明!!
----------------解决方案--------------------------------------------------------
小弟不明,8不是可以临时赋值勤的吗?
还有写一串字符串去模拟一下,又应该怎么样去做,还是不明!!
8出现了,9怎么办,自己好好想想
----------------解决方案--------------------------------------------------------
#include<stdio.h>
#include<conio.h>
int main(void)
{
int a[9] = {-98,-45,-36,0,12,23,85,98}, value, j, k;
scanf("%d", &value);
for (j = 0; j < 8; j++)
{
if ( value < a[j])
{
break;
}
}
k = j;
for(j = 7; j >= k; j--)
{
a[j + 1] = a[j];
}
a[k] = value;
for(k = 0; k < 9; k++)
printf("%d ",a[k]);
printf("\n");
getch();
return 0;
}
----------------解决方案--------------------------------------------------------
#include<stdio.h>
#include<conio.h>
int main(void)
{
int a[9]={-98,-45,-36,0,12,23,85,98};
int i,j,k;
scanf("%d",&i);
for(j=0;j<8;j++)
if(i<a[j])
break;
k=j;
a[k]=i; /*原始的a[k]未保存就被你给删了*/
for(j=8;j>=k;j--)
a[j+1]=a[j];
for(k=0;k<9;k++)
printf("%d ",i);
getch();
}
----------------解决方案--------------------------------------------------------
六楼,真好!!
谢谢了,今天真使我矛塞顿开!!
----------------解决方案--------------------------------------------------------