C语言选择题求解答

有以下程序:structSTU{charname[10];intnum;floatTotalScore;};voidf(structSTU*p){structSTUs[2... 有以下程序:
struct STU
{ char name[10]; int num; float TotalScore; };
void f(struct STU *p){ struct STU s[2]={{"SunDan",20044,550},{"Penghua",20045,537}},*q=s;
++p; ++q; *p=*q;
}
main(){ struct STU s[3]={{"YangSan",20041,703},{"LiSiGuo",20042,580}};
f(s);
printf("%s %d %3.0f\n",s[1].name, s[1].num,s[1].TotalScore);
}
程序运行后的输出结果是(  )。
A) SunDan 20044 550
B) Penghua 20045 537
C) LiSiGuo 20042 580
D) SunDan 20041 703
展开
 我来答
zq757797769
2013-09-09 · TA获得超过201个赞
知道小有建树答主
回答量:294
采纳率:0%
帮助的人:160万
展开全部
选B,这个其实就是一个数组问题,别让他的结构体给迷惑了,子函数传进来的参数是地址类型的,所以子函数里传递的值改变了,主函数里传的值也跟着改变了,主函数里传的是主函数数组里的首地址,在子函数里,参数地址++,也就是编程第二位的地址,然后将子函数里的数组的第二位的值赋予传的参数,子函数的第二位的数值是"Penghua",20045,537,
所以传递个参数的数值就是这个,上面说了,这里面是传递的地址,所以穿的参数是会一起改变的,所以主函数的s[1]就变成"Penghua",20045,537这个了
lyz810
2013-09-09 · 知道合伙人互联网行家
lyz810
知道合伙人互联网行家
采纳数:7531 获赞数:31775
前端开发工程师

向TA提问 私信TA
展开全部
B
执行f(s)将s的首地址赋给*p
在f()函数中新建1个struct数组q指向这个数组的首地址
++q指向新建数组中第0+1个元素
++p指向传来数组的第0+1个元素
*p=*q

将{"Penghua",20045,537}赋给传入的struct数组的指定位置

即s[1]={"Penghua",20045,537}
所以结果是B
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jackwind1987
2013-09-09 · TA获得超过2738个赞
知道大有可为答主
回答量:1268
采纳率:50%
帮助的人:481万
展开全部
选择B
在函数f中,p指向的是主函数中的s,q指向的f函数中的f
然后两者都向后移动了一个结构体:++p; ++q;

于是这是p和q都指向了对应的s[1]所以,主函数的s[1]就应该等于f函数中的s[1]
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
3叶仙草
2013-09-09 · TA获得超过441个赞
知道小有建树答主
回答量:186
采纳率:0%
帮助的人:120万
展开全部
B) Penghua 20045 537
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
阿浪432
2013-09-09 · TA获得超过107个赞
知道答主
回答量:197
采纳率:0%
帮助的人:114万
展开全部
结果是B
B
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
龍__鳳
2013-09-09 · TA获得超过2346个赞
知道小有建树答主
回答量:948
采纳率:0%
帮助的人:1395万
展开全部

B

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式