C语言求1到20阶乘的和,出来的是负数
在32伟环境下,20的阶乘已经超出int的范围,而i是个int,必然会溢出,结果就是错误的
把i定义成double就行了
#includemain(){int n = 0;double i = 1.0; //doubledouble sum = 0; for (n = 0; n<20; n++){i = i*(n + 1);sum = sum + i;}printf("sum=%lf
", i);return 0;}
C语言经典例子之求1+2!+3!+...+20!的和
long double 改为 double,
%d 改为 %lf
#include <stdio.h>
int main()
{
double s = 0, t = 1, n;
for (n = 1; n <= 20; n++)
{
t *= n;
s += t;
}
printf("1!+2!+3!+...+20! = %.0lf
",s);
return 0;
}
// 输出:1!+2!+3!+...+20! = 2561327494111820288
另外,你的程序求的是 19!。
溢出整数范围而已。
long double 改为long long,最后printf用llf ,别问为什么,我也不知道,程序硬性要求,int用%d,long用ld,long long 用lld
输出控制符,你们老师应该讲过的。
printf("1!+2!+3!+...+20!=%d\n",s);
改成
printf("1!+2!+3!+...+20!=%.0lf\n",s);
double输出的时候不是%d 是 lf
用C语言 从一的阶乘加到二十的阶乘
1、找到文件,新建,项目,点击项目新建一个文件。2、会弹出这样的界面,选择为win32控制台程序,输入名称,然后点击确定。3、在源文件右键,添加,新建项目;然后跳出窗口选择C++文件(.cpp),最后点击添加。4、完成以上步骤,出现一个.cpp空文件文件请输入以下代码 5、显示结果如下:...
C语言求1-20的阶乘之和
i没有初始化,加上i = 0,否则i是乱码,另外1到20的阶乘值很大,会数据溢出,应该用__64int或者long long (可存储2^64位数)来定义sum。
c语言如何求一个数的阶乘
n的阶乘就是从1到的累积,所以可以通过一个for循环,从1到n依次求积即可。参考代码:include "stdio.h"int main() { int n,i,s=1;scanf("%d",&n);for(i=1;i<=n;i++)\/\/for循环求累积 s=s*i;printf("%d\\n",s);return 0;} \/ 运行结果:(例如求5的阶乘)5 120 \/ ...
c语言问题,求1-35的阶乘!!!
1、首先在电脑中打开C语言软件,定义一个函数,并传入一个参数。2、然后定义一个result变量,如下图所示。3、接着当传入的参数为1的时候,值为1,如下图所示。4、而传入的参数不是1的时候,使用递归函数来计算阶乘,jiecheng(n-1)*n,如下图所示。5、返回结果result,在主函数里面调用这个阶乘函数...
我想知道这个C语言求1到20的阶乘为什么我错了?
int 和long表示的范围是一样的,建议类型换成long long,printf处更改为("%lld", sum)
c语言分别输出1的阶乘到 10的阶乘,并累加阶乘之和。
1、打开Visual Studio,新建一个空白页面。2、在Main函数的上方,我们写上阶乘函数的框架。3、然后定义一个变量【result】。4、然后输入if判断语句。5、然后就可以写下程序的关键语句。6、接下来就可以调用输出。7、最后可以运行测试,这就完成了。
用C语言编写1到10的阶乘
include<stdio.h> int main(){ int a=1,i;for(i=1;i<=10;i++)a=a*i;printf("10的阶乘=%d",a);return 0;}
C++语言设计:定义一个求阶乘的函数,然后计算1!-2!+3!-4!+5!-6!+7...
include "iostream"using namespace std;int fun(int n){ int sum=1;int i;for(i=1;i<=n;i++)sum*=i;return sum;} int main(){ int i,mark=1;int sum=0,item=0;for(i=1;i<=9;i++){ item=mark*fun(i);sum+=item;mark=-mark;} cout<<"1!-2!+3!-4!+5!-6!+7!
C语言怎样求1到100的阶乘和
我们经常会使用C语言进行各种数学运算,那么如何利用C语言求1到100的阶乘和呢?下面小编给大家演示一下。1、首先打开Dev C++软件,新建C语言控制台项目,如下图所示 2、然后在main.c文件中输入计算阶乘的逻辑代码,如下图所示 3、接下来我们编译写好的C语言文件,如下图所示 4、最后执行C语言文件,...
c语言阶乘怎么表示
c语言阶乘表示的方式:1、使用循环:使用循环可以简化阶乘计算。例如,计算n的阶乘可以使用for循环,从1到n依次乘以每个数字,得到结果。2、避免重复计算:在计算阶乘时,很多数字会被重复计算。为了避免这种情况,我们可以使用一个数组来存储已经计算过的数字,并在计算时查找该数组以获取已经计算过的数字。
其卞天苏: long double 改为 double,%d 改为 %lf #include <stdio.h> int main() { double s = 0, t = 1, n; for (n = 1; n <= 20; n++) { t *= n; s += t; } printf("1!+2!+3!+...+20! = %.0lf\n",s); return 0; }// 输出:1!+2!+3!+...+20! = 2561327494111820288 另外,你的程序求的是 19!.
钟祥市14784652471: C语言,算1到20阶乘的和 - ?
其卞天苏: s*=i相当于s=s*i,假如某一次循环中i=k(k代表某个自然数),s=S那么执行完s*=i后s=S*k;下一次循环时i=k+1,执行完s*=i后s=S*k*(k+1).而初始情况是i=1,s=1,根据数学归纳法可以推导出s中保存的值是1*2*...*(k+1).
钟祥市14784652471: C语言求1 - 20的阶乘之和 - ?
其卞天苏: /* sum = 2561327494111820313 Press any key to continue */1 2 3 4 5 6 7 8 9 10 11#include <stdio.h>intmain() {__int64fact = 1,i,sum = 0;for(i = 1; i < 21; ++i) {fact *= i;sum += fact;}printf("sum = %I64d\n",sum);return0; }
钟祥市14784652471: c++求1到20的阶乘的和 即,1!+2!…+20! - ?
其卞天苏: #include <iostream> using namespace std; long facto(int n)/*用递归方法求解*/ {if(n==0||n==1){return 1;}else{return n*facto(n-1);} } int main() {int i;long sum=0;for(i=1;i<=20;i++){sum=sum+facto(i);}cout<<"1!+2!…+20!="<<sum;return 0; }运行结果:
钟祥市14784652471: 求1到20的阶乘和,,用C语言怎么整,,请高手来看看,,我这个对不??谢了 - ?
其卞天苏: 用递归调用吧最简单 int fan(int a) { sum+=20*fan(a-1); } 考试必考,最后用fun(20),但要sum在外面定义就出来了
钟祥市14784652471: 跪求:编写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\n",k); } 输出的结果是2561327494111820313 扩展资料: 一个正整数的阶乘(...
钟祥市14784652471: 1到20的阶乘之和用C程序有点问题~哪为高手解决下?
其卞天苏: 很简单的问题,在C语言中,int(整型)数据有效范围是-32768——32767之间,而你求的是1到20的阶乘和,其结果早已经超过了整数最大值32767,不要说求和,就是20的阶乘本身也远远超过了32767,所以肯定是个错误答案,你可以试试把t和s定义为长整型(long)或者实型(float,double).
钟祥市14784652471: 求个C语言程序:将1到20的阶乘累加 - ?
其卞天苏: #includemain() { double res=1.0; int i; for(i=1;i
钟祥市14784652471: 用c语言编程,求从1的阶乘一直加到20的阶乘. - ?
其卞天苏: #include<stdio.h> void main() { float a,b,s,sum; sum=0; for(a=1;a<=20;a++) { for(s=1,b=1;b<=a;b++) s=s*b; sum=sum+s; } printf("%e\n",sum); }先求出第n项阶乘,然后把前n-1项阶乘的和加上第n项.
钟祥市14784652471: 用C语言/*求1+2!+3!+...+20!的和*/ - ?
其卞天苏: 1、首先,定义三个整型变量,保存项数、算式的总和、每一项的和. 2、接着,将算式的总和设置为0. 3、读入算式的项数,保存在变量n中. 4、用for循环判断,条件是i的值小于等于n,即实现各项的总和. 5、在每次执行外侧循环时,设置sum2的初始值为0. 6、用for语句执行内部的循环,计算每一个小项的和. 7、运行程序,观察结果.