| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 432 人关注过本帖
标题:这个程序的问题出在哪里了?
只看楼主 加入收藏
huaheshang
Rank: 2
来 自:日照
等 级:论坛游民
帖 子:91
专家分:37
注 册:2010-12-7
结帖率:79.31%
收藏
已结贴  问题点数:20 回复次数:7 
这个程序的问题出在哪里了?
求[3-1000]之间最大的五个素数之和。


#include"stdio.h"
#include"math.h"
int main()
{
  int i,n,flag,sum=0,max[100],x=0,k;
  for(i=3;i<=1000;i++)
  {
     flag=1;
    for(n=2;n<i;n++)
    {
       if(i%n==0)
       {
         flag=0;
         break;
       }

    }
   if(flag)
   {
   
      max[x]=i;
      x++;

   }
  }
  for(k=1;k<=5;k++)
  {
      sum=sum+max[x-k];
      }
  printf("sum=%d",sum);
  getchar();
  return 0;
}
错出在哪里了,为什么运行不了?
搜索更多相关主题的帖子: include 最大的 
2014-02-25 14:30
xtaymt
Rank: 2
等 级:论坛游民
帖 子:9
专家分:15
注 册:2014-2-13
收藏
得分:0 
我只想问一句max[x-k]是什么意思?
2014-02-25 14:52
stephencai82
Rank: 2
等 级:论坛游民
帖 子:3
专家分:10
注 册:2014-2-24
收藏
得分:10 
我个人觉的经过最后一轮x++,
for(k=1;k<=5;k++)
  {
      sum=sum+max[x-k];    //这里是不是max[x-k]越界了?
  }
sum=sum+max[x-k];
2014-02-25 14:59
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:3 
程序代码:
#include <stdio.h>

int issh(int x)
{
//返回1 表示是一个素数
    if(x<=1) return 0;
    if(x>1)    for(int i=2;i<x;i++) if(x%i==0) return 0;
    return 1;
}


int main()
{
    int i;
    int cnt=0;
    int sum=0;
    int ss[5];
    for(i=1000;i>1;i--)
    {
       if(issh(i)==1)
       {
           ss[cnt]=i;
           sum+=i;
           cnt++;
       }
       if(cnt>4) break;

    }
    printf("\n\n最大的5个素数是 %4d%4d%4d%4d%4d 和是%d\n",ss[0],ss[1],ss[2],ss[3],ss[4],sum);
    return 0;
}



DO IT YOURSELF !
2014-02-25 15:43
yymingkong
Rank: 1
等 级:新手上路
帖 子:2
专家分:2
注 册:2014-2-24
收藏
得分:0 
不懂呢。
2014-02-25 17:23
神机军师
Rank: 7Rank: 7Rank: 7
来 自:游鱼潜水
等 级:黑侠
威 望:2
帖 子:202
专家分:542
注 册:2013-12-21
收藏
得分:3 
程序代码:
// 求[3-1000]之间最大的五个素数之和。

#include<stdio.h>
void main()
{
    int i = 0;
    int j = 0;
    int a = 0;
    int b = 0;
    int s = 0;
    int flag = 0;
    int temp[5];

    temp[0] = 3;        // 3 的判定不符合下列判定式 先赋给temp数组第一个
    i = 1;              // temp数组下标指向第二个元素
    for (a = 4; a <= 1000; a++)     // for 大循环 判定 4-1000是否素数并处理
    {
        for (b = 2, flag = 0; (b <= a/2) && (flag == 0); b++) // 该循环判定是否是素数
        {
            if (a % b == 0)
            {
                flag = 1;
            }
        } // 判定素数结束
        if (!flag)       // 素数的处理方式
        {
            if (i == 5)  // 该选择结构处理temp数组 只存储最后的五个素数 如果有新的素数就依次替代
            {
                for (j = 0; j < 4; j++)
                {
                    temp[j] = temp[j+1];
                }
                temp[4] = a;
                i = 4;
            }
            else
            {
                temp[i] = a;
            }
            i = i + 1;
        } // 素数处理方式结束
    } // a 的大循环结束
    for (j = 0, s = 0; j < 5; j++)
    {
        printf("\n%d\n", temp[j]);      // 输出五个素数
        s = s + temp[j];
    }
    printf("[3-1000]之间最大的五个素数之和是:%d.\n", s);
}


你的错误应该是 数据溢出。。。。 呃这么说不准确。。。嗯
这么说吧 3 - 1000里面的素数不只有100个 嗯

未知令人期待!
2014-02-25 19:21
神机军师
Rank: 7Rank: 7Rank: 7
来 自:游鱼潜水
等 级:黑侠
威 望:2
帖 子:202
专家分:542
注 册:2013-12-21
收藏
得分:4 
好吧 我突然发现一个很贱格的问题 为什么从3开始判定呢,从1000由大到小就行了嘛。
什么时候找到五个什么时候结束得了

[ 本帖最后由 神机军师 于 2014-2-25 19:28 编辑 ]

未知令人期待!
2014-02-25 19:25
书生等待
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:8
帖 子:280
专家分:689
注 册:2013-2-22
收藏
得分:0 
回复 4楼 wp231957
赞一个!作为小白,你这个简单的例子让我意思到了程序模块化的优势,可读性真的强很多!
2014-02-25 20:07
快速回复:这个程序的问题出在哪里了?
数据加载中...
 
   



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

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