结构体题目,萌新求教
以下程序运行后的输出结果是( )。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:09 编辑
是对的,就是把里面的score进行从小到大排序
运行一遍不就知道了{:10_312:} TKXZ 发表于 2022-12-12 20:06
是对的,就是把里面的score进行从小到大排序
运行一遍不就知道了
但是考试的时候这种题一般是不会给你运行的机会的 TKXZ 发表于 2022-12-12 20:06
是对的,就是把里面的score进行从小到大排序
运行一遍不就知道了
为何指针p变化了,而s却没变化,p不是指向s的吗 本帖最后由 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]