C++问题: (1). 第一次运行for循环的时候,a=11,m=11,满足m<=b,然后执行 f

C++问题:
(1). 第一次运行for循环的时候,a=11,m=11,满足m<=b,然后执行 fun(11),结果为true,继续执行函数体内的if语句,这里的 l++%10==0判断,是0%10==0还是1%10==0呢,运行后,l=1,
如果是0%10==0,下面输出m的值就成立了

(2). 第二次执行,此时m=13,i=3,执行fun(13),返回true,再继续if判断,l++%10==0,就变成了1%10==0或2%10==0的判断,显然是不成立,也就是m=13是不会被输出的,
但是运行结果却有输出
求详解,后追加30分,共50作为答谢。

(1)++是增量运算符,前置或后置增量运算符,在把变量的值加1方面作用相同。但++是运算符,表达式++x和x++也有值,++x求出的值是x加1之后的那个值,x++求出的是x加1之前的原值。因此这里l++ % 10是l的原值即 0% 10 =0。

(2)if语句的执行方式为【 if (条件) 语句】,条件成立执行if后的一条语句,当要执行的语句部分为符合语句时要给符合语句加花括号。这里的:

   if(l++%10 == 0)
   cout<<endl;
   cout<<setw(5)<<m;

中if条件成立与否只影响cout<<endl;不影响cout<<setw(5)<<m;,如果想要if控制cout<<setw(5)<<m;要改成:

if(l++%10 == 0)

{

    cout<<endl;

    cout<<setw(5)<<m;

}。

所以第一次执行时,程序输出换行符(空行),之后只有数据(不再输出换行符)。

 

这两种写法的区别如下:

1)原题写法

按原题写法时的输出:

 

2)修改后:

修改后的执行结果:

追问

谢谢,很详细,明白了。

温馨提示:内容为网友见解,仅供参考
第1个回答  2014-10-12

如果上面的一部分程序写成这样,是否就好理解了?


if (l++%10 ==0)
  cout << endl;

cout << setw(5) << m;

m 输出, 只要fun(m)的结果是true,就有输出, 和if(l++%10 ==0)的结果无关;你把它理解成了:

if (l++%10 ==0)
{
  cout << endl;
  cout << setw(5) << m;
}

C++问题: (1). 第一次运行for循环的时候,a=11,m=11,满足m<=b,然后执 ...
(1)++是增量运算符,前置或后置增量运算符,在把变量的值加1方面作用相同。但++是运算符,表达式++x和x++也有值,++x求出的值是x加1之后的那个值,x++求出的是x加1之前的原值。因此这里l++ % 10是l的原值即 0% 10 =0。(2)if语句的执行方式为【 if (条件) 语句】,条件成立执行if后...

C++ for循环 if条件输出, 关于正方形扩展问题
=0&&m!=0&&n!=0条件已经现在了只有一种情况p、n、m都为1的时候(ps:你现在是2*2*2的情况,超过2的情况下满足条件的更多)如果后面的条件成立则不输出,那么你过滤的点只和i相关,假设每个i对应的x[i][2]==n&&x[i][1]==m&&x[i][0]==p都满足条件(似乎不太可能)你最多也过滤8...

C++问题, 4. 下列程序执行完后,x的值是多少?
if (k) x++;解:这个程序每执行一次X的值就加1(除了第一次),这个程序执行了 90次。所以X=89 5.下列描述错误的是:D A)cout输出转义字符’\\n’是使光标移到屏幕的下一行 B)所有变量都要先定义其数据类型后在使用 C)在C++语言中,变量position 和PoSitioN是相同的 D)变量声明可以在C++程序...

C++for函数的问题,for(e=0, ip=m; e<3; e++, ip+=3),m是确定的值,这个...
只是一层循环。一个for只能是一个循环,不过循环一次执行两个条件:e++,ip=ip+3;而已。for(表达式1;表达式2;表达式3) 语句 for语句的执行过程:(1) 先求解表达式1。 (2) 求解表达式2,若其值为真(值为非0),则执行for语句中指定的内嵌语句,然后执行下 面第(3)步。若为假(值为0),则...

C++ for循环问题 下面循环语句执行多少次? for(int i=0 , j=5; i=...
循环了5次。首先,要明白i=j不是i==j。第二,for语句中的i=j即是(i=j)!=0的意思。第三,i=j是赋值语句了。将j值赋给i,所以只有在j=0时,才结束该循环。这是鄙人的意见,望起到抛砖引玉之功效。

为什么c++让一个数组等于另一个数组要用for循环,不能直接a=b或者a[]=...
因为让一个数组等于另一个数组需要每个元素进行赋值,需要for 循环来依次遍历

C++中for循环语句没有end,如何判断结束
注意C语言的for格式:for(){ \/\/循环体 } 如果没有花括号的,以第一个分号作为循环体的结束语句。凡是看不清的,你按上述原则在其前后加花括号就知道了。一般来说,for和if、while这些后面加花括号是一种比较好的编程习惯,有利于代码阅读。

求大神指点,C++循环语句for (int m=0;m<=(t\/0.005);m++)为什么会无效...
首先,我对你的代码写的奇丑无比表示很无语 写代码的习惯是很重要的……其次……你的循环语句并没有无效 根据你的算法……计算结果确实和t无关……我不知道你想表达什么意思……但是你的for (int m=0;m<=(t\/0.005);m++)一句话基本在你的代码里就是一句废话……除非你想占用CPU资源……...

跪求C++中for循环原理:for(i=1;i<=100;i++){循环语句}?
(1)先求表达式 1.(2)求表达式2,若其值为真(值为非0),则执行for语句中指定的内嵌语句,然后执行下面第三步 做若为 假(值为0),则结束循环,转到第5步.(3)求解表达式3 (4)转回上面第(2)步骤继续执行;(5)结束循环,执行for语句下面的一个语句;非常感谢您的耐心观看,如有帮助请采纳,祝生活...

C++循环问题:for(i=0,j=10,k=0;i<=j;i++,j-=3,k=i+j);cout<<k;
逗号表达式是从左到右计算的。

相似回答