标题:[C语言编程接龙竞赛]第一题 设计一个N!的算法
只看楼主
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
结帖率:92.86%
 问题点数:0 回复次数:26 
[C语言编程接龙竞赛]第一题 设计一个N!的算法

题:设计一个N!的算法 (0<=N<=1000)

竞赛时间:现在~周日晚上 10:30止

请用C语言,编译器不做限定。

编程接龙竞赛参赛评分标准(百分制):

1.优良的代码风格  20%
2.详尽的注释 20%
3.严谨的算法    60%

其中3以计算N!快慢为主要衡量标准。

/************************************************************************************/

竞赛事项:

http://www.bc-cn.net/bbs/dispbbs.asp?boardID=5&ID=31744&page=1

由于是第一次,且这一题对初学者还是比较难的,这里给出几个参考贴子

http://www.bc-cn.net/bbs/dispbbs.asp?BoardID=5&ID=3299&replyID=12261&skin=1#top

http://www.bc-cn.net/bbs/dispbbs.asp?BoardID=5&ID=3211&replyID=11889&skin=1

http://www.bc-cn.net/bbs/dispbbs.asp?boardID=179&ID=31537&page=1

/**************************************************************************/

[此贴子已经被作者于2005-10-30 20:19:38编辑过]

搜索更多相关主题的帖子: C语言 接龙 算法 竞赛 设计 
2005-10-28 19:44
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
得分:0 
没人感兴趣,得,我撤了

九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2005-10-29 09:52
mico
Rank: 1
等 级:新手上路
帖 子:96
专家分:0
注 册:2005-7-25
得分:0 

这个超出了范围耶~~怎么做。。。


2005-10-29 11:12
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
得分:0 
[QUOTE]由于是第一次,且这一题对初学者还是比较难的,这里给出几个参考贴子
http://www.bc-cn.net/bbs/dispbbs.asp?BoardID=5&ID=3299&replyID=12261&skin=1#top
http://www.bc-cn.net/bbs/dispbbs.asp?BoardID=5&ID=3211&replyID=11889&skin=1
http://www.bc-cn.net/bbs/dispbbs.asp?boardID=179&ID=31537&page=1[/QUOTE]

九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2005-10-29 11:41
wenyong
Rank: 1
等 级:新手上路
帖 子:251
专家分:0
注 册:2005-8-9
得分:0 
我想问问 如果说数值太大超出范围的话 那么 计算机是怎么算出这个超出范围的值呢 又是怎么把他给保存下来的呢? 保存后又放在什么地方呢?


2005-10-29 12:23
错的人
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2005-10-25
得分:0 
十分想参加 我还没看懂题目所要求的是什么~

能解释的更清楚点吗? 谢谢,请宽恕我这个菜鸟~
2005-10-29 13:36
yuki
Rank: 2
等 级:新手上路
威 望:5
帖 子:508
专家分:0
注 册:2005-2-4
得分:0 

献丑了,贴上我的算法。。

#include <stdio.h>
#include <conio.h>

/*
-- Program detail -----------
Programmer : yuki
Last modify date: 2005-10-29
-----------------------------
*/

/*
NOTICE: If you want to placed this code to another bbs, please note the origin
*/

/* Macro definition as buffer size */
#define BUFFER_SIZE 3000
#define DELIMITER_WIDTH 4

/* Holding the result */
static int array[BUFFER_SIZE] = {0};
/* Holding the data length */
static int vaild_bit = 1;

int main() {
int N;
printf("Input N = ");
scanf("%d",&N);
/* Judge the data which inputed by user */
if(N < 0 || N > 1000) {
printf("Impossible!\n");
getch();
return 0;
}
else {
/* Set the base number as 1 */
array[0] = 1;
/* Integer varible i and j functioned as counter, temp using to calc */
register int i = 1,j,temp;
/* General mutiplication */
while(i <= N) {
for(j = 0; j < vaild_bit; ++j) array[j] *= i;
for(j = 0; j < vaild_bit; ++j) {
if(array[j] < 10 && j == vaild_bit-1) break;
else if(array[j] < 10) continue;
temp = array[j];
array[j] = temp % 10;
array[j+1] += temp / 10;
/* Extend a bit for a new result */
if( array[j+1] >= 10 && j == vaild_bit-1 ) ++vaild_bit;
}
/* Reset the length of new data */
vaild_bit = j + 1;
++i;
}
/* Result published */
printf("%d!(%d bit(s)) = \n",N,vaild_bit);
for( i = vaild_bit - 1; i >= 0; --i ) {
printf("%d",array[i]);
/* Every four figures delimited by a space */
if(!(i % DELIMITER_WIDTH)) putch(0x20);
}
printf("\n");
getch();
}
return 0;
}


我们都在命运湖上荡舟划桨,波浪起伏使我们无法逃离孤行;如果我们迷失方向,波浪将指引我们穿过另一天曙光
2005-10-29 18:12
古墨生香
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2005-9-15
得分:0 
有点难度呀

2005-10-29 18:27
错的人
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2005-10-25
得分:0 

注释应该和语句同行啊 这样看不太直观~

2005-10-29 18:33
错的人
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2005-10-25
得分:0 
这位英语水准可以啊~~注释都是英语的~

我现在刚学c,每天20分钟~~两个月后我会来挑战难题的
2005-10-29 18:34



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-31771-1-1.html




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

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