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
展开
 我来答
q373648035
2012-04-11 · 超过14用户采纳过TA的回答
知道答主
回答量:49
采纳率:0%
帮助的人:22.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;
}
一挺机枪123
2012-04-11 · TA获得超过242个赞
知道答主
回答量:181
采纳率:0%
帮助的人:66.7万
展开全部
把If后面换的那些加上大括号就对了
if(a[q]<a[xb])
{
xb=q;
t=a[j];a[j]=a[xb];a[xb]=t;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhouxy0809
2012-04-11
知道答主
回答量:24
采纳率:0%
帮助的人:19.5万
展开全部
同学,将第二个for循环中的j<4改为j<5即可。
更多追问追答
追问
改了,与不对啊。再说不应该该啊。5个数,循环4次就出来啦。谢谢
追答
不好意思啊,看错了,是将第三个for循环中的q<4改为q<5即可.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
叁悟刃
2012-04-11 · TA获得超过125个赞
知道答主
回答量:61
采纳率:0%
帮助的人:5.9万
展开全部
第二个for循环中只遍历了四个数据,将j<4改成j<5或j<=4
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式