| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付买域名,送MP3、MP4
高端软件开发 = 年薪十万不是梦赛孚耐:软件保护加密专家身份认证令牌USB KEY买空间,免费送域名(厦门中资源)
共有 227 人关注过本帖
标题:求助:哪一个是正确答案!!!!!!!!!!!!!!!!!!!!!!!
收藏  订阅  推荐  打印 
cbullet
Rank: 2
等级:注册会员
帖子:66
积分:840
注册:2008-3-13
求助:哪一个是正确答案!!!!!!!!!!!!!!!!!!!!!!!

下列程序的功能是:计算500~800之间素数的个数cnt,并按所求素数的值从小到大的顺序,再计算其间隔加、减之和,即第1个素数-第2个素数+第3个素数-第4个素数+第5个素数……的值sum。请编写函数countValue()实现程序的要求,最后调用函数writeDat()把结果cnt和sum输出到文件OUT66.DAT中。
#include<stdio.h>
int cnt,sum;

void countValue()
{
int i,j,half,yy[100];
for(i=500;i<800;i++)
    {
     half=i/2;
     for(j=2;j<=half;j++)
         if(i%j==0) break; /*如果该数不是素数,则退出此层循环*/
         if(j>=half)     /*如果该数是素数,则将该数存入数组yy中*/
           {
            yy[cnt]=i;
            cnt++;        /*统计素数的个数*/
           }
    }
for(i=0,j=-1;i<cnt;i++)      /*计算这些素数的间隔加、减之和*/
    {
     j=j*-1;
     sum+=j*yy[i];
    }
}

void main()
{
cnt=sum=0;
countValue();
printf("素数的个数=%d\n",cnt);
printf("按要求计算得值=%d\n",sum );
writeDAT();
}
writeDAT()
{
FILE *fp;
fp=fopen("OUT66.DAT","w");
fprintf(fp,"%d\n%d\n",cnt,sum);
fclose(fp);
}
答案2:void countValue()
{
int i,j,k=1;
for(i=800;i>=500;i--)
{for(j=2;j<i;j++)
if(i%j==0) break;
if(j>=i)
{cnt++;
sum+=k*i;
k=-1*k;
}
}
}


[ 本帖最后由 cbullet 于 2008-4-9 18:52 编辑 ]
搜索更多相关主题的帖子: 素数  cnt  sum  half  countValue  
2008-4-9 17:04
雨中飞燕
Rank: 2
等级:ID已被封
威望:8
帖子:2200
积分:22984
注册:2007-8-9

搞笑,有低级错误的代码,没有可比性

2008-4-9 17:13
cbullet
Rank: 2
等级:注册会员
帖子:66
积分:840
注册:2008-3-13

第一个对的吗?
2008-4-9 17:14
雨中飞燕
Rank: 2
等级:ID已被封
威望:8
帖子:2200
积分:22984
注册:2007-8-9

for(j=2;j<=half;j++)
         if(i%j==0) break;
看清楚+想清楚

2008-4-9 17:17
cbullet
Rank: 2
等级:注册会员
帖子:66
积分:840
注册:2008-3-13

我刚学C不久,深入的知识我不懂,后天就要考试了,我只想知道哪一个是正确的==!,我知道临时抱佛脚很不行,没时间了
2008-4-9 17:52
now
Rank: 4
来自:广州
等级:高级会员
帖子:544
积分:5872
注册:2007-11-9

half=i/2;
j<=half;???

GIS
Geographic Information System
你在哪里?——》你的坐标?
2008-4-9 18:05
雨中飞燕
Rank: 2
等级:ID已被封
威望:8
帖子:2200
积分:22984
注册:2007-8-9

哈哈,for循环估计你自己写也写不出吧
for(j=2;j<=half;j++)
         if(i%j==0) break;
         if(j>=half)
把这三行,联系在一起去看

[color=white]

[ 本帖最后由 雨中飞燕 于 2008-4-9 18:13 编辑 ]
2008-4-9 18:09
cbullet
Rank: 2
等级:注册会员
帖子:66
积分:840
注册:2008-3-13

我用的是第2種方法,但是答案却是前者,我搞暈了。。。。我只想知道哪一個才是正確的= =?拜託了
2008-4-9 18:13
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.052139 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved