Ⅰ 用c語言編程,求從1的階乘一直加到20的階乘。
1、首先打開C語言編輯器,新建一個c語言的文件,導入頭文件並設置一個主函數:
Ⅱ 用C語言求1~20的階乘之和!
/**
**程序描述:求求1~20的階乘之和。
**演算法思路:先求出每一項的階乘值,然後將所有項的階乘值相加。
*/
#include<stdio.h>
#defineN20
typedefunsignedlonglonguInt64;//自定義類型
//求出每一項階乘值的函數
uInt64fact(intn)
{
inti;
uInt64s;
for(i=s=1;i<=n;i++)
s*=i;//從1開始循環累加相乘
returns;
}
intmain()
{
uInt64s;
inti;
for(i=1,s=0;i<=N;i++)
s+=fact(i);//從第1項開始循環累加每一項的階乘值
printf("1!+2!+3!+……+20!=%llu ",s);
return0;
}
Ⅲ c語言求階乘累加和
題目中數據很大
於是我們有了高精度演算法
思路是什麼呢:
一個數組裡面每一位存的是十進制數三位(也可以只存一位,但是比較慢)
也可以理解成一千進制
這樣能模擬大整數的乘法、加法
#include<stdio.h>
#include<string.h>
#definemax(a,b)(a>b?a:b)
intn;
FILE*input,*output;
structbigint
{
intlen;
intnum[1100];
}fac,sum;
voidmul(intvalue){//高精度乘單精度
inti;
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
}
voidadd()//給sum加上fac的值
{
inti;
//由於此時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++;
}
voidout()//輸出
{
inti;
for(i=sum.len;i>=1;i--)
{
if(i<sum.len)//壓位高精度一定要判斷位數
{//因為如果不是第一位,其他要補0,因為如果這個數是1001,就會變成11
if(sum.num[i]<10)fprintf(output,"00");
elseif(sum.num[i]<100)fprintf(output,"0");
}
fprintf(output,"%d",sum.num[i]);
}
fputc(' ',output);
}
intmain(){
input=fopen("factor.in","r");
output=fopen("factor.out","w");
memset(fac.num,0,sizeoffac.num);
memset(sum.num,0,sizeofsum.num);
fscanf(input,"%d",&n);
inti;
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);
return0;
}
Ⅳ C語言中階乘相加
#include<stdio.h>
main()
{
int a;
double b=1,c=1,d=0;
printf("\nplease input a number\n");
scanf("%d",&a);
for(;b<a;++b); /*這里的for(;b<a;++b); 分號要去掉:b<=a;
就是說你輸入3的話,只有1*2,應該是1*2*3,其他沒任何問題*/
{
c=c*b;
d+=c;
}
printf("\n%f",d);
}
/*這里的for(;b<a;++b); 分號要去掉:b<=a;
就是說你輸入3的話,只有1*2,應該是1*2*3,其他沒任何問題*/
Ⅳ c語言階乘求和
#include<stdio.h>
voidmain(){
inti,n,k=1,s=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{k*=i;s+=k;}
printf("%d",s);
}
//運行示例:
Ⅵ c語言編寫 階乘累加
#include<stdio.h>
long cal(int i)
{
long s;
int j;
for(j=1,s=1;j<=i;j++)
s=s*j;
return s;
}
main()
{
int i;
long sum=0;
for(i=1;i<=3;i++)
sum+=cal(i);
printf("%d\n",sum);
}
這個是c語言編程的程序,我已經在vc裡面通過調試了,1樓的好像寫的c++的程序吧
Ⅶ 用C語言求1到N的階層 的累加和
思路:先定義一個函數用來計算一個數的階乘,在從1到N循環依次就其累加和,最後輸出累加和即可。
參考代碼:例如求1到3的階乘累加和。
#include "stdio.h"
int fun(int n){
if(n==1) return 1;
else return n*fun(n-1);
}
#include "math.h"
int main() {
int n,sum=0,i;
scanf("%d",&n);
for(i=1;i<=n;i++)
sum+=fun(i);
printf("%d\n",sum);
return 0;
}
/*
運行結果:
3
9
*/
Ⅷ C語言怎麼求n階乘的和
1
思路
關鍵是寫出求階乘的函數
2
代碼
#include<stdio.h>
//求階乘
intfactorial(intn){
if(n==0||n==1)
return1;
else
returnn*factorial(n-1);
}
intmain(){
intn;
printf("求1!+2!+...+n!的結果
輸入n的值:");
scanf("%d",&n);
intsum=0;
for(inti=1;i<=n;i++){
sum+=factorial(i);
}
printf("結果為:%d
",sum);
getchar();
getchar();
return0;
}
3
運行效果
Ⅸ 1到20階乘的和用c語言表達
#include <stdio.h>
long jiecheng(int x)
{
long int i,k=1;
for(i=1;i<=x;i++)
k=k*i;
return k;
}
int main()
{
long int j,k=0;
int i;
for(i=1;i<=20;i++)
{
j=jiecheng(i);
k+=j;
}
printf("%ld ",k);
}
(9)階乘相加用c語言表達擴展閱讀:
使用其他方法實現求1到20階乘的和:
public class Main{
public static void main(String[] args){
int i,j;
int sum=0;
int a=1;
for(i=1;i<=20;i++){
for(j=1;j<=i;j++){
a*=j;
}
sum+=a;
}
System.out.print("sum=1!+2!+3!+...+20!="+sum);
}
}