还是求助
#include<stdio.h>#include<string.h>
void main()
{
int a[5],b,c,d,i,j,k;
printf("please input 10 numebers\n");
for(k=0;k<5;k++)
{scanf("%d",&a[k]);
}
for(i=0;i<5;i++)
{
c=a[i];
for(j=i+1;j<5;j++)
{
if(c<a[j])
b=a[i];
a[i]=a[j];
a[j]=b;
}
printf("%d ",a[i]);
}
}
刚写的,想实现输入5个数,然后按大小顺序排列,可是结果不是这样的,实在看不出哪里写的有问题了.随便指点指点吧~~阿弥陀佛
----------------解决方案--------------------------------------------------------
#include<stdio.h> #include<string.h> void main() { int a[5],b,c,d,i,j,k; printf("please input 10 numebers\n"); for(k=0;k<5;k++) {scanf("%d",&a[k]); } for(i=0;i<5;i++) { c=a[i]; for(j=i+1;j<5;j++) { if(c<a[j]) { /*你忘了加括号了*/ c=a[i]; a[i]=a[j]; a[j]=c; } }
} for(i=0;i<5;i++) printf("%d ",a[i]); }
----------------解决方案--------------------------------------------------------
养成良好的 对齐格式, 这种错误是很容易看出来的。
----------------解决方案--------------------------------------------------------
不对啊,我刚才运行了一下,输入5个数字还是不按照从大到小的顺序排列的
----------------解决方案--------------------------------------------------------
c=a[i];
a[i]=a[j];
a[j]=c;
这里错了,应该是
temp=a[i];
a[i]=a[j];
a[j]=temp;
----------------解决方案--------------------------------------------------------
#include<stdio.h>
#include<string.h>
void main()
{
int a[5],b,c,i,j,k;
printf("please input 10 numebers\n");
for(k=0;k<5;k++)scanf("%d",&a[k]);
for(i=0;i<5;i++)
{
c=a[i];
for(j=i+1;j<5;j++)
{
if(c<a[j]){
b=a[i];
a[i]=a[j];
a[j]=b;
}
c=a[i]; //要更新c
}
printf("%d ",a[i]);
}
}
----------------解决方案--------------------------------------------------------
不用更新吧!
for(i=0;i<5;i++)
{
c=a[i];
这里就更新了
----------------解决方案--------------------------------------------------------
哈哈,终于搞定了,谢谢谢谢各位~~好开心
----------------解决方案--------------------------------------------------------
拜托,为什么要input 10 numbers,另外,他好象没有漏括号啊,我觉得是if(c<a[j])有问题,因为虽然a[i]和a[j]互换了,但是c好象没有换,还是原来那个a[i]的值,所以没有把最大数放到第一个,
拙见,高手评判,偶虚心学习
----------------解决方案--------------------------------------------------------