求问一道C++题

chars1[20]="CSCI";chars2[20]="IACT";char*p=s1,*q=s2;while(*p)p++;while(*q){*p=*q;p++;... char s1[20] = "CSCI";
char s2[20] = "IACT";
char *p = s1, *q = s2;
while(*p)p++;
while(*q){ *p = *q; p++; q++; }
*p = '\0';
cout << s1 << endl << s2 << endl;

输出的答案我推不出来
请解释一下,谢谢!!
展开
 我来答
柯墨
2010-11-30 · TA获得超过215个赞
知道小有建树答主
回答量:120
采纳率:0%
帮助的人:68.5万
展开全部
首先如果你的输出结果是:
CSCIIACT
IACT
请继续往下看,否则请无视。
这段程序 第一要搞清指针的概念。数组也是指针。
char *p = s1, *q = s2;//这句话 除了申明p和q指针也同时将s1[0]和s2[0]的地址赋给了p和q
while(*p)p++;//p指向的地址的内容不为‘\0’时,指针向后移动一位,循环跳出时,p指向s1[4]
while(*q){ *p = *q; p++; q++; }//对p地址指向的内容进行赋值,赋值内容为q指向地址的内容(赋的是第几个肉眼一下子就能看出来了吧 不详细解释了)
最后给个标志输出s1,s2。
考虑到之前在动的指针只有p和q s1和s2没有动,所以从开始输出,由于s1[4]开始到s1[7]在第5行代码中被赋值s1[8]在第六行代码中被置位。所以输出就是这个。

ps:问问题起码要把自己的问题表述清楚,你的输出结果是什么,你自己推出来的结果是什么,思路是什么.你不把这些说出来,回答起来很无力的.
sun_siliang
2010-11-30 · TA获得超过2.6万个赞
知道大有可为答主
回答量:9913
采纳率:100%
帮助的人:4542万
展开全部
while(*p)p++;//p指向s1的结束字符'\0'
while(*q){ *p = *q; p++; q++; }//将s2接在s1后面
*p = '\0';//字符串结束符
cout << s1 << endl << s2 << endl;//输出s1,s2
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
bdzd305606245
2010-11-30 · TA获得超过140个赞
知道答主
回答量:90
采纳率:0%
帮助的人:72.6万
展开全部
char s1[20] = "CSCI";
char s2[20] = "IACT";
char *p = s1, *q = s2; //指针p,q分别指向s1,s2的首地址
while(*p)p++; //循环至p指向s1末尾
while(*q){ *p = *q; p++; q++; } //利用指针把s2接到s1的后面
*p = '\0'; //在s1的后面加上一个空字符
cout << s1 << endl << s2 << endl;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
青云
2010-11-30 · TA获得超过364个赞
知道小有建树答主
回答量:322
采纳率:50%
帮助的人:72.4万
展开全部
CSCIIACT
IACT
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
27...8@qq.com
2010-11-30
知道答主
回答量:7
采纳率:0%
帮助的人:0
展开全部
应该是
CSCIIACT
IACT
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式