sususususu 发表于 2022-12-11 19:49:49

结构体题目,萌新求教

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

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

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



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



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


TKXZ 发表于 2022-12-12 20:06:09

本帖最后由 TKXZ 于 2022-12-12 20:09 编辑

是对的,就是把里面的score进行从小到大排序
运行一遍不就知道了{:10_312:}

ExiaGN001 发表于 2022-12-14 07:15:55

TKXZ 发表于 2022-12-12 20:06
是对的,就是把里面的score进行从小到大排序
运行一遍不就知道了

但是考试的时候这种题一般是不会给你运行的机会的

sususususu 发表于 2022-12-14 08:54:39

TKXZ 发表于 2022-12-12 20:06
是对的,就是把里面的score进行从小到大排序
运行一遍不就知道了

为何指针p变化了,而s却没变化,p不是指向s的吗

jhq999 发表于 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,&s=2,&s=3
s=8,s=4,s=9
p={0,1,2}
排序后
p={1,0,3}
但还是&s=0,&s=2,&s=3
s=8,s=4,s=9
页: [1]
查看完整版本: 结构体题目,萌新求教