问题 单项选择题

有以下程序:
#include <stdlib.h>
main()
char *p,*q;
p=(char*)malloc(sizeof(char)*20); q=p;
scanf("%s%s",p,q); ptintf("%s%s\n",p,q);

若从键盘输入abc def<回车>,则输出的结果是( )。

A.def def

B.abc def

C.abc d

D.d d

答案

参考答案:A

解析: 本题首先定义两个字符型指针变量p和q,通过malloc()函数申请20个字符的存储空间,并把它的首地址赋给p,再把p的值赋给小p和q指向同一个存储区。在scanf()语句中读取字符串到p和q指向的字符串,先把abc读取到p指向的存储区中,第一个空格是结束标记,第二个空格是分隔符,再把def存放到q指向的存储区,把原先的内容覆盖。所以p和q指向的存储区内容是def,故最后输出的def,def。4个选项中A正确。

选择题
单项选择题