请高手帮我解决一下这道题,谢谢!

有以下程序#include<string.h>main(){charp[20]={′a′,′b′,′c′,′d′},q[]="abc",r[]="abcde";strca... 有以下程序
# include <string.h>
main()
{char p[20]={′a′, ′b′, ′c′, ′d′}, q[]="abc", r[]="abcde";
strcat(p, r); strcpy(p+strlen(q), q);
printf("%d\n",strlen(p));
}
程序运行后的输出结果是
A)9
B)6
C)11
D)7

请简略的说一下过程,谢谢!!
展开
 我来答
珣一
2010-08-02 · TA获得超过129个赞
知道答主
回答量:152
采纳率:0%
帮助的人:81.5万
展开全部
这题有些错误
#include "stdio.h"
#include <string.h>
main()
{char p[20]={'a','b','c','d'}, q[]="abc", r[]="abcde";
strcat(p, r); strcpy(p+strlen(q), q);
printf("%d\n",strlen(p));
}
strcat涵数的作用连接两个字符数组中的字符串,字符数组r接到p的后面
p此时abcdabcde\0\0\0\0\0\0\0\0\0\0\0

strcpy(p+strlen(q), q); strlen(q)测试q的实际长度为3 p+strlen(9)等价于p+3即数组指针也就是指向p[3]的地址,然后把q中的abe从p[3]这地址开始复制得到abcabc\0\0\0\0\0\0\0\0\0\0\0\0\0\0
所以strlen(p)最后为6
11111
2024-11-15 广告
作业指导书是一种专门编写的指导性文件,用于完成某一项或同一类型的工作。它是根据设计图纸、制造厂说明书、相关的验评标准、编写人员现场所积累的施工经验以及成熟实用的施工工艺所编写的。定义和作用作业指导书是质量管理体系文件的组成部分,主要用于阐明... 点击进入详情页
本回答由11111提供
林声飘扬
2010-08-02 · TA获得超过1630个赞
知道小有建树答主
回答量:1126
采纳率:50%
帮助的人:955万
展开全部
选B
分析:
strcat(p, r); =》这时候字符数组p[20]="abcdabcde";
strcpy(p+strlen(q), q); =>q[]="abc", strlen(q)= 3,不计算'\0';
strcpy(p+strlen(q), q)=>把字符数组r所有元素复制到字符数组p下标为3开始位置,并且字符数组r的结束符算'\0'也一起复制,字符数组p[20]="abcabc";strlen(p)不计算'\0'在内所有字符长度,故strlen(p)为6
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
songwanqiang
2010-08-02 · TA获得超过2399个赞
知道小有建树答主
回答量:603
采纳率:0%
帮助的人:938万
展开全部

B

看下面的图:

关键是strcpy把'\0',也赋值过去了,而strlen只查到'\0'处。

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

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式