C语言的一个初级问题!

来源:百度知道 编辑:UC知道 时间:2024/05/16 18:11:39
main()
{
i=1,s=3;
do{s+=i++;if(s%7==0) continue; else ++i;}while(s<15);
printf("%d",i);}
运行结果是什么 为什么?

结果是8

首先应该定义i,s的类型为整型,即在i=1,s=3;上一行添加语句int i,j;

初始i=1,s=3;
s+=i++表示s=s+(i++);相当于同时执行{s=s+i,i=i+1;},

if(s%7==0) continue;表示如果s是7的倍数,则跳出档次循环准备进行下次循环;

else ++i;表示如果s不是7的倍数,则进行++i,i自动增加1

循环过程如下:
s=4,i=3; (s<15)
s=7,i=4; (s<15)
s=11,i=6; (s<15)
s=17,i=8; (s>15,跳出)

所以运行结果i=8(s=17)

6

我觉得是这样的:
第一次循环 后 s=4,i=3
第二次循环 后 s=7,i=4
第3次循环后 s =11,i=6
第四次循环 s = 17,i = 8,结束
最后i=8

这样的问题自己多想一会,就会有答案了
学习都像这样,自己都不多思多想,就是学会了知识,
思辨能力也一般,也是学的死知识,不能灵活运用

这个题目考知识点还可以
但是要是在软件公司
你写这样的程序
很快就被开除了