main() {int i; for(i=1;i+1;i++) {if(i>4) {printf("%d\n",i); break;} printf("%d\n",i++); } }

如题所述

这要看前加加和后加加在编译后的运行顺序。前加加,也就是++i,编译时编译成先自加1,然后在参与预算,而后加加,也就是i++,编译时编译成先参加运算在自加1。你给的程序的目的很明显,就是在1到40中选出一个数再打印出来。而如何选中这个数就看给的2个判断条件,一,i++%5==0;二,++i%8==0。当这两个条件同时满足时这个数就被选中。而这两个条件有先后顺序,第一个条件是后加加,也就是翻译成两句话:i%5==0(判断条件);i=i+1(运算)。而后面那个就翻译成两句话:i=i+1(运算);i%8==0(判断条件)。根据先后顺序,两个判断条件如果合到一起就变成{i%5==0;i=i+1;i=i+1;i%8==0},从左到右依次再合并变成三句话,{i%5==0;i=i+2;i%8==0;}再进一步合并就成了两个判断条件{i%5==0,(i=i+2)%8==0}。在1到40里,满足本身能被5整除,加2后又能被8整除的只有30,而经过加2后的赋值,i就由30变成32了。另外,你要注意的是这个循环,没个循环结束后i的值不是以1递增,也就是i的值不是1,2,3,4,5,6,7……这样变化的,而是1,2,3,4,5,8,9,10,13,14………也就是没遇到5的倍数下个就会加3,至于为什么我相信你肯定能想得懂的。^_^
温馨提示:内容为网友见解,仅供参考
第1个回答  2019-09-22
答案是
b
分析:
void
main()
{
int
i;
for(i=1;i+1;i++)
{
if(i>4)
//i=5时会执行下面{}内的两个语句。
{
printf("%d",i++);
//输出5,i的值变为6
break;
//结束循环,跳到最后一个printf语句。
}
}
printf("%d",i++);
//输出6,程序结束。总的是输出:56
}本回答被提问者采纳

main() {int i; for(i=1;i+1;i++) {if(i>4) {printf("%d\\n",i); br...
static int a[8][8];int i,j,x=0;for(i=0;i<3;i++)for(j=0;j<3;j++)a[i][j]=2*i+j;for(i=0;i<8;i++)for(j=0;j<8;j++) \/\/应该加上这行的。x+=a[i][j];printf("%d",x);2 程序分析:for(i=0;i<3;i++)for(j=0;j<3;j++)a[i][j]=2*i+j...

main() {int i; for(i=1;i+1;i++) {if(i>4) {printf("%d\\n",i); br...
而后面那个就翻译成两句话:i=i+1(运算);i%8==0(判断条件)。根据先后顺序,两个判断条件如果合到一起就变成{i%5==0;i=i+1;i=i+1;i%8==0},从左到右依次再合并变成三句话,{i%5==0;i=i+2;i%8==0;}再进一步合并就成了两个判断条件{i%5==0,(i=i+2)%8==0...

...int main() { int i; for(i=1;i++<4;); printf("%d\\n",i); }...
i++<4,是在进行判断后,再进行自加,当i=3时成立,此时i自加1,结束,再循环,当i=4时,不成立,当i还是要进行一次自加,所以答案是5

...main() { int i; for(i=1;i++<4;) printf("%d\\n",i); } 请解释一...
include<stdio.h>void main(){ int i; for(i=1;i++<4;);\/\/for后面分号(;)结束,说明i是在这里变化的。 \/\/i++<4,这句是关键,i初始化为1,一遍循环后,i=2,满足2<4,所以i=3,满足3<4,然后i=4,4不满足小于4,但是还是会执行i++的操作,所以最后打印出来i=5. pr...

main() { int i;for (i='A';i<'I';i++) printf("%c",i+32);printf("\\...
小写的a到i不包含i

...main() {int i; for(i=1;i<10;i++) printf("%d\\n",i); }
程序执行完了自然就退出了,你在代码最后加上getchar();试试,不要加在for循环体里

main() {int i; for(i=1;i<=40;i++) if(i++%5==0) if(++i%8==0) pr...
前加加,也就是++i,编译时编译成先自加1,然后在参与预算,而后加加,也就是i++,编译时编译成先参加运算在自加1。你给的程序的目的很明显,就是在1到40中选出一个数再打印出来。而如何选中这个数就看给的2个判断条件,一,i++%5==0;二,++i%8==0。当这两个条件同时满足时这个数就...

c语言for(i=1;i+1;i++)什么意思
i=1是赋值初始化表达式只执行一次,i+1是判断,因为i=1,i+1=2非0所以为真,循环一直执行,i++是修正表达式也跟着循环,如for(i=1;i+1;i++){if (i>4){printf(“%d”,i++);break;} printf(“%d”,i++);}结果输出为135,这里for中的i+1只判断不运算,由于有break存在所以能够...

#include<stdio.h> main(){int i;for (i=1;i<5;i++)
结果:首先i=1,i%2=1,执行printf(" * "),然后执行printf("#");,进入下一个循环;其次i=2,i%2=0,执行else continue,直接进入下一个循环;再次i=3,i%2=1,执行printf(" * "),然后执行printf("#");,进入下一个循环;第四i=4,i%2=0,执行else continue,直接进入下一个...

main() {int i; for(i=1;i<=40;i++) if(i++%5==0) if(++i%8==0) pr...
你好!!!首先会循环40次:从i=1到i=40,当i=1;的时候,先执行if(i++%5==0),其中i++表示先是用i当前的值,然后在加一,即if(i++%5==0)等价于if(i%5==0),i++;显然i=1,不成立(此时i已经等于2了)那么就执行下次循环,此时的i=3了,还是、、、最后当i=30的时候,if(i++...

相似回答