首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 熟悉c++的请进 [已结帖,结帖人:chenShuyuNO1]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • chenShuyuNO1
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 结帖率:
    发表于:2008-11-05 19:25:39 楼主
    #include <iostream>
    using namespace std;
    int main()
    {
    int i,n;
    cout < <"请输入一个整数:";
    cin>>n;
    for(i=2;i <n;i++)
    {
    if(n%i==0)
    cout < <"该数不是质数" < <endl;
    else
    cout < <"该数是质数" < <endl;
    }
    return n;
    }我这个程序的目的是先判断是不是质数,然后在主程序中实现输入输出
    可是我这个不能一直输入整数来判断,请帮我修改一下,谢谢!
    20  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • lann64
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-05 19:33:241楼 得分:0
    算法是错的。模i为0不是质数,不为0 不一定是质数呀,要所有的i都不为0才是质数呢。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • CEO27
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-05 19:33:432楼 得分:0
    逻辑错误,如果for循环后没有n%i==0为真,则为质数
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • chenShuyuNO1
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-05 19:56:323楼 得分:0
    那该咋个去修改呢?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • yuhudie203
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-05 20:03:454楼 得分:8
    C/C++ code
    int main() { int i,n; bool flag = false; //用来做判断标志位 cout <<"请输入一个整数:"; while(cin>>n) { if(n<=1) { cout<<"输入有误请重新输入:"<<endl; cin>>n; } if(n == 'p') { return; } for(i=2;i<n;i++) { if(n%i==0) flag = true; } if(flag == true) { cout<<n<<"不是质数"<<endl; } else { cout<<n<<"是质数"<<endl; } flag = false; } // return n; }


    上面的代码应该可以满足你的需求
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • chenShuyuNO1
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-05 20:20:105楼 得分:0
    可不可以在我的原程序上面修改,我们是初学者,不要太复杂了。还要满足可以一直输入数字来判断这个条件。谢谢!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • sweetjian
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-05 20:20:486楼 得分:0
    if(i>1){
    int i=n-1;
    for(;n%i!=0;i--);
    if(i==1)cout < <"该数是质数";
    else cout < <"该数不是质数";
    }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • chenShuyuNO1
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-05 20:40:467楼 得分:0
    楼上的你这个不满足输入数字来判断是不是质数这个条件吧?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • kdy88120
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-05 20:43:198楼 得分:4
    #include <iostream>
    using namespace std;
    void main()
    {
    int i,n,j,x(0);
    cout < <"请输入你要判断到的数:";
    cin>>n;
    if(n <3){cout < <"error" < <endl;return 0;}
    for(i=3;i <=n;i++)
    {
    for(j=2;j <i;j++)
    {
    if(j%i==0)
    {cout < <"该数不是质数" < <endl;break;}//这里不能用ELSE,而且必须加入一个BREAK,如果判断出不是素数直接出循环
    cout < <"该数是质数" < <endl;
    }
    x++;//统计个数,如果有需要的话
    }
    假如你输入20,则这个程序可以判断从3到20中有哪些是素数,并且有X来统计素数的个数.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • kdy88120
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-05 20:50:239楼 得分:3
    另外,你的这个算法是错误的
    for(i=2;i <n;i++)
    {
    if(n%i==0)
    cout < <"该数不是质数" < <endl;
    else
    cout < <"该数是质数" < <endl;
    }
    假如你输入7
    则程序会这样执行:第一次循环,也就是当i=2的时候,判断出IF语句为假,所以执行else语句,输出"该数是质数"
                  第二次循环,i=3的时候,又判断出IF语句为假,又去执行ELSE语句,再次输出"该数是质数"
                  这样下去,总共会输出n-2次"该数是质数"
    假如你输入9
    则程序会这样执行:第一次循环,也就是当i=2的时候,判断出IF语句为假,所以执行else语句,输出"该数是质数"
                  第二次循环,i=3的时候,又判断出IF语句为真,所以执行IF语句后面的语句,输出"该数是不是质数"
    从而不能达到判断的目的
    因为你说你是初学者,所以我说的比较详细,不知道你能看懂不
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zgy1353246
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-05 21:02:1110楼 得分:0
    引用 4 楼 yuhudie203 的回复:
    C/C++ code
    int main()
    {
        int i,n;
        bool flag = false; //用来做判断标志位
        cout < <"请输入一个整数:";
        while(cin>>n)
        {
        if(n <=1)
        {
        cout < <"输入有误请重新输入:" < <endl;
        cin>>n;
        }
        if(n == 'p')
        {
            return;
        }
        for(i=2;i <n;i++)
        {
        if(n%i==0)
            flag = true;   
        }
        if(flag == true)
        {
            cout <…



    写的好,学习了 ~!!!!!!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ylx1982
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-05 21:08:3511楼 得分:0
    这个教科书上好像有过.
    不过我忘了!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • chenShuyuNO1
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-05 21:15:4412楼 得分:0
    8楼的貌似你这个程序运行出来有问题阿
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • kdy88120
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-05 21:21:1013楼 得分:0
    我没有实际编译,等我看看先
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • kdy88120
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-05 22:31:0214楼 得分:2
    #include <iostream>
    using namespace std;
    void main()
    {
    int i,n,j,x(0);
    cout < <"请输入你要判断到的数:";
    cin>>n;
    if(n <3)cout < <"error" < <endl;//主函数没有返回值,所以不用RETURN
    else
    for(i=3;i <=n;i++)
    {
    for(j=2;j <i;j++)
    {
    if(j%i==0)
    {cout < <"该数不是质数" < <endl;break;}//这里不能用ELSE,而且必须加入一个BREAK,如果判断出不是素数直接出循环
    cout < <"该数是质数" < <endl;
    x++;//统计个数,如果有需要的话,必须放在内层循环中统计
    }
    }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • matthous
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-05 23:54:0915楼 得分:0
    错的很多,要改还真得大动作~
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hqin6
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-06 00:50:5816楼 得分:0
    汗~~~都是些啥啊??
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zxg0404
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-06 06:10:5017楼 得分:0
    乱78糟的...
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • holidiess
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-06 10:06:3318楼 得分:2
    bool IsPrime(int nNumber)    //是否为质数函数
    {
    ASSERT(nNumber>0);
    for(int i=0; i <nNumber; i++)
    if(nNumber%i) return false;
    return true;
    }

    int main()
    {
    int m_nNumber;
    while(cin>>m_nNumber)
    {
    if(n==0) break; //输入0,则退出
    if(IsPrime(m_nNumber))
    count < < "%d是质数" < < m_nNumber < < endl;
    else
    count < < "%d不是质数" < < m_nNumber < < endl;
    }
    return 0;
    }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • holidiess
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-06 10:08:4019楼 得分:0
    引用 4 楼 yuhudie203 的回复:
    C/C++ code
    int main()
    {
        int i,n;
        bool flag = false; //用来做判断标志位
        cout < <"请输入一个整数:";
        while(cin>>n)
        {
        if(n <=1)
        {
        cout < <"输入有误请重新输入:" < <endl;
        cin>>n;
        }
        if(n == 'p')
        {
            return;
        }
        for(i=2;i <n;i++)
        {
        if(n%i==0)
            flag = true;   
        }
        if(flag == true)
        {
            cout <…


    怎么输出时为C格式?
    我一输出,格式都不对了,左边的TAB全没了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • qingkongyihe2008
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-06 10:40:5420楼 得分:1
    引用 18 楼 holidiess 的回复:
    bool IsPrime(int nNumber)    //是否为质数函数
    {
    ASSERT(nNumber>0);
    for(int i=0; i <nNumber; i++)
    if(nNumber%i) return false;
    return true;
    }

    int main()
    {
    int m_nNumber;
    while(cin>>m_nNumber)
    {
    if(n==0) break; //输入0,则退出
    if(IsPrime(m_nNumber))
    count < < "%d是质数" < < m_nNumber < < endl;
    else
    count < < "%d不是质数" < < m_nNumber < < endl;
    }
    return 0;
    }

    此正解
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Rain208
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-06 11:32:1021楼 得分:0
    while(cin>>n)
    {
    do...
    };
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Rain208
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-06 11:32:4222楼 得分:0
    可是我这个不能一直输入整数来判断,请帮我修改一下,谢谢!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ldxfsh
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-06 11:50:1823楼 得分:0
    #include <iostream>
    using namespace std;
    int main()
    {
    int i,n=0;
    boolean flag;
    while( n != -1) { //输入-1,将结束循环
      cout < <"请输入一个整数:";
      cin>>n;
      flag = false;
      for(i=2;i <n;i++){
          if(n%i==0) {
            cout < <n < <":该数不是质数" < <endl;
            flag = true; //该数是质数,将flag置为true;
            break;      //如果已经知道算出该数为质数了,就不用再循环了
          }
          //这里不用直接用else输出,比如说15%2!=0,在这里就要输出15是质数,但15不是质数
      }
      if(flag == false)
          cout < <n < <":该数是质数" < <endl; //如果flag值是false,说明该数为质数
    }
    return 0;
    }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • lzh9955
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-06 11:56:3324楼 得分:0
    up
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • cyj626
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-06 13:18:0225楼 得分:0
    -_-!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • sweetjian
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-06 21:11:0026楼 得分:0
    恩,我在6楼写错了,那天在网吧没专心不好意思。
    改正:
    C/C++ code
    #include <iostream.h> int main(){ int n; do{ cout<<"输入一个整数,输入-1 退出:"; cin>>n; if(n==-1) break; if((n%1==0)&&(n>=2)){ int i=n-1; for(;n%i!=0;) i--; if(i==1){ cout<<"该数是质数"<<endl; }else cout<<"该数不是质数"<<endl; }else cout<<"该数不是质数"<<endl; }while(1); return 0; }
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved