| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 479 人关注过本帖
标题:一道C++的题目 怎么解释
只看楼主 加入收藏
hippo4414
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2013-6-29
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:3 
一道C++的题目 怎么解释
#include <stdio.h>
main ()
{ int m,n;
  for (m=10;m<=11;m++)
  {for (n=9;n<m;n++)
     if (!(m%n)) break;
if (n>m-1) printf("%d",n);
    }
  }
 求大神解释啊 为什么是10 11
搜索更多相关主题的帖子: include 
2013-06-29 12:27
lzj12530
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:2
帖 子:264
专家分:841
注 册:2013-3-28
收藏
得分:20 
m%n 是取余数 那么这一语句 !(m%n) 就等效于m==n?1:0; 如果m等于n那么判断为真,否则就为假。而你限定了n<m 所以永远为假。于是只会执行下一个语句,从程序上来看
#include <stdio.h>
 main ()
 {
    int m,n;
    for (m=10;m<=11;m++)  //外for循环
   {
        for (n=9;n<m;n++)   //1.2这两句是一个内部for循环。
          if (!(m%n)) break;//2,这一句永远为假,不执行
        if (n>m-1) printf("%d",n);  //3.这一句是属于外for循环
    }
 }
第一次循环m=10 ,n=9。由于语句2永远不执行,于是只是执行n++命令。则一个循环后就是n=10这时n<m不成立于是跳出内for循环,进入语句3执行.n>m-1成立,于是输出10
第二次m=11,n=9 执行n++ 一直到n=11  进入语句3 于是输出11

C++菜鸟
2013-06-29 14:26
hippo4414
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2013-6-29
收藏
得分:0 
回复 2楼 lzj12530
大神!!!谢谢啊!懂了!
2013-06-29 14:46
ydown
Rank: 2
等 级:论坛游民
帖 子:31
专家分:92
注 册:2013-5-27
收藏
得分:0 
n一出来的值就已经是9了,
符合(n>m-1)的只有:9,10,11
符合(!(m%n))的,只有10,11
2013-06-29 14:52
快速回复:一道C++的题目 怎么解释
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.041236 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved