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);//輸出結果。
}