帮我解一下这道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语言了。

哪位大佬能帮看看这道c语言?
a,b都是默认输入升序的数(题目没要求验证,我的代码也不验证,请按升序输入,如需验证升序输入,只需定义一个变量记录输入的数字,并在下次循环输入时比大小。)所以,定义2个指针分别指向a,b最后一个输入的元素地址,嵌套循环,分别往前移动,同时比较两数组元素,每次找到对应位置就将a移位并插入b的...

请高手帮我解决一下这道C语言题目,谢谢!
s=fun(3)=3-fun(3-1)=3-fun(2)=3-2=1 所以选A.

谁能帮我解释一下这道c语言题目啊 不懂
1.转换说明符 a(%A) 浮点数、十六进制数字和p-(P-)记数法(C99)c 字符 d 有符号十进制整数 f 浮点数(包括float和doulbe)e(%E) 浮点数指数输出[e-(E-)记数法]g(%G) 浮点数不显无意义的零"0"i 有符号十进制整数(与%d相同)u 无符号十进制整数 o 八进制...

解出并解释一下C语言的这个题目(完美的代价)
\/\/说明:此程序编译通过的,你看看吧。最短交换的算法就是:交换从两端到中间,就是最优。\/\/算法思想具体如下:1、从左边第i的字符串开始逐个开始与x比较是否相等 2、在字符串右边第n-i-1个位置开始,向左寻找与之相同的字符。3、找到字符后将其逐个向右移动,统计交换次数 当遇到奇数字母时,反...

请问一下大佬们,这道C语言编程题我为什么错,还有这些监测点的划分依据是...
C语言中一般int为32位,最大只能表示12的阶乘,超过12就会产生溢出,而题目中明确说明了数据会在double范围内,就是有可能超过int所表示范围。需要改为double类型。监测点划分依据:Cmn表示从n中选m个有多少情况,通过数学分析我们知道,当m=n\/2时取得最大值。因为我们有公式只要m1+m2=n那Cm1n=Cm2n...

请问这倒c语言的题目运行结果是什么详细解释谢谢
指针的最基本应用。看不懂的话 建议重新学一下指针。没有更简单的指针使用啦。scanf的时候输入pa pb,其实就是输入a 和b了。于是下面printf出来的就是刚才输入的值。然后 下面的,你都可以把*p去掉看 也就是 min =a;if(a>b)min = b;输出min值 就是输出ab中的较小值。

谁能帮我解决下面的C语言问题啊,最好能说明解析过程。
解析:道理同第1题,执行switch(a),满足条件进入switch(b),接着满足条件执行case 0后语句,break跳出switch(b),由于跳出后没有语句break,因此接着执行switch(a)。记住一点:break语句只能跳出一个switch;3、至于这题,估计是你输错了,如果题目真这样,就是题目错了。编译都不可能通过,在...

请C语言大神看看这个题目,帮我解释一下怎么来的,表示本人新手
第一部分是格式串fmt,用来表明,输出数据的格式 后面的余下部分为格式串中对应的变量 char*s="#include %cstdio.h%c%cchar*s=%c%s%c;%cint main(){printf(s,34,s,10,34);return 0;}"; \/\/这里就是定义一个格式串 printf(s,34,34,10,34,s,34,10); \/\/这里第一个s是格式串, ...

一道C语言题目,看图~大神帮忙解答下吧!急急急急急!!在线等
答案是D 在C语言中数组赋值可以如A,那样,【】里面定义了长度5{}中有最大不超过5个值,则赋值成功 B在5个数值之内所以也是正确的 答案C,就是另外中赋值方法,在【】中不定义长度,因此数组a[]的实际长度取决于{}中的值的数量,也就是说在C答案中有5个0作为数值,因此C答案中的a[]的实际...

c语言这道题为什么选B麻烦详细说明一下?
外层循环循环2次,每次执行2次x++ 内层循环执行3次,但是当j不能被3整除时不执行x++,即只有在j==0的时候才执行x++ 所以x++共执行了,2*2+2*1=6次,应该选择C

相似回答
大家正在搜