问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何用C语言编程计算1000的接乘,精确到个位?

发布网友 发布时间:2022-05-01 12:15

我来回答

5个回答

热心网友 时间:2023-10-11 13:41

/*(在VC++6.0中编译通过、运行通过)
......................................*/
/*计算1000的阶乘,并使输出结果精确到位*/

#include<stdio.h>
#define N 2570
#define M 4
#define K 1000
/*十进制位整理*/
void dp(char ch[],int b)
{
int f;
for(f=0;!ch[f];f++);
for(;b>=f;b--)
if(ch[b]>9)
{
ch[b-1]+=ch[b]/10;
ch[b]%=10;
}
}
/*十进位的复制与清除*/
void dcyc(char cha[],char chc[])
{
int i;
for(i=0;i<N;i++)cha[i]=chc[i];
for(i=0;i<N;i++)chc[i]=0;
}
/*查找非零首位*/
int hf(char ch[])
{
int f;
for(f=0;!ch[f];f++);
return (f);
}
/*不定位乘法计算*/
void muxx(char cha[],char chc[],char chd[])
{
int ia=N-1,id=M-1,a=hf(chd),b=hf(cha),t2;
for(t2=0;id>=a;id--,t2++)
{
int t;
for(t=ia;t>=b;t--)
chc[t-t2]+=cha[t]*chd[id];
dp(chc,N-1);
}
}

void main()
{
char cha[N]={0},chc[N]={0},chd[M]={0};
int i;
cha[N-1]=1;
chd[M-1]=1;
for(i=2;i<=K;i++)
{
chd[M-1]++;
dp(chd,M-1);
muxx(cha,chc,chd);
dcyc(cha,chc);
}
printf("Result is:\n");
for(i=hf(cha);i<N;i++)printf("%u",cha[i]);
putchar('\n');
getch();
}

运行结果:
Result is:
40238726007709377354370243392300398571937486421071463254379991042993851239862902
05920442084869694048004799886101971960586316668729948085589013238296699445909974
24504087073759918823627727188732519779505950995276120874975462497043601418278094
64649629105639388743788648733711918104582578364784997701247663288983595573543251
31853239584630755574091142624174743493475534286465766116677973966688202912073791
43853719588249808126867838374559731746136085379534524221586593201928090878297308
43139284440328123155861103697680135730421616874760967587134831202547858932076716
91324484262361314125087802080002616831510273418279777047846358681701643650241536
91398281264810213092761244896359928705114964975419909342221566832572080821333186
11681155361583654698404670897560290095053761647584772842188967964624494516076535
34081989013854424879849599533191017233555566021394503997362807501378376153071277
61926849034352625200015888535147331611702103968175921510907788019393178114194545
25722386554146106289218796022383897147608850627686296714667469756291123408243920
81601537808898939645182632436716167621791689097799119037540312746222899880051954
44414282012187361745992642956581746628302955570299024324153181617210465832036786
90611726015878352075151628422554026517048330422614397428693306169089796848259012
54583271682264580665267699586526822728070757813918581788896522081643483448259932
66043367660176999612831860788386150279465955131156552036093988180612138558600301
43569452722420634463179746059468257310379008402443243846565724501440282188525247
09351906209290231364932734975655139587205596542287497740114133469627154228458623
77387538230483865688976461927383814900140767310446640259899490222221765904339901
88601856652648506179970235619389701786004081188972991831102117122984590164192106
88843871218556461249607987229085192968193723886426148396573822911231250241866493
53143970137428531926649875337218940694281434118520158014123344828015051399694290
15348307764456909907315243327828826986460278986432113908350621709500259738986355
42771967428222487575867657523442202075736305694988250879689281627538488633969099
59826280956121450994871701244516461260379029309120889086942028510640182154399457
15680594187274899809425474217358240106367740459574178516082923013535808184009699
63725242305608559037006242712434169090041536901059339838357779394109700277534720
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000

热心网友 时间:2023-10-11 13:41

2567位数字呢 后200位是0

热心网友 时间:2023-10-11 13:42

不可能吧,即使用的是double型的数值也会越界啊.我觉得只有弱智才会出这种c问题虎人啊.有点常识的人是不会理这些无聊的人啊.

热心网友 时间:2023-10-11 13:42

递归啊!

热心网友 时间:2023-10-11 13:43

不懂C啊,用C#行吗?
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
写论文值得推荐的app 写论文app大全汇总 有啥好用又免费的文献查阅网站吗? 高仿苹果手机关机关不了机?是怎么回事?有那个朋友请告知! 高仿苹果6开机就是白屏黑苹果,关机关不了 怎么把电子相册保存到QQ空间相册 整个乡村音乐史上,最动人的25首歌 写给狗的歌 右侧肢体肌力4级是什么意思 肌力分级的评定标准 肌力4级是什么意思 分享一下葛根的功效? 葛根资料 XMsH04HM,CMllT一lD:2016DP1226时间这么调这个手环? 8月8号大话西游2烽火连城序列号 葛根煮水有什么功效 密保卡序列号查询 葛根与煨葛根有什么区别? 中药葛根和煨葛根有啥不同 魅族手环显示2016dp5351是怎么回事 CMIITID2017DP7607什么意思 大话2天工开物 煨葛根的作用? 煨葛根和炒葛根的功效区别 紫光手电筒使用时要注意什么吗? 华为nova5如何下载软件 本人在淘宝网上开了一家婚纱店,但是店名没想好想请大家帮帮忙。我想要个可爱又浪漫的婚纱店名。拜托了 求一个很浪漫的婚纱店名, 注意是对于90后的 先谢谢了 本人想了个《喜嫁一生》给点意见吧 华为nova8怎么安装不了蜜柚软件 华为nova2下载软件在哪里? 华为nova+8+SE为什么下载不了万能钥匙? type-c转dp线,连接的macbook pro 2016和dell p2715q 为什么只支持30hz 为什么用手机下载mp3不能听从手机上下载到内存卡上的音乐,放到MP3上播放不了 格式是MP3_百度问一问 卢卡斯是谁? 文明时代2作者卢卡斯是哪国人 lucas到底是姓还是名? 卢卡斯·迪涅的介绍 卢卡斯悖论的概念简介 卢卡斯·特瓦拉的技术特点 澳大利亚国家男子足球队的近代著名球员 卢卡斯·巴斯克斯的荣誉 美团能在电脑上付款嘛 Dr. PAWPAW品牌的产品和澳洲Lucas Pawpaw相比有什么明显的优势吗? 卢卡斯·雷瓦的运动生涯 可以在电脑上用美团买蔬菜水果吗? 美团网手机版抢购的订单,可以在电脑上付款吗 淘宝上如何快速查看同一品牌不同款式谁卖的最好? 淘宝品牌ID怎么知道??? 淘宝上面怎么看整个品牌的销量啊 知道品牌商品编号怎么在淘宝网查询 小度在家1s怎么取消预约播放设置?