| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2091 人关注过本帖
标题:[分享]100!的程序,大家给点意见
取消只看楼主 加入收藏
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
结帖率:50%
收藏
 问题点数:0 回复次数:10 
[分享]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
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
没什么,因为有人问了,就顺便写了一下,还在改进之中...
希望各位指出,谢谢.

倚天照海花无数,流水高山心自知。
2006-09-22 17:11
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 

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

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


倚天照海花无数,流水高山心自知。
2006-09-22 20:49
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
主要是考虑数据太大了,而且精度也高,所以麻烦一点.写的不好,让大家看的头晕了

倚天照海花无数,流水高山心自知。
2006-09-23 19:46
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
学生

倚天照海花无数,流水高山心自知。
2006-09-23 19:52
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
看看他们的帖,原来他们好早就写了.
比我的好多了.
楼上的要说话到水区来...

倚天照海花无数,流水高山心自知。
2006-09-23 20:08
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
baidu大哥 能不能发给我你说的那个程序啊.

好好学习一下,谢了.

倚天照海花无数,流水高山心自知。
2006-09-23 20:17
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
将大数乘以一位数,模拟小学乘法做的.

倚天照海花无数,流水高山心自知。
2006-09-23 22:05
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
我用的是数组输出的,每个元素就是一位.

倚天照海花无数,流水高山心自知。
2006-09-24 10:12
快速回复:[分享]100!的程序,大家给点意见
数据加载中...
 
   



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

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