C语言程序输出题,求详细做法

来源:百度知道 编辑:UC知道 时间:2024/06/18 07:38:13
3.下面程序的运行结果是 (13) 。
main ( )
{ int i,x,y; i=x=y=0;
do { ++ i;
if(i%2!=0) {x=x+i; i++; }
y=y+i++;
} while(i<=7);
printf(“x=%d, y=%d\n”,x,y);
}
答案为3. x=1,y=20耶

(i++是先使用i的值再使i加1)
起初 i=x=y=0
①i=1 1%2=1≠0 执行if后{}内的语句
x=x+i=0+1=1 i=i+1=1+1=2
y=y+i++=0+2=2 因为再算y时对i有一个i++ 所以i变为3
第一个循环后变为i=3 x=1 y=2
②i=4 4%2=0 所以if后{}内的语句跳过
y=y+i++=2+4=6
第二个循环后变为i=5 x=1 y=6
③i=6 6%2=0 所以if后{}内的语句跳过
y=y+i++=6+6=12
第三个循环后变为i=7 x=1 y=12
i=7还是满足循环条件 所以还要继续
④i=8 8&2=0 所以if后{}内的语句跳过
y=y+i++=12+8=20
结束循环 输出“x=1,y=20”

嘻嘻 在答案的带领下弄出来了 ~~~

main ( ) //定义主函数
{ int i,x,y; i=x=y=0; //定义三个变量 i,x,y值都为0
do { ++ i; //循环 i自加1
if(i%2!=0) {x=x+i; i++; } //判断i除2余数不为0,x=0+1 i自加1
y=y+i++; //i自加1再加y的值
} while(i<=7); //循环结束条件 i<=7,即i从1开始循环到7结束共循环7次
printf(“x=%d, y=%d\n”,x,y); //输出x与y的值
}
总的来说:i从1增加到7,其中i为1,5,7时将其值相加,不包括i=3
分析如下:i++ 即i=1
1满足i%2!=0条件x=0+1即x=1,同时i++后i值为2
y=y+i++ 时i值为3,倒i<=7判断满足循环条件,再次循环此时i++后i值为4因此i=3跳过去了