C语言问题 如图
3个回答
展开全部
*pb=b1+3; pb指向 d, 所以 pb 是 “defg”
b1[0] 是 'a', b1指向 a
--pb, pb 依次 指向 c..,b...,a... , 直到 指向a...
strcpy(b2,pb); 依次为:cdefg,bcdefg,abcdefg 最终保留 "abcdefg"
输出字符串 "abcdefg" 长度为 7。 故选 D。
程序这样来理解:
char b1[8]="abcdefg",b2[8],*pb=b1+3;
printf("pb=%s\n",pb); // pb=defg
while(--pb>=b1) { strcpy(b2,pb);printf("%s\n",b2);} //依次变化直到 “abcdefg”
printf("%d\n",strlen(b2)); //abcdefg长度为 7
b1[0] 是 'a', b1指向 a
--pb, pb 依次 指向 c..,b...,a... , 直到 指向a...
strcpy(b2,pb); 依次为:cdefg,bcdefg,abcdefg 最终保留 "abcdefg"
输出字符串 "abcdefg" 长度为 7。 故选 D。
程序这样来理解:
char b1[8]="abcdefg",b2[8],*pb=b1+3;
printf("pb=%s\n",pb); // pb=defg
while(--pb>=b1) { strcpy(b2,pb);printf("%s\n",b2);} //依次变化直到 “abcdefg”
printf("%d\n",strlen(b2)); //abcdefg长度为 7
展开全部
由于循环条件导致pb不断减,所以循环结束前b2=pb=b1, 然后pb再减 循环停止。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
D正确,选D。
追问
能详细的讲讲么。谢谢
追答
pb=b1+3;使pb指向了d,--pb指向了c,这时与b1比较也就是与a的指针比较为“真”,执行strcpy(b2,pb);,把defg拷贝到b2里;循环回去--pb指向了c,与b1比较还为“真”,再执行strcpy(b2,pb);,把cdefg拷贝到b2里;……一直到--pb指向a时把abcdefg拷贝到b2里,循环回去--pb到b1前面了,pb>=b1被破坏,跳出循环。所以输出的结果是最后一次拷贝进去的字符串abcdefg的长度,它是7。
——为什么不在提问时说明要“详细过程”?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询