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=... 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作为答谢。
展开
 我来答
匿名用户
2014-10-12
展开全部

(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)修改后:

修改后的执行结果:

追问
谢谢,很详细,明白了。
splashchaos
2014-10-12 · TA获得超过1.1万个赞
知道大有可为答主
回答量:3342
采纳率:0%
帮助的人:3649万
展开全部

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


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;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式