當前位置:首頁 » 編程語言 » C語言1到n階乘求和

C語言1到n階乘求和

發布時間: 2022-12-20 07:28:49

c語言求1~n階乘的和

你那個do
while是要做什麼呢?輸入n為負數則循環輸入???還是????
#include
<stdio.h>
long
Fact(int
n);///////////////////////////////////////////////////////函數定義在調用之前,要預先聲明
void
main
()
{
int
n,d;
long
b,c;
do
{
printf("請輸入一個正整數:");
scanf("%d",&n);
c=0;/////////////////////////////////////////////////////c=0放這邊
for
(d=1;d<=n;d++)
{
b=Fact(d);////////////////////////////////////////Fact(n);改成Fact(d);
c=c+b;
}
printf("和為%ld\n",c);
}while
(n<=0);
}
long
Fact(int
n)
{
int
i;
long
result=1;
for
(i=1;i<=n;i++)
result
*=i;
return
result;
}

⑵ c語言怎麼求1到n的累加和

1、首先定義一個函數,這個函數里的內容求n的階乘,返回值是n的階乘,如下圖所示。

⑶ C語言求1至n的階乘和問題

下面是我給你改好的代碼
#include<stdio.h>
int
main()
{
int
i,n;
double
p=1,sum=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{

p*=i;

sum+=p;
}
printf("%lf\n",sum);
}

有幾點你要注意一下,int是什麼數據類型你應該知道,取值范圍也知道吧,你輸入33,你自己想像33的階乘是多大的值,超出int范圍肯定溢出啊,所以這里建議改為double型
還有你那個sum+=p,調到for循環裡面,在外面的話只會執行一次,就是把p的最終值加上sum的初始值0,然後賦值給sum,這不就相當於直接把p的值賦給sum嗎,所以我給你改成那樣了,你自己看看吧

⑷ C語言 :題目 1加到n的階乘之和

#include<stdio.h>
long fac(int n)//求n的階乘;
{
if(n==1)return 1L;//當n為1,返回值1;

else return n*fac(n-1);//計算n的階乘;
}

long sum(int n)//求階乘相加之和;
{
int s,k;
for(s=0,k=0;k<=n,n>0;k++){
s=s+fac(n);
n=n-1;
}
return s;
}

void main()//主函數
{
int m;
scanf("%d",&m);
printf("%d\n",sum(m));
}

這懸賞的分數確實對不起這么多的要求。不過,還是幫你一把。
使用了兩個函數調用,你可以圍繞函數調用那章來寫報告。

⑸ c語言求1到n的階乘之和s

最基礎的思路,是逐個求階乘,並累加。不過由於階乘是從1乘到n,所以每個數都單獨求一次階乘,會有很多重復運算,影響效率。
所以更快捷的方式是,在上一個數的階乘基礎上,直接乘上本身,得到當前數的階乘。
以此為主導,代碼如下:
#include <stdio.h>
int main()
{
int n, i, n1 = 1,s=0;
scanf("%d",&n);//輸入n值。
for(i=1; i <= n; i ++)
{
n1*=i;//計算i的階乘。
s+=n1;//累加。
}
printf("%d\n", s);//輸出結果。
}

⑹ c語言:1到n的階乘之和

不是,可以用一個遞歸實現
#include <stdio.h>
int fun(int n)
{
if(n==1)
return 1;
else
return n*fun(n-1);
}

int main()
{
int n,sum=0;;
printf("請輸入n:\n");
scanf("%d",&n);
for (int i=1;i<=n;i++)
{
sum+=fun(i);
}
printf("sum=%d\n",sum);
return 0;
}

⑺ c語言1加到n的階乘之和

首先fac函數沒有定義返回類型;

還有就是計算階乘和計算的只是n的階乘;

#include<stdio.h>

intfac(intn)//返回類型為int型
{
intsum=0;
intsum1=1;
for(intj=1;j<=n;j++)//從1開始計算階乘,計算到n
{
for(inti=1;i<=j;i++)
{
sum1*=i;
}

sum+=sum1;
}

returnsum;
}

intmain(void)
{
intn1;
intresult;
printf("隨意輸入整數n,求1!+2!+...+n!的和: ");
scanf("%d",&n1);
result=fac(n1);
printf("%d",result);

return0;
}

⑻ c語言求1到n的階乘之和s

錯誤比較多。
語法錯誤:return後少
;、
不解釋、
1、主函數中傳入s、可s並沒有值、只是單單被定義了;
2、被調用函數因為1中的原因、導致s沒有確切值;,
3、被調用函數中用的n無值、我想你可能是想用主函數中的n、可你的定義為局部定義、只能把while(n>1)中的n理解成被調用函數中的、因此無值;
4、被調用函數循環語句有問題、s的意思是把每個數的階乘相加、舉例:若輸入為3、則y=1*3;s=s+3;明顯不是你想要的結果、
以上是我的個人看法、若還是需要源代碼可追問、建議還是自己理解、然後編程、可以幫你檢查錯誤、有利於個人進步

⑼ 用c語言編寫程序計算1~n的階乘之和....

錯誤可能有三個,第一你的main前面沒有聲明,缺少個int,第二個可能的錯誤就是沒有按照題目的要求進行多股輸入,你的代碼只是輸入一次n就結束程序,第三個是最主要的錯誤,你的for(j=1;j<=i;j++)
裡面每次循環一次就把p賦值為1,如果輸入3的話,答案是不是10?1*1+1*1*2+1*2*3=10。如果要這樣算的話程序如下:
#include<stdio.h>
int main()
{
int i,j,n;
long p;
long Sn=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{p=1;
for(j=1;j<=i;j++)
{ p=p*j; }
Sn=Sn+p;
}
printf("%ld\n",Sn);
}

熱點內容
android文件夾重命名 發布:2025-05-15 01:13:50 瀏覽:481
cns腳本 發布:2025-05-15 01:13:38 瀏覽:722
數據結構與演算法筆試題 發布:2025-05-15 01:04:20 瀏覽:417
搜狗輸入法如何直接編輯配置文件 發布:2025-05-15 00:51:47 瀏覽:668
電箱都有哪些配置 發布:2025-05-15 00:30:21 瀏覽:74
安卓qq邀請碼在哪裡尋找 發布:2025-05-15 00:02:04 瀏覽:35
三菱fx編程口 發布:2025-05-15 00:01:23 瀏覽:810
醫院招商引資宣傳片腳本 發布:2025-05-15 00:01:21 瀏覽:368
linuxcftp伺服器 發布:2025-05-14 23:58:18 瀏覽:718
探岳什麼配置才有駕駛模式選擇 發布:2025-05-14 23:53:17 瀏覽:146