请教各位学霸这道c语言题该怎么理解?为什么结果是9876 876呢?非常感谢!

不太清楚这个9876和876是怎么输出来的,非常感谢!... 不太清楚这个9876和876是怎么输出来的,非常感谢! 展开
 我来答
紫薇参星
科技发烧友

2021-08-16 · 有一些普通的科技小锦囊
知道大有可为答主
回答量:5983
采纳率:92%
帮助的人:3543万
展开全部

这个程序中指针p第一次循环的初值是s(指向字符数组的第一个即下标为0的字符)所以输出是一个完整的字符串,后面加一个空格,打印"9876 ",

第二次循环指针p的值是p++,也就是(s+1)(指向字符数组的第二个即下标为1的字符)所以输出是从第二个字符开始到结尾的字符串,后面加一个空格,打印"876 "

第三次循环指针p的值是p++,也就是(s+2)因为循环终止条件是p<s+2所以退出循环,程序结束.

所以输出是"9876 876 ".

如果你不明白可以把循环终止条件改成p<s+4,那么程序就会输出"9876 876 76 6 ",每次p指针指向字符数组的后一个字符,每次输出其后面的字符串.

我给你一个循环终止条件改成p<s+4后的例子程序,希望可以帮助你理解原程序的输出结果.

#include<stdio.h>

void main()

{ char s[]="9876",*p;

 for(p=s;p<s+4;p++)

  printf("%s ",p);

}

追问
太谢谢您啦
microroom
科技发烧友

2021-08-16 · 智能家居/数码/手机/智能家电产品都懂点
知道大有可为答主
回答量:7118
采纳率:83%
帮助的人:1574万
展开全部
开始p是指向字符串9876的第一个字符9,所以作为字符串输出p就是9876。

然后执行p++,p指向字符串9876的第二个字符8,作为字符串输出p就是876。

然后又执行p++,p指向字符串9876的第三个字符7,此时p已经等于s+2,所以退出循环。

所以输出就是9876 876 。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式