當前位置:首頁 » 編程語言 » c語言如何計算階乘和
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言如何計算階乘和

發布時間: 2022-03-11 18:26:48

1. c語言如何求一個數的階乘

n的階乘就是從1到的累積,所以可以通過一個for循環,從1到n依次求積即可。

參考代碼:

#include "stdio.h"

int main() {

int n,i,s=1;

scanf("%d",&n);

for(i=1;i<=n;i++)//for循環求累積

s=s*i;

printf("%d ",s);

return 0;

}

/*

運行結果:(例如求5的階乘)

5

120

*/

(1)c語言如何計算階乘和擴展閱讀:

return用法:

return返回一個數值的意思就是把return<表達式>後面表達式的值返回給調用他的函數。舉個例子:

int sum(int i,int j)

{

return i+j;

printf("這個語句不會被執行,因為該子函數執行到上面的return語句就無條件結束了");

}

main()

{

int a=10,b=11,c;

c=sum(a,b);

printf("%d",c);

}

2. c語言求階乘的和

這個題目有局限性的,一旦你的N值超過某個數以後,整個Sn的值就會出現溢出現象。這個程序是很好寫的,只要寫一個求一個數階乘的函數fun(int
n)然後用個循環就可以解決問題。

3. 怎麼用c語言函數計算出1-100的階乘之和

利用for循環計算1~100的階乘,將1~100的階乘累加到sum中就是所求。

#include<stdio.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 ",sum); //輸出sum.

}

利用for循環計算1~100的階乘,將1~100的階乘累加到sum中就是所求。

4. 用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);
}

5. 用c語言怎麼寫1到5的階乘的和

代碼如下:

#define _CRT_SECURE_NO_WARNINGS 1

#include"stdio.h"

#include"stdlib.h"

int main()

{

int n = 0;

printf("請輸入一個數字: ");

scanf("%d",&n);

int i = 0;

int ret = 1;

int sum = 0;

for (i = 1; i <= n; i++)

{

ret *= i;

sum += ret;

}

printf("%d ",sum);

system("pause");

return 0;

}

(5)c語言如何計算階乘和擴展閱讀

階乘計算功能關鍵演算法

利用遞歸方法求5!

用遞歸方式求出階乘的值。遞歸的方式為:

5!=4!*5

4!=3!*4

3!=2!*3

2!=1!*2

1!=1

即要求出5!,先求出4!;要求出4!,先求出3! … 以此類推。

注意:定義一個函數(或方法),用於求階乘的值。

在主函數(或主方法)中調用該遞歸函數(或方法),求出5的階乘,並輸出結果。

packageThird;

publicclassone {

publicstaticvoidmain(String args[]){

intn =5;//輸入n的值

//n的階乘的值為:factorial(n);

System.out.println("5的階乘是:"+ factorial(n));

}

publicstaticintfactorial(intn){//階乘求解函數

if(n ==0){//判斷傳進來的n是否為0,若為零返回階乘為1

return1;

}

returnn*factorial(n-1);//重新調用函數,繼續判斷n-1是否為零,

}

}

6. C語言怎麼求大數的階乘

C語言利用數組計算超大整數的階乘代碼

#include <stdio.h>

intmain()

{

intn;

inta[9000];//確保保存最終運算結果的數組足夠大

intdigit = 1;//位數

inttemp;//階乘的任一元素與臨時結果的某位的乘積結果

inti, j, carry;//carry:進位

printf("please in put n: ");

scanf("%d",&n);

a[0] = 1;//將結果先初始化為1

for( i=2; i<=n; i++ )//開始階乘,階乘元素從2開始依次"登場"

{//按最基本的乘法運算思想來考慮,將臨時結果的每位與階乘元素相乘

for( j=1, carry=0; j<=digit; j++ )

{

temp = a[j-1] * i + carry;//相應階乘中的一項與當前所得臨時結果的某位相乘(加上進位)

a[j-1] = temp % 10;//更新臨時結果的位上信息

carry = temp / 10;//看是否有進位

}

while(carry)

{//如果有進位

a[++digit-1] = carry % 10;//新加一位,添加信息。位數增1

carry = carry / 10;//看還能不能進位

}

}

printf("n ! = ");//顯示結果

for(j = digit; j >=1;j--)

{

printf("%d",a[j-1]);

}

printf(" ");

return0;

}




#include<stdio.h>
intmain()
{
intn;
inta[9000];//確保保存最終運算結果的數組足夠大
intdigit=1;//位數
inttemp;//階乘的任一元素與臨時結果的某位的乘積結果
inti,j,carry;//carry:進位

printf("pleaseinputn: ");
scanf("%d",&n);
a[0]=1;//將結果先初始化為1

for(i=2;i<=n;i++)//開始階乘,階乘元素從2開始依次"登場"
{//按最基本的乘法運算思想來考慮,將臨時結果的每位與階乘元素相乘
for(j=1,carry=0;j<=digit;j++)
{
temp=a[j-1]*i+carry;//相應階乘中的一項與當前所得臨時結果的某位相乘(加上進位)
a[j-1]=temp%10;//更新臨時結果的位上信息
carry=temp/10;//看是否有進位
}
while(carry)
{//如果有進位
a[++digit-1]=carry%10;//新加一位,添加信息。位數增1
carry=carry/10;//看還能不能進位
}
}
printf("n!=");//顯示結果
for(j=digit;j>=1;j--)
{
printf("%d",a[j-1]);
}
printf(" ");
return0;
}

7. 用C語言怎樣求階乘之和

思路 編個函數求n的階乘的
遞歸方法
int f(int n){
if(n==1) return 1;
else return n*f(n-1);
}

再在主方法裡面編個循環求階乘之和
int sum=0;
for(i=1;i<=n;i++){
sum=sum+f(i);
}

8. C語言中如何編程計算階乘

常見的有兩種:

遞歸版本:

intFac(intn){
if(n==0)return1;
returnn*Fac(n-1);
}

還有一種是循環版:

intans=1;
for(inti=1;i<=n;i++)ans*=i;

測試方法:

#include<stdio.h>

intFac(intn){
if(n==0)return1;
returnn*Fac(n-1);
}

intmain(){
intn;
while(scanf("%d",&n)!=EOF){
intans=1;
for(inti=1;i<=n;i++)ans*=i;
printf("%d%d ",ans,Fac(n));
}
return0;
}

有個值得注意的地方:階乘時,數增大的很快,在n達到13時就會超過int的范圍,此時可以用long long或是 __int64來存儲更高精度的值,如果還想存儲更高位的,需要用數組來模擬大數相乘。

9. 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;
}

10. c語言求1到n的階乘的和

最基礎的思路,是逐個求階乘,並累加。不過由於階乘是從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);//輸出結果。
}