C语言做100的阶乘

提示usignedlong型存不下!我不会。溢出溢出!回答者:wanglongzhen的思路还行,和我们老师提示的一样。后面几楼的都行不通。我们老师说这道题搞定就可以去华... 提示usigned long型存不下!我不会。
溢出溢出!
回答者:wanglongzhen的思路还行,和我们老师提示的一样。
后面几楼的都行不通。
我们老师说这道题搞定就可以去华为上班了!!!
______________________________________________________
6楼加点注释好不,转晕了
______________________________________________________
98C语言标准中已经要求有返回值,不能有void
展开
 我来答
百度网友70fd222
推荐于2018-03-20 · TA获得超过311个赞
知道答主
回答量:208
采纳率:0%
帮助的人:89.1万
展开全部
#define MAXLEN 300/*假设做的是300的阶乘,自己可修改*/
#define MAXSUM 300/*用来存放阶乘结果的数组最大长度*/
#include <stdio.h>
#include <math.h>
main()
{
int i,j,k,n,sum,s;
int a[MAXSUM];
for(i=0;i<MAXSUM;i++)
{
a[i]=0;
}//数组赋初值
a[0]=1;
for(i=1;i<=MAXLEN;i++)
{
for(j=MAXSUM-1;j>=0;j--)
{
if(a[j]!=0)
{
n=j+1;
break;
}
}//确定阶乘结果保存到数组中,存到数组的第几个元素
for(k=0;k<n;k++)
{
a[k]=a[k]*i;
}//对存入数组中的数进行乘法运算
for(k=0;k<n;k++)
{
sum=a[k];
if(sum/100>0)
{
a[k]=sum%100;
a[k+1]=a[k+1]+sum/100;
}
}//乘法完成后进行进位
}
for(s=n;s>=0;s--)
{
if(a[s]>=10)
printf("%d",a[s]);
else printf("0%d",a[s]);
}//打印完成的阶乘结果(由于03在数组中只显示3故进行相关操作补足
printf("\n");
}
测试通过 ,够详细了吧
星月小木木
2016-01-15 · TA获得超过3.2万个赞
知道大有可为答主
回答量:2.4万
采纳率:0%
帮助的人:1.1亿
展开全部
#include<stdio.h>
#define Maxlen 10000
#define N 100 //阶数100
int mult(int num[],int len,int n)
{
int i,rem=0;
for(i=0;i<len;i++)
{
rem+=num[i]*n;
num[i]=rem%10;
rem=rem/10;
}
if(rem>0)
{
num[len]=rem%10;
len++;
rem=rem/10;
}
return len;
}
main()
{
int num[Maxlen];
int len=1,i;
num[0]=1;
for(i=2;i<=N;i++)
len=mult(num,len,i);
for(i=len-1;i>=0;i--)
printf("%d",num[i]);
printf("\n");
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
杨合石盒角外阿6384
2006-11-06 · TA获得超过105个赞
知道答主
回答量:122
采纳率:0%
帮助的人:148万
展开全部
main()
{
long double m=1;
int i;
for(i=1;i<=100;i++)
m=m*i;
printf("%e\n",m);

}
科学计数法比较好看些,我认为这样还好些
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友f56c104
2006-11-06 · TA获得超过136个赞
知道答主
回答量:83
采纳率:0%
帮助的人:95.2万
展开全部
你换double型
#include <iostream.h>

void main()
{
double sum;
sum=1;
for(int i=1;i<=100;++i)
{
sum*=i;
}
cout <<sum;
cout <<endl;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
创作者QTEFFB13Ql
2020-06-04 · TA获得超过3847个赞
知道小有建树答主
回答量:3199
采纳率:35%
帮助的人:210万
展开全部
#include<stdio.h>
#define
Maxlen
10000
#define
N
100
//阶数100
int
mult(int
num[],int
len,int
n)
{
int
i,rem=0;
for(i=0;i<len;i++)
{
rem+=num[i]*n;
num[i]=rem%10;
rem=rem/10;
}
if(rem>0)
{
num[len]=rem%10;
len++;
rem=rem/10;
}
return
len;
}
main()
{
int
num[Maxlen];
int
len=1,i;
num[0]=1;
for(i=2;i<=N;i++)
len=mult(num,len,i);
for(i=len-1;i>=0;i--)
printf("%d",num[i]);
printf("\n");
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式