求程序的输出结果 main() {int a,b; for(a=1,b=1;a<=10;a++) { if(b%3==1) {b+=3; continue;} b-=5;}}

如题所述

最终 b=31.
循环开始,a 初值1,b 初值 1。
循环控制变量是 a,共循环 10 次。
第一次循环 b=1; b%3 得 1, if(b%3==1) 条件成立,做 b+=3, b 变 4 ,continue 则跳到下次循环开始,不执行 b-=5;
第二次循环 b=4; b%3 得 1,做 b+=3, b 变 7, continue 则跳到下次循环开始,
由于每次循环 b%3 == 1 条件都成立,所以 b 每次加3
循环 10 次, b 加3 共 10 次。
最终 b 为 1 + 3 * 10 得 31
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-09-13
个人认为这个程序考察的应该是continue和break的区别。
就按照你这个程序来说,最终在屏幕上不会有任何显示结果,但是程序中的两个变量a 以及b是发生了变化,你的这个程序b -= 5这个语句压根就不会执行的啊,因为你b 的初始值为1 正好满足
b %3 == 1,而满足这个条件之后,b采取的操作都是 b += 3,然后执行continue,即跳出此次循环,执行下一次循环,(这和break不一样,break是直接取消循环的执行)。最终,b += 3执行了十次,即b最终的值是 31, 而a的值是 11
第2个回答  2011-09-13
a的值为11,b的值为31
第3个回答  2011-09-13
加个输出语句:printf("b=%d",b);
输出结果:b=31
第4个回答  2020-12-16
#include<studio.h>
int main()
{
inta,b=9;
while(a=b-1)
{
b-=3;
if(b%5==0)
{
a++;
continue;
}
else if(b<5)
break;
a++;
}
printf ("%d,%d\n",a,b);
return 0;
}
求详解

...main() {int a, b; for(a=1,b=1; a<=10; a++) { if(b>=10)_百度...
b+=3相当于b=b+3;貌似你这个程序与b无关,因为b=1时,b<10,并且b%3!=1,而没有b++,所以一直执行循环,直到a>10,所以最后输出a为11。

...main( ) { int a,b; for (a=1,b=1;a<=100;a++)
{ int a,b;for(a=1,b=1;a<=100;a++)\/\/初值 a=1 b=1,条件 a<=100,每次循环后 a值加1 { if(b>=20)\/\/ 如果b>=20,循环结束 break;if(b%3==1)\/\/ 如果b 除3 余1,b=b+3,直接下一次循环 { b+=3;continue;} b-=5;\/\/ b=b-5 } printf("%d\\n",a);\/\/ 输出 ...

...main() { int a,b; for(a=1,b=1;a<=100;a++) { if(b>=20) break...
所以,答案是C

...运行后的输出结果是 main() {int a,b,c; a=1;b=3;c=5; printf(“%...
结果是3,10啊。这主要是由于自增操作符++前置还是后置决定的,比如说++a,就是先自增再使用,而a++就是说先使用再自增。执行printf(“%d,%d\\n”,(++a,b++),a+b+c)这条语句的过程中,a=2(就是说已经自增了),b=3(还没自增)。等这条语句执行完之后,那么a=2 b=4~...

main(){int a=1,b=0;if(!a)b++;else if(a==0){if(a)b+=2;}else b+=...
首先a=1,则if( !a)为假,不执行b++;然后else if( a==0)也为假,不执行后面的if(a),即不会执行b+=2或b+=3;所以 最后结果b还是0;

...void main ( ){ int a = 1 , b = 10do { b - = a ; a + + ; }...
while ( b - - < 0 )是先执行判断b是否<0,判断过后就执行b减1;再根据判断结果,不满足条件就退出循环。所以a的值是2,b的值是8。正确答案是D。

...main() { int a = 1,b = 2; printf ("%d\\n",a=a+); }
1.a= b+ c 所以表达式值为非零,为真,执行printf ("###\\n");2.自增运算符后缀,所以先引用,后自增,m为2,m>2为假,然后m自增一值为3,执行else部分,m+2=5 7.注意是x=2 ,是=,赋值号,也就是x被赋值为2,表达式非零,为真执行y= y+2;8.i为10,所以到case 10部分i+=1;i值为11...

for(a=1,b=1;a<=100;a++)
首先b=1,a=1时,b%3==1为真,执行b+=3;则b=4。又continue 跳过b-=5;开始下一次循环,执行a++;则a变为2。当b为4时,b%3==1为真,执行b+=3;则b=7。a变为3;。。。可知b分别为10、13、16、19时,a分别为4、5、6、7、8 下次循环时,b为22,执行break;跳出循环,所以a为8...

...main() {int a=-1,b=1,k; if((++a<0)&&!(b--<=0))printf("%d%d\\n...
选C if条件中++a是先把a加1(加1后a等于0)后再和0比较,此时a不小于0,条件不成立所以它就不再判断&&后面的条件了。之后就执行else语句打印b==1,a==0;所以选C

以下程序的输出结果是()main(){ int a=3,b=2,c=1;
b=b*(a+b)=3*(3+3)=18 include <stdio.h> void main(){ float a,b,c,d;for(d=1;;d++)\/\/*这里的d就不做要求,它属于整个自然数集合里面,另外a,b,c,d都是分母,所以定义的初始值都为1*\/\/ for(c=1;c<=d;c++)for(b=1;b<=c;b++)for(a=1;a<=b;a++)if(1\/a+...

相似回答