| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1214 人关注过本帖
标题:今年三级上机题,大家帮我看一下,
只看楼主 加入收藏
阿一2004
Rank: 1
等 级:新手上路
帖 子:68
专家分:0
注 册:2004-7-24
收藏
 问题点数:0 回复次数:10 
今年三级上机题,大家帮我看一下,

第一楼我写题目,第二楼我写我的解法。

要求写一个函数,

1:计算500到800之间的素数的个数;

2;对这些素数进行从大到小的排序;

3:间隙加减求最后的结果(如:80,40,60,70 应这么算:80-40+60-70)

其中有两个全局变量;cnt(素数的个数)sum(最后加减后的结果)

搜索更多相关主题的帖子: 上机 
2004-09-18 17:49
阿一2004
Rank: 1
等 级:新手上路
帖 子:68
专家分:0
注 册:2004-7-24
收藏
得分:0 

自认这程序不是太难,可是编好后,总是出问题还把模拟上机的机子搞死机了。

明天就要真正上机考试了。大家帮我看一下我出的问题:

#include "stdio.h" int cnt=0;int sum=0;

void voj() {int i,j,k,m=1; int xx[300]; for(i=500;i<800;i++) for(j=2;j<i;j++) if(i%j!=0) {xx[cnt]=i; cnt++;} for(i=0;i<cnt-1;i++) for(j=i+1;j<cnt;j++) if(xx[i]<xx[j]) {k=xx[i]; xx[i]=xx[j]; xx[j]=k; } for(i=0;i<cnt;i++) {m=m*(-1); sum=sum+xx[i]*m; } } main() { voj(); printf("500到800之间的素数的个数为:%d",cnt); printf("这些数的间隙加减的和为:%d",sum); getch(); }

2004-09-18 17:50
jackie214
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2004-9-14
收藏
得分:0 

#include <stdlib.h> #include <stdio.h>

/* DEFINES ********************/ #define BOOL unsigned int #define TRUE 1 #define FALSE 0

/* GLOBAL *********************/ int cnt = 0; int sum = 0;

/* MAIN ***********************/ void main() { int i,j; BOOL bIsPrime = TRUE; int nPrimeNums[150];

cnt = 0; sum = 0;

/* Step1 find out prime number */ for (i = 501; i < 800; i+=2) { bIsPrime = TRUE; for (j = 3; j <= (i >> 1); j++) { if (i % j == 0) { bIsPrime = FALSE; break; } }

/* find out */ if (bIsPrime) { /* Step2 save the number into array nPrimeNums[150]*/ nPrimeNums[cnt] = i;

/* Step3 calculate the sum */ if (cnt % 2 == 0) { sum += i; } else { sum -= i; }

/* Step4 count the number */ cnt++; } }

/* sort */ for (i = 0; i < (cnt >> 1); i++) { /* exchange */ nPrimeNums[i] = nPrimeNums[i] + nPrimeNums[cnt - 1 - i]; nPrimeNums[cnt - 1 - i] = nPrimeNums[i] - nPrimeNums[cnt - 1 - i]; nPrimeNums[i] = nPrimeNums[i] - nPrimeNums[cnt - 1 - i]; }

/* print the count */ printf("The count of Prime Numbers is: %d\n", cnt);

/* print the number array*/ printf("Prime Numbers are:\n"); for (i = 0; i < cnt; i++) { printf("%d ", nPrimeNums[i]); } printf("\n");

/* print the sum*/ printf("Sum is: %d\n", sum); system("pause");

}

[此贴子已经被作者于2004-09-18 18:56:53编辑过]

2004-09-18 18:35
Jorbo
Rank: 1
等 级:新手上路
帖 子:68
专家分:0
注 册:2004-9-8
收藏
得分:0 

#include "stdio.h" #include"string.h"

int cnt=0; int sum=0;

void main() { void voj(); voj(); printf("500 to 800:%d",cnt); printf("sum:%d",sum); getchar(); }

void voj() { int i,j,k,m=1; int xx[300]; for(i=500;i<800;i++) { for(j=2;j<i;j++) { if(i%j==0)break; if(j==i-1) {xx[cnt]=i; cnt++;} } } for(i=0;i<cnt-1;i++) for(j=i+1;j<cnt;j++) if(xx[i]<xx[j]) {k=xx[i]; xx[i]=xx[j]; xx[j]=k; } for(i=0;i<cnt;i++) { m=m*(-1); sum=sum+xx[i]*m; } }


2004-09-18 18:36
阿一2004
Rank: 1
等 级:新手上路
帖 子:68
专家分:0
注 册:2004-7-24
收藏
得分:0 

哇~~~~先谢了。

可是我题目要求只编写函数VOJ,

其它的主函数等等都是给出来的不能改。

2004-09-18 18:37
阿一2004
Rank: 1
等 级:新手上路
帖 子:68
专家分:0
注 册:2004-7-24
收藏
得分:0 

谢了jober

通过了, 嘻嘻,希望明天好运,再次抽中这个题目哈哈,

2004-09-18 18:43
jackie214
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2004-9-14
收藏
得分:0 

你的算法不太好!

首先:所有大于2的偶数肯定不是素数,全部可以去掉。

第二:由于我们首先获得的是一个正序的序列,所以倒叙只要头尾交换就可以了。

第三:求素数的时候就可以加减,只要判断次数的奇偶,不必要计算-1,乘法完全是浪费,况且连乘2次。

第四:判断因子只要用此数的1/2之前的数去除即可,大于1/2的都不必要计算。

楼主看来还要继续努力啊

2004-09-18 19:01
阿一2004
Rank: 1
等 级:新手上路
帖 子:68
专家分:0
注 册:2004-7-24
收藏
得分:0 

嘻嘻,

楼上的兄弟果然高手,

听君一席话,免我十本书。

正在努力中。

2004-09-18 19:35
pitney
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2004-9-17
收藏
得分:0 
呵呵,我今天上机考试竟然抽到这个题目,简直是笑晕了
2004-09-20 13:02
空前
Rank: 1
等 级:新手上路
帖 子:1146
专家分:0
注 册:2004-5-11
收藏
得分:0 
#include&lt;stdio.h&gt;
int sum=0,cnt=0;
main()
{int i,j,a[300],t,p;
for(i=501;i&lt;=800;i+=2)
{ for(j=2;j&lt;i/2;j++)
if(i%j==0) break;
if(j&gt;=i/2) a[cnt++]=i;
}
for(i=0;i&lt;cnt-1;i++)
{p=i;
for(j=i+1;j&lt;cnt;j++)
if(a[p]&lt;a[j]) p=j;
if(p!=i) {t=a[i];a[i]=a[p];a[p]=t;}
}
for(i=k-1,t=1;i&gt;=0;i--)
{sum=sum+t*a[i];
t=-t;
}
printf("cnt=%d,sum=%d\n",cnt,sum);
getch();
}

[此贴子已经被作者于2004-09-20 18:21:45编辑过]



2004-09-20 18:19
快速回复:今年三级上机题,大家帮我看一下,
数据加载中...
 
   



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

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