c语言函数累加偶像阶乘 c语言阶乘累加求和

利用C语言求阶乘 例如求20! 用循环和函数两种方法……

对于阶乘,你需要考虑到输入的数的大小,进行判断n0,无阶乘;n==0||n==1阶乘为1;

在余江等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供网站建设、成都网站制作 网站设计制作按需开发,公司网站建设,企业网站建设,品牌网站设计,网络营销推广,外贸网站制作,余江网站建设费用合理。

n1的就用户循环,或者调用函数来做

1.循环

#includestdio.h

void main()

{

float sum=1;

int n,i;

printf("please enter an integer number:");

scanf("%d",n);

printf("\n");

if (n0)

printf("n0,data error!\n");

else if(n1)

{

for(i=2;i=n;i++)

sum=sum*i;

printf("%d!=%10.0f\n",n,sum);

}

else

if(n==0||n==1)

{

sum=1;

printf("%d!=%10.0f\n",n,sum);

}

}

2.函数

#include stdio.h

void main()

{

float fac(int n);

int n;

float y;

printf("input an integer number:");

scanf("%d",n);

y=fac(n);

printf("%d!=%10.0f\n",n,y);

}

float fac(int n)

{

float f;

if(n0)

{

printf("n0,data error");

}

else

if(n==0||n==1)

f=1;

else

f=fac(n-1)*n;

return (f);

}

怎么用c语言函数计算出1-100的阶乘之和?

利用for循环计算1~100的阶乘,将1~100的阶乘累加到sum中就是所求。

#includestdio.h

void main()

{

int i;

double t=1,sum=0; //由于100的阶乘int和long int都放不下.所以用double.

for(i=1;i=100;i++) //从1循环到100.

{

t = t * i; //计算1~100的阶乘.

sum = sum + t; //将1~100的阶乘累加到sum中.

}

printf("%.0f\n",sum); //输出sum.

}

利用for循环计算1~100的阶乘,将1~100的阶乘累加到sum中就是所求。

c语言分别输出1的阶乘到 10的阶乘,并累加阶乘之和。

1、打开Visual Studio,新建一个空白页面。

2、在Main函数的上方,我们写上阶乘函数的框架。

3、然后定义一个变量【result】。

4、然后输入if判断语句。

5、然后就可以写下程序的关键语句。

6、接下来就可以调用输出。

7、最后可以运行测试,这就完成了。

c语言求阶乘累加和

题目中数据很大

于是我们有了高精度算法

思路是什么呢:

一个数组里面每一位存的是十进制数三位(也可以只存一位,但是比较慢)

也可以理解成一千进制

这样能模拟大整数的乘法、加法

#includestdio.h

#includestring.h 

#define max(a,b) (ab?a:b)

int n;

FILE * input, * output;

struct bigint

{

int len;

int num[1100];

}fac,sum;

void mul(int value){//高精度乘单精度

int i;

for (i=1;i=fac.len;i++)

fac.num[i]=fac.num[i]*value;//每个数位乘上数

for (i=1;i=fac.len;i++)

if (fac.num[i]=1000) {//逢千进一

fac.num[i+1]+=fac.num[i]/1000;fac.num[i]%=1000;

}

if (fac.num[fac.len+1]) fac.len++;//位数可能会增加,而且最多增加1

}

void add()//给sum加上fac的值

{

int i;

//由于此时fac永远大于sum所以不用判断sum的长度

for (i=1;i=fac.len;i++)

sum.num[i]+=fac.num[i];//每一位加上fac的值

for (i=1;i=fac.len;i++)

if (sum.num[i]=1000){//逢千进一

sum.num[i+1]++;sum.num[i]-=1000;//因为加法运算不可能往前进2

}

sum.len =fac.len;

if (sum.num[sum.len+1]) sum.len++;

}

void out()//输出

{

int i;

for (i=sum.len;i=1;i--)

{

if (isum.len) //压位高精度一定要判断位数

{//因为如果不是第一位,其他要补0,因为如果这个数是1001,就会变成11

 if (sum.num[i]10) fprintf(output,"00");

else if (sum.num[i]100) fprintf(output,"0");

}

fprintf(output,"%d",sum.num[i]);

}

fputc('\n',output);

}

int main(){

input = fopen("factor.in","r");

output = fopen("factor.out","w");

memset(fac.num,0,sizeof fac.num);

memset(sum.num,0,sizeof sum.num); 

fscanf(input,"%d",n);

int i;

fac.len = sum.len = 1;//初始赋成1

fac.num[1] = sum.num[1] = 1;

for (i=2;i=n;i++)

{

mul(i);

add();

}

out();

fclose(input);fclose(output);

return 0;

}


当前题目:c语言函数累加偶像阶乘 c语言阶乘累加求和
文章出自:http://pwwzsj.com/article/dopdohd.html