这个c语言题怎么做?

 我来答
自我编程
2020-05-02 · 科技优质答主
自我编程
采纳数:1481 获赞数:4283

向TA提问 私信TA
展开全部
题中代码错在:结构变量是传值不是传址。
在sort中形参是结构变量,因此传递时只是传递了原变量的值。形参和实参两个结构变量地址不同。当sort实现排序,只是改变了形参stu2。而main中的stu未改变。
所以,方法1:sort将stu2的值返回,main中接收返回值。
方法2:sort形参改成指针,传地址。
代码参考如下:
void sort(struct stu_type *stu2)
{
int i,j,k,score;
for(i=0;i<2;i++)
{
k=i;
for(j=i+1;j<3;j++)
if(stu2->score[k]<stu2->score[j])
k=j;
if(k!=i)
{
score=stu2->score[i];
stu2->score[i]=stu2->score[k];
stu2->score[k]=score;
}
}

}

struct stu_type sort2(struct stu_type stu2)
{
int i,j,k,score;
for(i=0;i<2;i++)
{
k=i;
for(j=i+1;j<3;j++)
if(stu2.score[k]<stu2.score[j])
k=j;
if(k!=i)
{
score=stu2.score[i];
stu2.score[i]=stu2.score[k];
stu2.score[k]=score;
}
}
return stu2;
}
//两种方法在main中调用:
sort(&stu);
stu=sort2(stu);
喜羊羊651
2020-05-02 · TA获得超过314个赞
知道小有建树答主
回答量:1186
采纳率:76%
帮助的人:112万
展开全部
sort函数只是对入参的副本进行排序,但是对stu2无任何影响。
修改方式:sort函数的参数类型应该改为指针(地址),而不是值。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式