问题 单项选择题

有以下程序:
main()
char s[]="Yes\n/No",*ps=s;
puts(ps+4);
*(ps+4)=0;
puts(s);

程序运行后的输出结果是(选项D中的第一行是空行)( )。

A.n/No
Yes
/No

B./No
Yes

C.n/No
Yes
/No

D.
/No
Yes

答案

参考答案:B

解析: 主函数中定义了一个字符数组s并赋初值,一个字符串指针变量ps并让它指向s。程序中p+4的地址为数组第5个元素的地址,而调用put(str_adr)函数时,将从str_adr这一地址开始,依次输出存储单元中的字符,遇到第一个\0时结束输出,并自动输出一个换行符。所以put(p+4)将输出n/No,put(s)将从s第一个元素开始输出到第3个元素结束(因为执行*(p+4)=0语句后s中的第5个元素的值为0,而s中的第4个元素为\,puts将遇到\0,结束输出),即输出yes。所以,4个选项中选项B符合题意。

问答题
单项选择题