m0_52300590 2021-03-26 11:34 采纳率: 0%
浏览 34

一道C语言程序题不是很懂

#include<stdio.h>

int main()

{

int i,x[]={1,3,5,7,9,11,13,15},*p=a+3;

for(i=3;i;i--)

switch(i)

{

case1:

case2:printf("%d",*p++);break;

case3:printf("%d",*(--p));

}

return 0;}

}

答案是5 5 7

过程不是很清楚

  • 写回答

2条回答 默认 最新

  • CSDN专家-ProfSnail 2021-03-26 12:17
    关注

    一开始,p指向了x[3]的位置,也就是指向了数值为7的位置。

    接下来进行三次for循环。

    第一次i = 3,根据switch,case(3)的时候需要输出*(--p)的内容,*(--p)是先将p减一个位置,再取他指向的数字。减一个位置,减到了x[2]的位置,这时候p的内容是5,所以第一次输出5.

    第二次i = 2,根据switch,case(2)的时候需要输出*p++的内容,*p++是先取p指向的数字,再将p加一个位置。p目前指向x[2],里面的数字是5,所以第二次输出5,同时p++,现在p指向了x[3]的位置。

    第三次i=1,根据switch,case(1)的时候,程序什么也不做。但是由于没有break语句,程序继续执行case(2)的指令*p++。和第二次一样,先取p的数值,再对p加一。目前p指向x[3],p的内容是7,所以第三次输出7.同时将p加一,现在p指向了x[4]。

    第四次i=0,for循环里面for(i=3; i; i--)中的循环终止条件i已经为0了,所以循环结束。程序也就运行结束了。

    综上所述,程序的输出内容分别是5,5,7.

    评论

报告相同问题?

悬赏问题

  • ¥15 odoo17处理受托加工产品
  • ¥15 如何用MATLAB编码图三的积分
  • ¥15 为什么我安装了Homebrew之后,无法像官网的那样通过执行命令安装Watchman
  • ¥15 圆孔衍射光强随孔径变化
  • ¥15 MacBook pro m3max上用vscode运行c语言没有反应
  • ¥15 ESP-PROG配置错误,ALL ONES
  • ¥15 结构功能耦合指标计算
  • ¥50 AI大模型精调(百度千帆、飞浆)
  • ¥15 非科班怎么跑代码?如何导数据和调参
  • ¥15 福州市的全人群死因监测点死亡原因报表