❶ 跪求:编写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;
}