| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2091 人关注过本帖
标题:[分享]100!的程序,大家给点意见
只看楼主 加入收藏
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
结帖率:50%
收藏
 问题点数:0 回复次数:37 
[分享]100!的程序,大家给点意见

/*我的程序只能算到100以内的阶乘,不是因为精度不够,是因为程序有点平常化,大家给点建议吧,尚在改进中...*/


#include<stdio.h>
#define N 200
#include<string.h>
struct Big_number{
int data[N];
int len;
};

void mul_big_number(Big_number &a,int num)
{
int i,t=0,s;
for(i=0;i<a.len;i++)
{
s=a.data[i]*num+t;
a.data[i]=s%10;
t=s/10;
}
if(t>0)
{
a.data[i]=t;
a.len++;
}
}

void Add_big_number(Big_number &a,Big_number &b)
{
int carry,i,len,temp;
len = a.len > b.len ? a.len : b.len;
carry = 0;
for (i = 0;i < len;i++)
{
if(i>=a.len)
{
a.data[i]=0;
}
if(i>=b.len)
{
b.data[i]=0;
}
temp = a.data[i] + b.data[i] + carry;
carry = temp / 10;
a.data[i] = temp % 10;
}
if (carry != 0)
{
a.len = len + 1;
a.data[len] = carry;
}
else
{
a.len = len;
}
}

void Display(Big_number a)
{
int i;
for(i=a.len-1;i>=0;i--)
{
printf("%d",a.data[i]);
}
printf("\n");
}
int main()
{
Big_number a,b,c;
int i,j;
a.data[0]=1;
a.len=1;
for(i=2;i<=100;i++)
{
for(j=0;j<a.len;j++)
{
b.data[j]=a.data[j];
c.data[j+1]=a.data[j];
}
b.len=a.len;
c.len=a.len+1;
c.data[0]=0;
if(i%10)
{
mul_big_number(b,i%10);
}
else
{
mul_big_number(b,i%10);
}
//Display(b);
if(i/10)
{
mul_big_number(c,i/10);

//Display(c);
Add_big_number(b,c);
}
for(j=0;j<b.len;j++)
{
a.data[j]=b.data[j];
}
a.len=b.len;
memset (b.data,0,sizeof (int) * N);
memset (c.data,0,sizeof (int) * N);
// Display(a);
}
for(i=a.len-1;i>=0;i--)
{
printf("%d",a.data[i]);
}
printf("\n");
return(0);
}

搜索更多相关主题的帖子: 意见 分享 
2006-09-22 13:51
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
100!=93326215443944152681699238856266700490715968264381621468592963895217599993229915
608941463976156518286253697920827223758251185210916864000000000000000000000000

倚天照海花无数,流水高山心自知。
2006-09-22 13:52
小小贝
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2006-9-21
收藏
得分:0 
怎么那么长啊???看的眼都花了啊!!!!!
100!=1*2*3*4*5.....*100?
2006-09-22 16:44
小小贝
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2006-9-21
收藏
得分:0 
斑竹太牛了.顶一下
2006-09-22 16:56
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
没什么,因为有人问了,就顺便写了一下,还在改进之中...
希望各位指出,谢谢.

倚天照海花无数,流水高山心自知。
2006-09-22 17:11
303770957
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:6
帖 子:838
专家分:2125
注 册:2005-9-10
收藏
得分:0 
你能计算出来10000!=?就好了,呵呵!

♂ 死后定当长眠,生前何须久睡。♀
2006-09-22 20:02
多维数组
Rank: 1
等 级:新手上路
帖 子:238
专家分:0
注 册:2006-8-16
收藏
得分:0 
太长了!!!晕
100!是吗?

#include <stdio.h>
int main() {
int q;
int i;
q=1;
for(i=1;i<=100;i++) {
q=q*i;
}
printf("%d",q);
return 0;
}

有事发邮件:tzp_1210@
2006-09-22 20:37
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 

楼上的是计算不出来的.数据太大了.

计算1000!也可以,只不过要改几个地方,这个程序还在改进中...
谢谢你们的建议.


倚天照海花无数,流水高山心自知。
2006-09-22 20:49
303770957
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:6
帖 子:838
专家分:2125
注 册:2005-9-10
收藏
得分:0 

♂ 死后定当长眠,生前何须久睡。♀
2006-09-22 21:34
★红狼
Rank: 2
等 级:论坛游民
帖 子:190
专家分:17
注 册:2006-7-12
收藏
得分:0 

有空我也写个。数组来做。应该不很难吧。

2006-09-22 21:55
快速回复:[分享]100!的程序,大家给点意见
数据加载中...
 
   



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

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