求(即求1!+2!+3!+4!+…+20!)。
应该使用long long int
。
#include <stdio.h> #include<stdlib.h> #include<string.h> #include<math.h> double factorial(double n); int main(void) { double n,sum=0; puts("请输入要求的n个阶乘的和(1!+2!+3!+....+n!)"); scanf("%lf", &n); sum = factorial(n); printf("%.0lf以内的阶乘和为%.0lf", n,sum); return 0; }
double factorial(double n) { double sum=0,count=1;//count内层求和 sum外层求和 for (int i = 1; i <= n;i++ ) { for (int j = 1; j <=i; j++) { count *= j; } sum += count; count = 1; }
return sum; }
#include<stdio.h> #include<math.h> #include<string.h> #include<stdlib.h> int main() { int jieguo[100]={0}; int zancun[100]={1}; for(int i=1;i<=20;i++) { for(int j=0;j<100;j++) { zancun[j]*=i; } for(int j=0;j<100;j++) { zancun[j+1]+=zancun[j]/10; zancun[j]%=10; } for(int j=0;j<100;j++) { jieguo[j]+=zancun[j]; } for(int j=0;j<100;j++) { jieguo[j+1]+=jieguo[j]/10; jieguo[j]%=10; } } int tag=0; for(int i=99;i>=0;i--) { if(jieguo[i]) tag=1; if(tag) printf("%d",jieguo[i]); } }
该题需要从1循环...
用户登录可进行刷题及查看答案
该题需要从1循环到20,依次求出每一个数字阶乘的结果。所以在代码当中需要有两个循环,大循环从1到20,保证1到20个数字都被循环到,小循环里计算N阶乘,累加求和。注意:对于20的阶乘已经超出了int类型能过表示的数字范围,所以在代码当中使用double类型
int
double
#include<stdio.h> int main() { double total_sum = 0; for(int i = 1; i <= 20; i++) { double single_sum = 1; for (int j = i; j > 0; j--) { single_sum *= j; } total_sum += single_sum; } printf("1~20每个数字阶乘总和为:%lf\n",total_sum); return 0; }
登录后提交答案