下面do...while语句执行时,循环次数是【 】 int i=3; do { i--; printf("i=%d\n",i); }while (i!=1);

请解释为什么是循环2次。
2. 下面for语句执行时,循环次数是【 】
for (int i=0,j=5;i=j;i++,j--)
printf("i=%d, j=%d\n",i,j);

(A) 0

(B) 5

(C) 10

(D) 无限
这题为什么选B?
请详细解答这两题。谢谢。

第一个是2次,这个没有多少可以好解释的,第一次进去i=2----比较-----第二次进入i=1-----比较结束循环。
第二个是5次,原因是当for语句中间比较条件为0是跳出循环,你的比较条件是i=j,那么当j=0的时候跳出循环,其中这个程序运行的结果应该是
i=5, j=5
i=4, j=4
i=3, j=3
i=2, j=2
i=1, j=1
我模拟一次循环吧
开始i=0,j=5;运行i=j,且这个值不为0及真;运行 printf("i=%d, j=%d\n",i,j);再运行i++,j--;
此时j=4,i=6;回到开始运行i=j…………就这样直到j=0时i=j的结果是0;结束循环;

不知道有没有讲清楚,希望采纳。
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-06-16
先做一次循环,i--之后i变成2;判断i!=1;继续i--;此时i变成1,再执行一次输出,便不满足i!=1;终止!
2》先来看一下,i=0,j=5;判断i是否等于j,等于则执行printf("i=%d, j=%d\n",i,j);注意此时i=j不是赋值而是判断条件哦。
第2个回答  2012-06-16
do---while语句默认至少执行一次,从你给出的函数来看
int i=3; do { i--; printf("i=%d\n",i); }while (i!=1);
i的初始值为3,当第一次执行的do--while的时候,i的值从3变为2,之后执行打印,当打印完之后函数进行判断i!=1,即2!=1,所以再次执行do--while语句,
第二次执行的时候i的值从2变为1,执行打印,打印之后判断i!=1这个条件,发现1==1,所以不符合while执行的条件,跳出do--while语句,所以整体执行2次
第3个回答  2012-06-16
int i=3; do { i--; printf("i=%d\n",i); }while (i!=1);
第一次循环结束后 i==2 2!=1继续下一次循环;
第二次循环结束后 i==1 1==1,不满足i!=1的条件循环停止.

for (int i=0,j=5;i=j;i++,j--)
printf("i=%d, j=%d\n",i,j);

注意看循环条件是i=j;而不是i==j; ,这个i=j的意思就是(i=j)!=0,那么只要j!=0, i就不等于0,j等于0,i就等于0,也就是j==0时,结束循环,每次循环j--,那就是5次后i=j=0;循环也就结束了本回答被提问者和网友采纳
第4个回答  2012-06-16
第一题:第一次循环后,i减1,变为2,再循环;第二次,i减1,变为1;不再循环。
第二题也一时答不上,要好好看下for语句中的三个参数的含义了啊。

...while语句执行时,循环次数是【 】 int i=3; do { i--; printf...
第一个是2次,这个没有多少可以好解释的,第一次进去i=2---比较---第二次进入i=1---比较结束循环。第二个是5次,原因是当for语句中间比较条件为0是跳出循环,你的比较条件是i=j,那么当j=0的时候跳出循环,其中这个程序运行的结果应该是 i=5, j=5 i=4, j=4 i=3, j=3 i=2, j=...

已知int i=3; 在下面do—while语句执行时的循环次数为( )?
第二次进入循环体,i自减1,成为1,输出1 退出循环 所以执行2次

int i=3; while (i--); printf(“%d \\n",i); 这个程序输出的结果是多...
while判断条件为0时结束循环,当i一直减到0时,while(i--)判断条件为0,循环结束。但是在判断过程中i又自减一次变成-1,所以输出i为-1。while循环开始后,先判断条件是否满足,如果满足就执行循环体内的语句,执行完毕后再回来判断条件是否满足,如此无限重复;直到条件不满足时,执行while循环后边的语...

...循环次数是( )。 for(i=2;i==0;) printf("%d",i--); A) 无限次 B...
答案:B 解释:for(i=2;i==0;)中,先i赋值为2,然后检查i==0是否成立,若成立执行循环内部语句

以下程序段循环次数是()for (i=2;i==0;)printf("%d",i--);A无限次B0...
for (i=2;i==0;)printf("%d",i--)因为i=2一开始就进行条件判断,i==0是否成立,显然不成立,故跳出循环,故循环0次。没有i输出0次

...for(i=0,j=1; i<=j+1; i+=2, j--) printf("%d \\n",i); }
只循环一次,输出结果:0

...main() {int i=-1; do{ printf("%d,",i)}while(i++); printf("%d\\...
printf("%d,",i)这句后面少了一个;分号

int i=3;printf(“%d,%d\\n”,i,(++i)+(++i)+(++i)); 的执行结果
关于这个题,不同的编译器有不同的编译规则:VC++ 6.0 : 结果为: 6,16 Tc 2.0 : 结果为: 6,15

程序段int i=3;printf("%d,%d",i,i++);的输出结果
答案是3,3.printf是打印结果这个就不说了。重点说i++.i++和++i的区别是前者是先把i的结果赋值再+1运算后者是先+1运算再赋值。所以程序的具体运行过程是先打印出i的值在加一。如果换成++i答案就是3,4了。

int i=3;printf(“%d,%d\\n”,i,i++); 此语句的运行结果 最好讲讲_百...
i++是后++,要等输出结束后才执行加1运算;即便是前++,如printf("%d,%d,%d",i,++i,++i);,输出也不会是3,4,5,而应该是5,5,4。因为最后一个i变成4后就压栈了,中间一个在4基础上+1自然是5,最前面的一个i值未变。当然这还与编译器有点关系,如果某编译器要等把所有列表项计算...

相似回答