c程序找错!!

来源:百度知道 编辑:UC知道 时间:2024/05/28 01:07:47
我写了一个小程序,目的要:当输入一个数仍然能从大到小输出。
#include<stdio.h>
void main()
{ int a[5]={1,2,7,9,10};
int a[6],i,j,k;
j=0;
scanf("%d",&k);
for(i=0;i<=4;i++)
{ if(k>=a[i])
{ a[i]=b[j];j++;}
else break;
}
if(i==4) b[5]=k;
else
{ b[j]=k;
for(;j<=5;j++)
for(;i<=4;i++)
b[j+1]=a[i];
}
for(j=0;j<=5;j++)
printf("%3d",b[j]);
}
预期目的输入3,输出1 2 3 7 9 10。
在线等!!

#include<stdio.h>
void main()
{ int a[5]={1,2,7,9,10};
int b[6],i,j,k;
j=0;
scanf("%d",&k);
for(i=0;i<=4;i++)
{ if(k>=a[i])
{ b[i]=a[j];j++;}
else break;
}
if(i==4) b[5]=k;
else
{ b[j]=k;
for(;j<=4;j++)
b[j+1]=a[j];
}
for(j=0;j<=5;j++)
printf("%3d",b[j]);
}
你的for(;i<=4;i++)那里出问题了,还有定义数组a[6]变为b[6] if中的a[i]=b[j]变为b[i]=a[j]就OK了,我在VC++6.0中试过了,结果是对的。还有,楼上的那个程序是比较简洁,但是有缺陷,输入大于10的数结果就不正确了,你的算法多了点,但没这个缺陷。

#include<stdio.h>
void main()
{
int a[6]={1,2,7,9,10};
int i,j=0,k,t;

scanf("%d",&k);
for(i=0;i<=4;i++)
if(k<a[i])
{
for(j=5;j>i;j--)a[j]=a[j-1];
a[i]=k;
break;
}
for(j=0;j<=5;j++)
printf("%3d",a[j]);
}