㈠ c語言編程 輸入N 求N的階乘
輸入一個正整數n,輸出n!*/#include <stdio.h> //編譯預處理命令
int factorial(int n); //函數聲明
int main(int argc, char const *argv[]) //主函數
{
int n; //變數定義
scanf("%d", &n); //輸入一個整數
printf("%d
", factorial(n)); //調用函數計算階乘
return 0;
}int factorial(int n) //定義計算n!的函數
{
int fact = 1;
for (int i = 1; i <= n; ++i)
{
fact = fact*i;
}
return fact;
}
拓展資料
特點
1. C語言是高級語言。它把高級語言的基本結構和語句與低級語言的實用性結合起來。C 語言可以像匯編語言一樣對位、位元組和地址進行操作,而這三者是計算機最基本的工作單元。
2.C語言是結構式語言。結構式語言的顯著特點是代碼及數據的分隔化,即程序的各個部分除了必要的信息交流外彼此獨立。這種結構化方式可使程序層次清晰,便於使用、維護以及調試。C 語言是以函數形式提供給用戶的,這些函數可方便的調用,並具有多種循環、條件語句控製程序流向,從而使程序完全結構化。
3.C語言功能齊全。具有各種各樣的數據類型,並引入了指針概念,可使程序效率更高。而且計算功能、邏輯判斷功能也比較強大。
4. C語言適用范圍大。適合於多種操作系統,如Windows、DOS、UNIX、LINUX等等;也適用於多種機型。C語言對編寫需要硬體進行操作的場合,明顯優於其它高級語言,有一些大型應用軟體也是用C語言編寫的。
㈡ 關於C語言用數組求N(可以很大)階乘的問題
太麻煩了吧?如果僅僅為了求N!-M!, N!+M!,調用一個階乘函數,不就行了?
下面的是求N!-M!, N!+M!的代碼:
#include<stdio.h>
int jie(int n)
{
int x;
for(x=1;n>0;n=n-1)
x*=n;
return(x);
}
main()
{
int n,m,q1,q2;
printf("please input n:\n");
scanf("%d",&n);
printf("please input m:\n");
scanf("%d",&m);
q1=jie(n)-jie(m);
q2=jie(n)+jie(m);
printf("%d!-%d!=%d\n%d!+%d!=%d\n",n,m,q1,n,m,q2);
}
㈢ C語言 實現N階乘
這種題目只能用數組存放結果,考查的是你對循環的思路和判斷的認知。說一下思路吧,希望對你有幫助。有幫助就給分哈~1、設定一個存放結果的數組,估計這個結果也不會超過1000位,暫定a【1000】2、給這個數組賦初值,全部為0,但是a【999】=1,讀入N的值3、開始i=1;i<N+1;i++次循環 4、從末尾開始乘i 5、判斷a【1000】的每一位,如果大於10,就用這一位/10,所得到的結果進位,所得到的余數留在此位6、循環結束,再次利用循環,判斷a【1000】前面沒有用到的0,當找到其中一位a【n】不等於0時,跳出循環7、從這個n開始,輸出a【1000】剩餘的部分8、結束
㈣ c語言的求n的階乘的程序代碼。
用遞歸法求N的階乘
程序調用自身稱為遞歸( recursion).它通常把一個大型復雜的問題層層轉化為一個與原問題相似的規模較小的問題來求解.
遞歸的能力在於用有限的語句來定義對象的無限集合。
一般來說,遞歸需要有邊界條件、遞歸前進段和遞歸返回段。當邊界條件不滿足時,遞歸前進;當邊界條件滿足時,遞歸返回。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
long factorial(int n)
{
if(n == 1)
return 1;
else
return n*factorial(n-1);
}
int main(int argc,char *argv[])
{
int n = 0;
if(argc != 2)
{
printf("input error,exit!! ");
return -1;
}
n = atoi(argv[1]);
printf("%d! = %ld ",n,factorial(n));
return 0;
}
習題示例
題目
題目描述:
輸入一個正整數N,輸出N的階乘。
輸入:
正整數N(0<=N<=1000)
輸出:
輸入可能包括多組數據,對於每一組輸入數據,輸出N的階乘
樣例輸入:
4
5
15
樣例輸出:
24
120
1307674368000
AC代碼
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 3000
//存儲每次階乘運算的結果
int str[MAX];
void calculateFactorial(int n);
int main()
{
int n;
while (scanf("%d", &n) != EOF) {
if(n == 0) {
printf("1 ");
} else {
calculateFactorial(n);
}
}
return 0;
}
void calculateFactorial(int n)
{
int i, j, temp, c, len;
memset(str, 0, sizeof(str));
str[1] = 1;
for (i = 2, len = 1; i <= n; i ++) { //循環與2,3,..n相乘
for (j = 1, c = 0; j <= len; j ++) { //str數組代表一個數,模擬與i相乘
temp = str[j] * i + c;
str[j] = temp % 10;
c = temp / 10;
}
while(c > 0)
{
str[j ++] = c % 10;
c /= 10;
}
len = j - 1;
}
for (i = len; i >= 1; i --) {
printf("%d", str[i]);
}
printf(" ");
}
/**************************************************************
Problem: 1076
User: wangzhengyi
Language: C
Result: Accepted
Time:2150 ms
Memory:916 kb
㈤ c語言 編程實現求n!要求用定義求階乘的函數
1、打開vs2017軟體,新建c語言的工程,首先開頭引入頭文件,然後調用先調用一下求階乘的函數和空的主函數,最下方定義prime函數用來求階乘:
㈥ 如何用C語言編寫N的階乘
#include
"stdio.h"
main()
{
int
n,i;
double
p=1;//這里用的是Double,不用Int,因為Int范圍太小
printf("請輸入一個數字:");
scanf("%d",&n);
for(i=2;i<=n;i++)
p*=i;
printf("n!shu=%lf ",p);
}
(6)c語言編寫用數組求n的階乘擴展閱讀:
用Ruby求 365 的階乘。
def AskFactorial(num) factorial=1;
step(num,1){|i| factorial*=i}
return factorial end factorial=AskFactorial(365)
puts factorial
階乘有關公式
該公式常用來計算與階乘有關的各種極限。
此為斯特林公式的簡化公式。
㈦ 用C語言寫程序:求N的階乘。要求用到數組。
利用階乘的定義求解階乘
#include<stdio.h>
voidmain()
{
inti,n;
longf=1;
scanf("%d",&n);
for(i=1;i<=n;i++)
f=f*i;
printf("%d!=%ld",n,f);
}
遞歸方法求階乘
#include"stdio.h"
longfact(intn)
{
longs;
if(n<=1)
s=1;
else
s=n*fact(n-1);
returns;
}
voidmain()
{
intnum;
scanf("%d",&num);
printf("%d!=%ld ",num,fact(num));
}
㈧ 用c++語言求n的階乘
1、打開vs6.0軟體,准備一個後綴為cpp的文件,在c++文件中首先寫入頭文件,定義一個處理階乘的函數,接著寫一個空的main函數:
㈨ C語言中如何編寫N的階乘
1、打開visual C++軟體,新建任務,滑鼠左鍵點擊文件,選擇C++ source file:
㈩ C語言,求n階乘的代碼
思路:所謂n的階乘就是從1到n的累積,所以可以通過一個for循環,從1到n依次求積即可。
#include <stdio.h>
int main()
{
int i, n;
int sum = 1;
printf("請輸入n: ");
scanf("%d", &n);
for(i=1; i<=n; i++)
{
sum = sum*i;
}
printf("n的階乘是%d ", sum);
return 0;
}
定義范圍
通常所說的階乘是定義在自然數范圍里的(大多科學計算器只能計算 0~69 的階乘),小數科學計算器沒有階乘功能,如 0.5!,0.65!,0.777!都是錯誤的。但是,有時候我們會將Gamma 函數定義為非整數的階乘,因為當 x 是正整數 n 的時候,Gamma 函數的值是 n-1 的階乘。
以上內容參考:網路-n!