新聞中心
c語言求階乘累加和
題目中數(shù)據(jù)很大
目前創(chuàng)新互聯(lián)已為上千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)頁空間、網(wǎng)站運營、企業(yè)網(wǎng)站設(shè)計、小店網(wǎng)站維護等服務(wù),公司將堅持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
于是我們有了高精度算法
思路是什么呢:
一個數(shù)組里面每一位存的是十進制數(shù)三位(也可以只存一位,但是比較慢)
也可以理解成一千進制
這樣能模擬大整數(shù)的乘法、加法
#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;//每個數(shù)位乘上數(shù)
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++;//位數(shù)可能會增加,而且最多增加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)?//壓位高精度一定要判斷位數(shù)
{//因為如果不是第一位,其他要補0,因為如果這個數(shù)是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語言分別輸出1的階乘到 10的階乘,并累加階乘之和。
1、打開Visual Studio,新建一個空白頁面。
2、在Main函數(shù)的上方,我們寫上階乘函數(shù)的框架。
3、然后定義一個變量【result】。
4、然后輸入if判斷語句。
5、然后就可以寫下程序的關(guān)鍵語句。
6、接下來就可以調(diào)用輸出。
7、最后可以運行測試,這就完成了。
怎么用c語言函數(shù)計算出1-100的階乘之和?
利用for循環(huán)計算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循環(huán)到100.
{
t = t * i; //計算1~100的階乘.
sum = sum + t; //將1~100的階乘累加到sum中.
}
printf("%.0f\n",sum); //輸出sum.
}
利用for循環(huán)計算1~100的階乘,將1~100的階乘累加到sum中就是所求。
用C語言求1到N的階層 的累加和
思路:先定義一個函數(shù)用來計算一個數(shù)的階乘,在從1到N循環(huá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;
}
/*
運行結(jié)果:
3
9
*/
網(wǎng)頁題目:c語言函數(shù)階乘累加和 c語言中累乘函數(shù)
文章地址:http://fisionsoft.com.cn/article/doosjhi.html