C语言程序阅读题怎么做?

C语言程序阅读题怎么做?,第1张

您好!结果应该是20。主要看的是else跟的是哪个if。

如果else有括号,就看括号是哪个if就跟哪个If。如果没有括号,就跟最近的if

这里的else没有括号,应该是if(!c)的else。

所以d之外开始的时候赋值了20,其他的分支条件都没进。结果应该是20

这个程序有BUG,执行时极可能报告段错误(segmentation fault)。

错误原因在于:指针p没有初始化。

---

如果:char s[] = "123456789", *p, i = 0

改为:char s[] = "123456789", *p = s, i = 0

那么:程序输出结果为:*2*4*6*8*

原因:

当i = 0,2,4,6,8时,if条件i%2 == 0为真,故执行*p=‘*’,即修改数组s的第0,2,4,6,8个元素值为‘*’,亦即将1、3、5、7、9修改为*。

程序第一个if中的条件!a是成立的(定义了a=0,非0为true),所以执行第一个if中的语句,d++,接着直接就执行printf()语句,所以结果是101。

如果调试程序,可参考如下:

(1)执行到第一条if语句

(2)匹配第一条if语句,执行完后,执行printf()语句输出结果


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/7814227.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-10
下一篇2023-04-10

发表评论

登录后才能评论

评论列表(0条)

    保存