C语言问题 求高手解答!!

#include<stdio.h>voidsortd(int*a,intn){int*p,*q,*maxp,t;for(p=a;p<a+n-1;p++){maxp=p;f... #include<stdio.h>

void sortd(int *a,int n)
{
int *p,*q,*maxp,t;

for(p=a;p<a+n-1;p++)
{
maxp=p;
for(q=p+1;q<a+n;q++)
if(*q>*maxp) maxp=p;
if(maxp!=p) {t=*p;*p=*maxp;*maxp=t; }
}
}

main()
{
int i,a[10];
for(i=0;i<10;i++)
scanf("%d",a+i);
sortd(a,10);
for(i=0;i<10;i++)
printf("%d\t",*(a+i));
printf("\n");
}
为什么在我输入10个数字以后这个程序就把输入的数字打印了出来?
为什么sortd函数没有作用
展开
 我来答
ahulxh
2018-08-12 · 知道合伙人软件行家
ahulxh
知道合伙人软件行家
采纳数:267 获赞数:805
研究生教学:数据结构与算法、计算机图形学…… 本科生教学:C语言程序设计、多媒体创作……

向TA提问 私信TA
展开全部

sortd函数系采用选择法排序算法将a指向的n个数从大到小排列:每次选出一个数和后面的所有数比较,记住最大数,最后放在队头……

遗憾的是选择部分有误:if(*q>*maxp) maxp=p;

当q指向的数较大时,应该记住q指向的数:if(*q>*maxp) maxp=q;

另外,建议程序分行,有序缩进,养成良好的书写习惯:

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
White_MouseYBZ
2018-08-12 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6587万
展开全部
把自定义函数sortd中的if(*q>*maxp) maxp=p;改成if(*q>*maxp) maxp=q;。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
蓝天不是蓝色了
2018-08-12 · TA获得超过630个赞
知道小有建树答主
回答量:329
采纳率:46%
帮助的人:95.3万
展开全部
你这个for循环不用括号?
追答
首先你的a是一个数组,赋值的时候要规范
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式