❶ 跪求:編寫c語言程序,求1到20的階乘之和
親測可用
long jiecheng(int x)
{
long int i,k=1;
for(i=1;i<=x;i++)
k=k*i;
return k;
}
int main()
{
long int j,k=0;
int i;
for(i=1;i<=20;i++)
{
j=jiecheng(i);
k+=j;
}
printf("%ld ",k);
}
輸出的結果是2561327494111820313
(1)c語言輸入正整數各位數階乘之和擴展閱讀:
一個正整數的階乘(factorial)是所有小於及等於該數的正整數的積,並且0的階乘為1。自然數n的階乘寫作n!。1808年,基斯頓·卡曼引進這個表示法。
亦即n!=1×2×3×...×n。階乘亦可以遞歸方式定義:0!=1,n!=(n-1)!×n。
計算方法:
大於等於1:
任何大於等於1 的自然數n 階乘表示方法:n! =1×2×3×...×(n-1)n或n! = n×(n-1)!
0的階乘:0!=1。
參考資料:網路——階乘
❷ C語言中求等於其各位數字的階乘之和的正整數
#include"stdio.h"
#include"math.h"
main()
{
float b[20]={1,1,2,6,24,120,720,5040,40320,362880},m,p=0,c;//0的階乘是1.。
int i,j,k,a[100],stop,n;
scanf("%d",&n);//最好用%d
//{這個大括弧加得很奇怪。。。
//不建議下面注釋掉的做法,因為每次開始都要調用一次pow函數,
//會增加程序耗費時間,雖然對現在的機器似乎沒關系。
//for(i=pow(10,n-1)+1;i<pow(10,n);i++)
i=pow(10,n-1)+1;
stop=pow(10,n);
for(;i<stop;i++)
{
m=0;//這里要恢復為0,否則就是累計了
for(j=1;j<=n;j++)
{
c=pow(10,j-1);
k=i/c;
a[j]=k%10;
m=m+b[a[j]];
}
if(i==m)
{
p=1;
printf("%d\n",i);//最好%d
}
}
if(p==0)
printf("No output\n");
}
❸ C語言怎麼求n階乘的和
1
思路
關鍵是寫出求階乘的函數
2
代碼
#include<stdio.h>
//求階乘
intfactorial(intn){
if(n==0||n==1)
return1;
else
returnn*factorial(n-1);
}
intmain(){
intn;
printf("求1!+2!+...+n!的結果
輸入n的值:");
scanf("%d",&n);
intsum=0;
for(inti=1;i<=n;i++){
sum+=factorial(i);
}
printf("結果為:%d
",sum);
getchar();
getchar();
return0;
}
3
運行效果
❹ C語言 求等於其各位數字的階乘之和的正整數
應該這樣寫: d=i;
s=0;
for(j=0;d>0;j++)
{
a[j]=d%10;
//我把你的i換成了d,注意i是要用來控制總循環次數的,不能在這裡面隨意改動
d=d/10;
}
❺ 求任意一個正整數各位數字的階乘的和
#include<stdio.h>
#include<stdlib.h>
int main()
{
int i,n,k;
int sum = 0,m = 1;
printf("請輸入數字:");
scanf("%d",& k);
for (n = 1; n <= k; n++)
{
for (i = 1; i <= n; i++)
{
m = i*m;
}
sum = sum + m;
m = 1;
}
printf("您輸入的這個數的階乘的和=%d\n", sum);
system("pause");
return 0;
}
❻ C語言 求等於其各位數字的階乘之和的正整數
#include <stdio.h>
main()
{int n,i,k=0,a,b,s,m0,m=1,t;
scanf("%d",&n);
for(i=1;i<=n;i++)
m=m*10;
m0=m/10;
for(;m>=m0;m--) //大循環中的m值
{
t=m;
for(i=1,s=0;i<=n;i++,t=t/10)//這里改變了大循環的m值,使大循環不能
//確運行;
{b=t%10;
if(b==0)b++;
for(a=1;b>0;b--)
a=a*b;
s+=a;}
if(s==m){printf("%d\n",m);k++;}}
if(k==0)printf("No output\n");
❼ C語言:求證一個正整數是否為「階乘和數」,咋編程
代碼文本:
#include "stdio.h"
int fact(int n){
if(n==1 || n==0)
return 1;
return n*fact(n-1);
}
int main(int argc,char *argv[]){
int n,t,k,s;
printf("Please enter a positive integer... n=");
if(scanf("%d",&n)==1 && n>0){
printf(" %d,",n);
for(k=1,t=n;t;t/=10,k*=10);
for(s=0,k/=10;k;k/=10){
printf(k>9 ? "%d+" : "%d=",t=fact(n/k%10));
s+=t;
}
printf(n==s ? "%d Yes " : "%d No ",s);
}
else
printf("Input error, exit... ");
return 0;
}
供參考……
❽ 輸入一個正整數計算它的個位數字的階乘之和並判斷它是否是一個階乘合數,編程題急!提前謝謝大佬!
#include <stdio.h>
#include <math.h>
int f(int n) {
if (n == 1)
return 1;
else
return n * f(n - 1);
}
int main(void) {
int n, t, temp, sum = 0;
scanf("%d", &n);
printf("%d,", n);
t = n;
while (t >= 10) {
temp = t / (int)pow(10, (int)log10(t));
sum += f(temp);
printf("%d!+", temp);
t %= (int)pow(10, (int)log10(t));
}
sum += f(t);
printf("%d!=%d ", t, sum);
printf("%s ", sum == n ? "Yes" : "No");
return 0;
}