| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 438 人关注过本帖
标题:C++ 新手 下面这个程序正确 但不懂第二个 IF 的逻辑 我认为第二个 if 等于 ...
只看楼主 加入收藏
於晓琪123
Rank: 1
等 级:新手上路
帖 子:79
专家分:0
注 册:2014-11-4
结帖率:71.43%
收藏
 问题点数:0 回复次数:8 
C++ 新手 下面这个程序正确 但不懂第二个 IF 的逻辑 我认为第二个 if 等于 else 但实际上不等于
#include <iostream>
#include <cmath>
using namespace std;
int main()
{int n=2,i,k,sum=0;
for(n;n<1000;n++)
{if(n>1)
{for(i=2;i<=int(sqrt(n));i++)
{k=n%i;
if(k==0)
{break;}
}
if(k!=0)      
{sum=sum+n;
cout<<n<<" ";
}
}
}
cout<<endl;
cout<<"sum"<<sum<<endl;
return 0;
}
搜索更多相关主题的帖子: include 
2014-11-04 22:20
於晓琪123
Rank: 1
等 级:新手上路
帖 子:79
专家分:0
注 册:2014-11-4
收藏
得分:0 
这个地方第二个if(K!=0)
然后就sum+=N 了  那不就是没有走循环直接下来了吗?
 求大神解说一下 为什么
2014-11-04 22:22
stop1204
Rank: 9Rank: 9Rank: 9
来 自:福建省
等 级:贵宾
威 望:22
帖 子:295
专家分:1151
注 册:2013-9-8
收藏
得分:0 
if (k == 0)
{
    break;
}


这个就已经跳出for循环了,而不是跳出if的判断语句, 然后跳出去就是直接到for循环的结尾.
你的第二个for循环的结尾后一句就是 if (k != 0)

其实你的程序是有经过循环的.你在每个地方加个cout输出一个信息提示,  运行你的程序你就知道了

[ 本帖最后由 stop1204 于 2014-11-5 08:28 编辑 ]

hl928452957@gmail点com

2014-11-05 08:19
於晓琪123
Rank: 1
等 级:新手上路
帖 子:79
专家分:0
注 册:2014-11-4
收藏
得分:0 
回复 3 楼 stop1204
是不是就是说第二个for只进行第一个if的循环判断,等跳出循环之后才进行第二个if的判断。  ( 换而言之,是不是for语句  只进行for下面一个if的判断循环  等跳出循环之后才进行第一个if之后的if 或者其他的东西
2014-11-05 16:33
於晓琪123
Rank: 1
等 级:新手上路
帖 子:79
专家分:0
注 册:2014-11-4
收藏
得分:0 
回复 3 楼 stop1204
不对  我刚刚简化了一下那个程序 是不是for循环是循环它括号里面的跳出去了才去括号外面  是吧...
2014-11-05 16:43
於晓琪123
Rank: 1
等 级:新手上路
帖 子:79
专家分:0
注 册:2014-11-4
收藏
得分:0 
回复 2 楼 於晓琪 123
我刚刚按刚刚的对if for 及大括号的理解  编了个这个
{int a,b;
cin>>a;
for(b=2;b<a;b++)
{if(a%b==0)
cout<<"notprime"<<endl;
break;
}
if(a%b!=0)
cout<<"isprime"<<endl;
return 0;
}

判断素数的    还是有问题  能请教一下  到底哪里出问题了嘛?
2014-11-05 17:05
stop1204
Rank: 9Rank: 9Rank: 9
来 自:福建省
等 级:贵宾
威 望:22
帖 子:295
专家分:1151
注 册:2013-9-8
收藏
得分:0 
程序代码:
int main()
{
    {
        int a=5, b;
        cin >> a;
        for (b = 2; b < a; b++)   //如果b<a 就跳出循环,否则进如循环
        {
            if (a % b == 0)
                cout << "notprime" << endl;        //就只有这条语句是属于if
            break;                    //不管你if怎么判断.for循环只执行一次,
        }

        if (a % b != 0)
            cout << "isprime" << endl;
        return 0;
    }
}

//当你输入4时候将输出 notprime  输入5则为isprime


hl928452957@gmail点com

2014-11-05 17:40
stop1204
Rank: 9Rank: 9Rank: 9
来 自:福建省
等 级:贵宾
威 望:22
帖 子:295
专家分:1151
注 册:2013-9-8
收藏
得分:0 
回复 5 楼 於晓琪 123
不是,
for循环的第二个语句结果为false就跳出循环, 或者 for循环里面存在break
或者 存在goto . 这些都是可以跳出循环的

hl928452957@gmail点com

2014-11-05 17:42
於晓琪123
Rank: 1
等 级:新手上路
帖 子:79
专家分:0
注 册:2014-11-4
收藏
得分:0 
回复 7 楼 stop1204
恩恩  终于懂了 谢谢
2014-11-05 22:28
快速回复:C++ 新手 下面这个程序正确 但不懂第二个 IF 的逻辑 我认为第二个 i ...
数据加载中...
 
   



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

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