鱼C论坛

 找回密码
 立即注册
查看: 2680|回复: 4

[已解决]结构体题目,萌新求教

[复制链接]
发表于 2022-12-11 19:49:49 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
以下程序运行后的输出结果是( )。
struct STU{ char name[10]; int num; int score; };

void main(){ struct STU s[5]={{"YangSan", 20041, 703},{"LiSiGuo", 20042, 580}, {"WangYin", 20043, 680},{"SunDan", 20044, 550},{"Penghua", 20045, 537}}, *p[5], *t; int i, j;

for( i=0; i<5; i++ ) p[i]=&s[i]; for( i=0; i<4; i++ ) for( j=i+1; j<5; j++ ) if(p[i]->score > p[j]->score){ t=p[i]; p[i]=p[j]; p[j]=t; } printf("%d %d\n", s[1].score, p[1]->score); }



A. 550 580    B. 680 680   C. 580 550   D. 580 680



我选了C,请问我选得对吗?
如果错了,可以给我解释一下答案吗?、


最佳答案
2022-12-12 20:06:09
本帖最后由 TKXZ 于 2022-12-12 20:09 编辑

是对的,就是把里面的score进行从小到大排序
运行一遍不就知道了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-12-12 20:06:09 | 显示全部楼层    本楼为最佳答案   
本帖最后由 TKXZ 于 2022-12-12 20:09 编辑

是对的,就是把里面的score进行从小到大排序
运行一遍不就知道了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-14 07:15:55 | 显示全部楼层
TKXZ 发表于 2022-12-12 20:06
是对的,就是把里面的score进行从小到大排序
运行一遍不就知道了

但是考试的时候这种题一般是不会给你运行的机会的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-12-14 08:54:39 | 显示全部楼层
TKXZ 发表于 2022-12-12 20:06
是对的,就是把里面的score进行从小到大排序
运行一遍不就知道了

为何指针p变化了,而s却没变化,p不是指向s的吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-14 09:59:23 | 显示全部楼层
本帖最后由 jhq999 于 2022-12-14 10:02 编辑
sususususu 发表于 2022-12-14 08:54
为何指针p变化了,而s却没变化,p不是指向s的吗


它俩没关系,只是改变了p里的s各个元素指针值在p里的顺序,并未改变s各个元素的指针值,也就是说只是对s各个元素的指针值在p里进行了排序
举个例子:
&s[0]=0,&s[1]=2,&s[2]=3
s[0]=8,s[1]=4,s[2]=9
p={0,1,2}
排序后
p={1,0,3}
但还是&s[0]=0,&s[1]=2,&s[2]=3
s[0]=8,s[1]=4,s[2]=9
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-17 13:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表