c语言 1到20的阶乘之和
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言 1到20的阶乘之和相关的知识,希望对你有一定的参考价值。
//c4-8.c
#include<stdio.h>
int main ()
int i,p,sum=0;
for(i=1;i<=20;i++)
while(i>=1)
p=1;
p*=i;
i-=1;
sum+=p;
printf("sum=%d\n",sum);
return 0;
错在哪
**程序描述:求求1~20的阶乘之和。
**算法思路:先求出每一项的阶乘值,然后将所有项的阶乘值相加。
*/
#include <stdio.h>
#define N 20
typedef unsigned long long uInt64; //自定义类型
//求出每一项阶乘值的函数
uInt64 fact(int n)
int i;
uInt64 s;
for(i=s=1;i<=n;i++)
s*=i; //从1开始循环累加相乘
return s;
int main()
uInt64 s;
int i;
for(i=1,s=0;i<=N;i++)
s+=fact(i); //从第1项开始循环累加每一项的阶乘值
printf("1!+2!+3!+……+20!=%llu\\n",s);
return 0;
参考技术A
i始终大于1,会出现死循环的,同时,20的阶乘相加,那结果会很大的,用int保存不下,得用double类型!示例代码,有问题再用度娘自己搜索吧。。
//win7 x64 + vc6.0编译通过#include<stdio.h>
#include "stdlib.h"
int main()
double fac(int n);
double sum=0,m;
int i;
for(i=1;i<=20;i++)
m=fac(i);
sum+=m;
printf("%0.lf\\n",sum);
system("pause");
double fac( int n)
double m;
if (n==1)
m=1;
else m=fac(n-1)*n;
return(m);
参考技术B 你的程序有点乱,也有的错的地方,比如一开始的int unit51()不应该是int main()吗?还有倒数第三行printf("1到20的阶乘和为:\n",sum);也是错的,应该改为printf("1到20的阶乘和为:%d\n",sum);但是貌似这样最后输出的也只有一个数而不是1到20的阶乘,最后一点,20的阶乘是一个非常大的数,用int根本不行。程序就不给你改了,需要的话我给你写一个。 参考技术C #include<stdio.h>void main()
int i;
double t=1,sum=0; //由于20的阶乘int和long int都放不下.所以用double.
for(i=1;i<=20;i++) //从1循环到20.
t = t * i; //计算1~20的阶乘.
sum = sum + t; //将1~20的阶乘累加到sum中.
printf("%.0f\n",sum); //输出sum.
参考技术D 2432902008176640000
请按任意键继续. . .
代码:
#include<stdio.h>
#include "stdlib.h"
int main()
double fac(int n);
double sum=0,m;
int i;
for(i=1;i<=20;i++)
m=fac(i);
sum+=m;
printf("%0.lf\n",sum);
system("pause");
double fac( int n)
double m;
if (n==1)
m=1;
else m=fac(n-1)*n;
return(m);
你求的是阶乘的累加和。20项很大了,查过了整形的范围了。用double就可以了。
在就是 递归表达式:
n==1 return 1
else
return n*f(n-1)
C 语言编程系列
目录
文章目录
语法入门
《C 语言编程 — 发展历史概览》
《C 语言编程 — 配置开发环境》
《C 语言编程 — HelloWorld》
《C 语言编程 — 数据类型概览》
《C 语言编程 — 基本数据类型》
《C 语言编程 — 指针类型 — 指针(pointer)》
《C 语言编程 — 构造数据类型 — 数组(array)》
《C 语言编程 — 构造数据类型 — 字符串(string)》
《C 语言编程 — 构造数据类型 — 结构体(struct)》
《C 语言编程 — 构造数据类型 — 位域(bit field)》
《C 语言编程 — 构造数据类型 — 枚举(enum)》
《C 语言编程 — 构造数据类型 — 共用体(union)》
《C 语言编程 — 空类型 — void 类型》
《C 语言编程 — 自定义类型 — typedef》
《C 语言编程 — 数据类型转换》
《C 语言编程 — 变量、常量与作用域》
《C 语言编程 — 函数》
《C 语言编程 — 运算符》
《C 语言编程 — 逻辑控制语句》
《C 语言编程 — 预处理指令与宏定义》
《C 语言编程 — 头文件》
《C 语言编程 — 代码规范》
《C 语言编程 — 基本语法练习》
应用进阶
《C 语言编程 — 指令行操作》
《C 语言编程 — 输入输出操作》
《C 语言编程 — errno 错误操作》
《C 语言编程 — assert 断言操作》
《C 语言编程 — stat 文件操作》
《C 语言编程 — semaphore 信号量操作》
《C 语言编程 — fork 进程操作》
《C 语言编程 — pthread 线程操作》
《C 语言编程 — 线程池设计与实现》
深入理解
《C 语言编程 — GCC 程序编译原理》
《C 语言编程 — GCC 程序汇编原理》
《C 语言编程 — GCC Attribute 语法扩展》
《C 语言编程 — GCC 内存对齐问题》
《C 语言编程 — GCC 大端小端问题》
《C 语言编程 — GDB 程序调试》
《C 语言编程 — Makefile》
用 C 语言开发一门编程语言
《用 C 语言开发一门编程语言 — Lispy 功能演示》
《用 C 语言开发一门编程语言 — 交互式解析器》
《用 C 语言开发一门编程语言 — 语法解析器运行原理》
《用 C 语言开发一门编程语言 — 波兰表达式解析器》
《用 C 语言开发一门编程语言 — 表达式存储器》
《用 C 语言开发一门编程语言 — 符号表达式解析器》
《用 C 语言开发一门编程语言 — 引用表达式解析器》
《用 C 语言开发一门编程语言 — 变量的设计与实现》
《用 C 语言开发一门编程语言 — 基于 Lambda 表达式的函数设计与实现》
《用 C 语言开发一门编程语言 — 条件分支的设计与实现》
《用 C 语言开发一门编程语言 — 字符串的设计与实现》
《用 C 语言开发一门编程语言 — 更好的语言》
C 语言网络编程
《互联网协议 — TCP — 报文格式》
《互联网协议 — TCP — TCP 连接(三次握手、四次挥手)》
《互联网协议 — TCP — 确认与重传》
《互联网协议 — TCP — 滑动窗口》
《互联网协议 — TCP — 流量控制》
《互联网协议 — TCP — 拥塞控制》
《C 语言网络编程 — BSD Socket API》
《C 语言网络编程 — PF_INETv4v6 sockets》
《C 语言网络编程 — Socket I/O 模式》
《C 语言网络编程 — Linux I/O 处理流程与优化》
《C 语言网络编程 — 高并发 TCP 网络服务器》
《互联网协议 — HTTP 协议与 Web 服务器》
《互联网协议 — HTTP/1.1 版本》
《互联网协议 — HTTP/2 版本》
《C 语言网络编程 — 轻量级 HTTP 服务器设计与实现》
以上是关于c语言 1到20的阶乘之和的主要内容,如果未能解决你的问题,请参考以下文章