1. 用C語言編寫計算階層的程序 求任意數的階層 怎麼寫
給,已經編譯運行確認:
#include<conio.h>
#include<stdio.h>
#include<stdlib.h> // for malloc()
#include<string.h> // for memset()
#define QUOTIETY 4 // 內存分配系數,計算10000以內階乘設置為4就足夠,如果需要
// 計算更大的數的階乘,則將該系數適當增大
void process(const int index, int *result);
int cnt = 1;
int main(void)
{
int index = 0;
int input = 0;
int *result = NULL;
int count=0;
// 獲得輸入數據
printf("請輸入你要計算的階乘數n:\n");
scanf("%d", &input);
while (input <= 0)
{
printf("請輸入合理的數據,謝謝:\n");
scanf("%d", &input);
}
// 申請空間儲存計算結果
result = (int *)malloc(sizeof(int) * input * QUOTIETY);
if (result == NULL)
{
printf("內存申請失敗!\n");
exit(-1);
}
memset(result, 0, sizeof(int) * input * QUOTIETY); // 初始化存儲空間
result[0] = 1;
// 進行階乘計算
for ( index = 1; index <= input; ++index)
{
process(index, result);
}
// 列印結果
for (index = cnt - 1; index >= 0L; --index)
{
printf("%d", result[index]);
count++;
if(count%40==0) printf("\n");
}
putchar('\n');
printf("結果一共有%d位數!\n", cnt);
free(result);
getch();
return 0;
}
/*
* 計算階乘核心代碼
*/
void process(const int index, int *result)
{
int proct = 0; // 乘積
int carry = 0; // 進位
int remainder = 0; // 余數
int i = 0;
for (i = 0; i < cnt; ++i)
{
proct = result[i] * index + carry;
carry = proct / 10;
remainder = proct % 10;
result[i] = remainder;
}
if (carry != 0)
{
while (carry / 10 != 0)
{
result[cnt] = carry % 10;
carry /= 10;
++cnt;
}
result[cnt++] = carry;
}
}
運行示例:
請輸入你要計算的階乘數n:
200
000000000000000
結果一共有375位數!
2. 用C語言求N的階層。程序怎麼寫
1、使用遞歸演算法
#include<stdio.h>
#include<process.h>
longfactorial(intn)
{
longresult;
if(n<0)
{
printf("n<0,請輸入大於等於0的整數!");
return-1;
}
elseif(n==0||n==1)
{
result=1;
}
else
{
result=n*factorial(n-1);
}
returnresult;
}
main()
{
intn=10.0;
longiNum;
iNum=factorial(n);
printf("10!=%ld ",iNum);
system("pause");
}
2、使用循環
#include<stdio.h>
#include<process.h>
intmain()
{
inti=1;//累加變數
longj=1;//儲存結果
intk=1;//輸入的數值
printf("請輸入一個數字:");
scanf("%d",&k);
do
{
j=j*i;
i++;
}while(i<=k);
printf("%ld ",j);
system("pause");
return1;
}
以上兩種方式是求階乘的普通演算法,求得的結果表示範圍都是有限的,如果算大數的階乘還要另外的演算法。
3. 用C語言 編寫10的階層 怎麼寫
#include <stdio.h>
int main()
{
int i=0;
long temp=1;
long sum=0;
for(i=1;i<=10;i++)
{
temp*=i;
sum+=temp;
}
printf("sum=%ld\n",sum);
return 0;
}
利用for循環期求出第n項階乘的積,然後前n-1項的階乘的和加上第n項階乘,當n等於10的時候就是所求。
4. c語言編程求n的階層怎麼編寫
代碼:
<script>
jc = function (i)
{ jg = 1;
for(j=1;j<=i;j++)
{
jg *= j;
}
return jg;
}
alert(jc(5));//這里填寫了5,當然可以換成其它的了
</script>
//結束
::以下是C語言,復制後改成:C用VC打開他運行即可
::START,寫是個函數,你應該會調用吧.直接jc (N),N是你想要計算的數值
intjcfunction (i) {
int jg=1;
for (j=1;jg<=i;j++)
{
jg *=j;
}
return jg;
}
::END
5. C語言的代碼 階層問題
首先,這個叫做「階乘」而不是「階層」。
其次,return 1是因為 0! = 1,數學上就是這么定義的,這個和C語言無關。
遞歸有兩個階段,第一階段是反復地調用自身,直到觸發終止條件;第二階段是,逐層計算並返回調用結果。
就拿你這個例子來說,假設要計算4的階乘,首先是遞歸地調用自身:
4! = func(4), 此時n為4大於0,所以func(4) = 4 * func(4-1) = 4*func(3)
同樣地:
3! = func(3) = 3*func(3-1) = 3*func(2)
2! = func(2) = 2*func(2-1) = 2*func(1)
1! = func(1) = 1*func(1-1) = 1*func(0)
這時注意了,當計算func(0)時,n=0,觸發邊界條件,所以遞歸調用停止,return 1。
接下來,就是以相反的順序,,逐層返回結果了:
0! = func(0) = 1
1! = func(1) = 1*func(0) = 1*1 = 1
2! = func(2) = 2*func(1) = 2*1 = 2
3! = func(3) = 3*func(2) = 3*2 = 6
4! = func(4) = 4*func(3) = 4*6 = 24
這樣就得到了最終的結果:24。
6. C語言的代碼 階層問題
首先,這個叫做「階乘」而不是「階層」。
其次,return
1是因為
0!
=
1,數學上就是這么定義的,這個和C語言無關。
遞歸有兩個階段,第一階段是反復地調用自身,直到觸發終止條件;第二階段是,逐層計算並返回調用結果。
就拿你這個例子來說,假設要計算4的階乘,首先是遞歸地調用自身:
4!
=
func(4),
此時n為4大於0,所以func(4)
=
4
*
func(4-1)
=
4*func(3)
同樣地:
3!
=
func(3)
=
3*func(3-1)
=
3*func(2)
2!
=
func(2)
=
2*func(2-1)
=
2*func(1)
1!
=
func(1)
=
1*func(1-1)
=
1*func(0)
這時注意了,當計算func(0)時,n=0,觸發邊界條件,所以遞歸調用停止,return
1。
接下來,就是以相反的順序,,逐層返回結果了:
0!
=
func(0)
=
1
1!
=
func(1)
=
1*func(0)
=
1*1
=
1
2!
=
func(2)
=
2*func(1)
=
2*1
=
2
3!
=
func(3)
=
3*func(2)
=
3*2
=
6
4!
=
func(4)
=
4*func(3)
=
4*6
=
24
這樣就得到了最終的結果:24。
7. C語言中階乘怎麼輸
1、不是直接輸入n!,需要一定的演算法才可以實現。具體方法是,首先打開編輯器,准備好空白的C語言文件:
8. C語言中如何編寫N的階乘
1、打開visual C++軟體,新建任務,滑鼠左鍵點擊文件,選擇C++ source file:
9. 怎樣用C語言計算1到10的階層的和
C語言中實現階乘的計算可以採用遞歸或者循環,通常循環用的比較多,循環可以採用while循環和for循環等。
下面以for循環為例實現1-10的階乘的和的計算,代碼如下:
int i,sum=1,S=0;
for(i=1;i<=10;i++)
{
sum=sum*i;
S=S+sum;
}
上述的變數S在運行結束後的結果值即為1-10的階乘的和。
(9)c語言代碼編譯數學階層擴展閱讀:
數學函數
所在函數庫為math.h、stdio.h、string.h、float.h
int abs(int i) 返回整型參數i的絕對值
double atof(char *nptr) 將字元串nptr轉換成浮點數並返回這個浮點數
double atoi(char *nptr) 將字元串nptr轉換成整數並返回這個整數
double atol(char *nptr) 將字元串nptr轉換成長整數並返回這個整數
char *ecvt(double value,int ndigit,int *decpt,int *sign),將浮點數value轉換成字元串並返回該字元串
10. 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
*/
(10)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);
}