| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 441 人关注过本帖
标题:关于循环的一个问题 急
只看楼主 加入收藏
mucshisan
Rank: 2
等 级:论坛游民
帖 子:29
专家分:19
注 册:2009-8-25
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:3 
关于循环的一个问题 急
#include<stdio.h>
#include<math.h>
main()
{
    int m=100;
    int k,i,d,n=0;
for (m=101;m<=200;m=m+2)
   {
       k=sqrt(m);
       for (i=2;i<=k;i++)
        if(m%i==0) break;
           if(i>=k+1)
             {
                   printf("%d",m);
                   n=n+1;
              }
                  if(n%10==0)
              printf("\n");
     }
  printf("\n");
  }
输出100-200内的所有素数,结果显示为:
  101 103 107 109 113 127 131 139 149
  151 163 167 173 179 181 191 193 197
  199
  此为正确答案。
  但是若在  for (i=2;i<=k;i++)
             if(m%i==0) break;之间插入 d==m%i;
  101 103 105 107 109 111 113 115 117 119
  121 123 123 127 129 131 133 135 137 139
  ...                                 159
  161     省略                        179
  181....                             199
若插入 d==m%i;同时将if(m%i==0) break;改成if(d==0) break;后结果为:
  101 103 105 107 109 111 113 115 117 119
  前辈们给我解释下 这是为什么呢?我是初学者,用的是谭浩强老师的书,前五章还好学,但循环时就有点吃力了,不理解呀。
搜索更多相关主题的帖子: include 
2009-09-06 20:29
gzdy2008
Rank: 2
来 自:湖北
等 级:论坛游民
帖 子:13
专家分:80
注 册:2009-8-29
收藏
得分:13 
嗨 我说呢 同学 关键是你的那个for 语句的那个{}符号 的问题
如果你这样:
for (m=101;m<=200;m=m+2)
   {
       k=sqrt(m);
       for (i=2;i<=k;i++)
           d=m%i;
        if(d==0) break;
肯定会出问题 应为你的那个 if(d==0) break; 是根据上面的d=m%i;来的 可因为你没有{}  for语句运行到d=m%i;  碰到这里的;就结束了  也就是说下面的语句根本就没参与循环 所以才会出错  记得  如果for语句下面的执行语句超过一句 就要用{}吧他括起来  不然会出错的


i love what i want to do
2009-09-06 21:01
jimmywood
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:30
专家分:109
注 册:2009-8-10
收藏
得分:7 
养成个习惯
无论循环体有多少句语句
把循环体都用大括号括起来就好了
这样也方便看和程序维护
2009-09-07 10:44
mucshisan
Rank: 2
等 级:论坛游民
帖 子:29
专家分:19
注 册:2009-8-25
收藏
得分:0 
非常的感谢大家的指导呀,gzdy2008老师说的很对,循环的注意事项,我明白了
2009-09-08 16:59
快速回复:关于循环的一个问题 急
数据加载中...
 
   



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

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