C语言选择题 这种题应该用什么思路解题 还望大家指教?
有以下程序,程序运行的输出结果是#include<string.h>#include<stadio.h>main(){charp〔20〕={'E','F','G','H'...
有以下程序,程序运行的输出结果是
# include <string.h>
# include <stadio.h>
main( )
{ char p〔20〕={'E','F','G','H'},
q〔〕="EFGH",r〔〕="EFGHI";
strcat (p,r); strcpy (p+strlen(q), q);
printf("%d\n",strlen(p) );
}
A 9
B 11
C 6
D 8 展开
# include <string.h>
# include <stadio.h>
main( )
{ char p〔20〕={'E','F','G','H'},
q〔〕="EFGH",r〔〕="EFGHI";
strcat (p,r); strcpy (p+strlen(q), q);
printf("%d\n",strlen(p) );
}
A 9
B 11
C 6
D 8 展开
5个回答
展开全部
正确答案:D。
这个题综合考察了字符数组、字符串的概念以及strcat、strcpy、strlen三个函数的应用。
没有特别的解题技巧,除了掌握上述知识外,要训练阅读代码的能力。
从第一行开始,一行行读,根据数据流向,记录数据状态。
p[]:EFGH‘\0’……'\0'
q[]:EFGH‘\0’
r[]:EFGHI‘\0’
strcat(p,r):p[]:EFGHEFGHI‘\0’
strcpy (p+strlen(q), q);:p[]: EFGHEFGH‘\0’
printf("%d\n",strlen(p) );:strlen统计‘\0’之前的字符,所以输出为8。
平时多练习,才能熟悉这些函数。可以用调试器看内存情况。
展开全部
这个考察字符 包不包含'/0'的结果是什么。
strlen对于上述的结果变化。
strcat后的变化。
strcpy的copy指针位置的影响。
分不清就多跑几个例子。我也记不清了。
strlen对于上述的结果变化。
strcat后的变化。
strcpy的copy指针位置的影响。
分不清就多跑几个例子。我也记不清了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
选D,strcpy中将p指向的字符串后移了4个位置,即q中字符串的长度。然后以这个位置为起点向p拷贝q的字符串。合起来就是两倍的q的字符串长。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
选D 8
赋值完成后,3个字符串分别为:
p: EFGH
q: E F G H \0
r: E F G H I \0
strcat (p,r)将r接到p后,此时p为E F G H E F G H I \0
strcpy (p+strlen(q), q); strlen(q)是4,所以从p后移4位的地方开始粘贴q,结果p为
E F G H E F G H \0 \0
字符串取到第一个\0的位置,\0不算在长度内,所以长度为8
赋值完成后,3个字符串分别为:
p: EFGH
q: E F G H \0
r: E F G H I \0
strcat (p,r)将r接到p后,此时p为E F G H E F G H I \0
strcpy (p+strlen(q), q); strlen(q)是4,所以从p后移4位的地方开始粘贴q,结果p为
E F G H E F G H \0 \0
字符串取到第一个\0的位置,\0不算在长度内,所以长度为8
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
strcat -> p+r -> EFGH + EFGHI -> EFGHEFGHI
strcpy -> pr 中的r被q覆盖 -> pq -> EFGHEFGH
选D
字符串结尾的终止符0不计入长度,但只要存在这个0,就会截断之后的所有字符,意即这些字符已经不再属于这个字符串了
strcpy -> pr 中的r被q覆盖 -> pq -> EFGHEFGH
选D
字符串结尾的终止符0不计入长度,但只要存在这个0,就会截断之后的所有字符,意即这些字符已经不再属于这个字符串了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询