帮我解一下这道C语言的题目

#include< stdio.h>
main()
{int k=2,s=0;
Do{if((k%2)!=o) continue;
s+=k;k++;}
while(k>10);
printf("s=%d\n",s);
}
有谁帮我解释一下整个运算过程 谢谢~
我这是二级考的一道题目。答案是s=0,我主要是想知道第一次循环时if条件不成立,那么continue之后的两句语句,s+=k和k++是不是都不用执行了,于是直接判断while(k〉10),因为不成立,所以跳出循环,s仍为0 。我这么分析对吗

#include<stdio.h>//注意你在stdio前面多打一个空格。编译会出错···
main()
{int k=2,s=0;
do{//注意do是关键词,必需要小写。。。请不要乱改
if((k%2)!=0) //这个应该是0,而不是字母o。楼主打错了··
continue;
s+=k;
k++;
}while(k>10);
//如果楼主的k>10,请注意,他只做了一次do,并没有任何一次循环。
printf("s=%d\n",s);//所以结果是s=0
}
以上是按楼主的理解解释的

针对楼上某些人的提问

#include<stdio.h>
main()
{int k=2,s=0;
do{
if((k%2)!=0)
{
printf("%d\t",k);
continue; //还有楼上的有的人瞎改。我也顺便说一下吧。contiune的意思是跳出该次循环,进行下一次循环。当k=3的时候跳出该次循环,k的值并没有+1,所以一直是3,因此会死循环,请注意看printf的值,一直是3
}
s+=k;
k++;
}while(k<10);//所以显然这里不能改成k<10.只能用k>10.只样的话,他不经过while,这样就不会死循环

printf("s=%d\n",s);
}

楼主我刚才查过些资料。。结果是这样的
continue所谓的跳出,必需先在while循环里
可是当你第一次做do的时候还没在循环
所以到if的时候,虽然k%2==0,但是此时的continue的意思并不是跳出循环。
因为循环还没开始。所以会继续往下走
这样s+=k就经过处理所以s=2.
此时的k=3.然后再判断while不符合,所以跳出
结果是2~~~~~~~~~~这是上机运行过结果,肯定没有问题。。

#include<stdio.h>
main()
{int k=2,s=0;
do{
printf("s=%d\n",s);//也可以把这个打印放这里,你就会发现一直打印的是S=2.也就是第一次do的结果,后面continue跳出循环根本不经过下面两句
//从这里来看,也知道第一次的continue的作用。后面continue跳出该次循环就好理解了
if((k%2)!=0)
{
printf("%d\t",k);
continue;
s+=k;
k++;
}while(k<10);

printf("s=%d\n",s);

}

欢迎楼主一起讨论··
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-08-08
第一行:包括<输入输出>
第二行:主函数
第三行:整型k=2,s=0(这是基本的赋值语句)
第四行:执行循环
如果k%2不等于0则继续
第五行:将k赋值于的s自增;k自增
第六行:当k>10停止
第七行:输出s.

(本人现学现卖~只供参考)
第2个回答  2009-08-08
首先赋值k=2 s=0
先执行:
if((k%2)!=0) continue;//如果k不能被2整除就跳过此次循环 进行下一次循环
s+=k;k++;//s=s+k k=k+1
}
while(k>10)//k>10就继续循环 否则跳出
printf("s=%d\n",s);//打出"s=s的值"
第3个回答  2009-08-08
调用stdio.h头文件,运行主函数,进入程序,定义K=2,S=0,如果K除2不等于0,则继续执行。最后输出S的值
第4个回答  2009-08-08
题目抄错了吧,一看怎么是个死循环啊,s就停在2这里了,k就等于3,然后不停判断k是否大于10.。。。。。。。。。
第5个回答  2009-08-08
索瑞,高中QB语言没学好。帮不了忙。甚至我都分不清是不是QB语言了。
相似回答