
c语言 选择排序法 问题??输入5个数,从小到大输出。 eg: 5 4 3 2 1 1 2 3 4 5
#include<stdio.h>intmain(){intxb,t;inta[10];inti,j,q;for(i=0;i<5;i++){scanf("%d",&a[i...
#include <stdio.h>
int main()
{
int xb,t;
int a[10];
int i,j,q;
for(i=0;i<5;i++)
{
scanf("%d",&a[i]);
}
for(j=0;j<4;j++)
{
xb=j;
for(q=j+1;q<4;q++)
if(a[q]<a[xb])
xb=q;
t=a[j];a[j]=a[xb];a[xb]=t;
/*只是计算下标,并互换位置。*/
}
for(i=0;i<5;i++)
printf("%d\n",a[i]);
return 0;
}
错到哪里了?希望指出,谢谢。
eg:
5 4 3 2 1
1 2 3 4 5 展开
int main()
{
int xb,t;
int a[10];
int i,j,q;
for(i=0;i<5;i++)
{
scanf("%d",&a[i]);
}
for(j=0;j<4;j++)
{
xb=j;
for(q=j+1;q<4;q++)
if(a[q]<a[xb])
xb=q;
t=a[j];a[j]=a[xb];a[xb]=t;
/*只是计算下标,并互换位置。*/
}
for(i=0;i<5;i++)
printf("%d\n",a[i]);
return 0;
}
错到哪里了?希望指出,谢谢。
eg:
5 4 3 2 1
1 2 3 4 5 展开
展开全部
#include <stdio.h>
int main()
{
int xb,t;
int a[10];
int i,j,q;
for(i=0;i<5;i++)
{
scanf("%d",&a[i]);
}
for(j=0;j<5;j++) //这里改为j<5
{
xb=j;
for(q=j+1;q<5;q++) //改为q<5
if(a[q]<a[xb])
xb=q;
t=a[j];a[j]=a[xb];a[xb]=t;
/*只是计算下标,并互换位置。*/
}
for(i=0;i<5;i++)
printf("%d ",a[i]); //去掉换行 改为空格
printf("\n");
return 0;
}
int main()
{
int xb,t;
int a[10];
int i,j,q;
for(i=0;i<5;i++)
{
scanf("%d",&a[i]);
}
for(j=0;j<5;j++) //这里改为j<5
{
xb=j;
for(q=j+1;q<5;q++) //改为q<5
if(a[q]<a[xb])
xb=q;
t=a[j];a[j]=a[xb];a[xb]=t;
/*只是计算下标,并互换位置。*/
}
for(i=0;i<5;i++)
printf("%d ",a[i]); //去掉换行 改为空格
printf("\n");
return 0;
}
展开全部
把If后面换的那些加上大括号就对了
if(a[q]<a[xb])
{
xb=q;
t=a[j];a[j]=a[xb];a[xb]=t;
}
if(a[q]<a[xb])
{
xb=q;
t=a[j];a[j]=a[xb];a[xb]=t;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
同学,将第二个for循环中的j<4改为j<5即可。
更多追问追答
追问
改了,与不对啊。再说不应该该啊。5个数,循环4次就出来啦。谢谢
追答
不好意思啊,看错了,是将第三个for循环中的q<4改为q<5即可.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第二个for循环中只遍历了四个数据,将j<4改成j<5或j<=4
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询