C语言,求1+2+3+...+n
n的值不能超过13,否则会因为数据溢出而导致结果错误。
#include
int main()
{
long i,n,m,sum=0
scanf("%d",&n);
for(i=m=1;i<=n;i++);
{
m*=i;
sum+=m;
}
printf("%d
",sum);
return 0;
}
例如:
#include
/* 通过递归计算一个数的回阶乘 */
int factorial(int num)
{
if (num==1)
return 1;
else
return (num * factorial(num - 1));
}
int main()
{
int i,n;
long sum = 1;
scanf("%d",&n);
for (i = 2;i <= n;++i)
sum += factorial(i);
printf("%ld
",sum);
return 0;
}
扩展资料:
由于正整数的阶乘是一种连乘运算,而0与任何实数相乘的结果都是0。所以用正整数阶乘的定义是无法推广或推导出0!=1的。即在连乘意义下无法解释“0!=1”。
通常我们所说的阶乘是定义在自然数范围里的(大多科学计算器只能计算 0~69 的阶乘),小数科学计算器没有阶乘功能,如 0.5!,0.65!,0.777!都是错误的。但是,有时候会将Gamma 函数定义为非整数的阶乘,因为当 x 是正整数 n 的时候,Gamma 函数的值是 n-1 的阶乘。
参考资料来源:百度百科-阶乘
编写用于求1!+2!+3!+…+n!
1、C程序
#include
void main()
{
int i,a;
float n=1,sum=0;
scanf("%d",&a);
for(i=1;i<=a;i++)
{
n=n*i;
sum=sum+n;
}
printf("1!+2!+3!+...+n!=%.0f",sum);
}
2、C++程序
#include
void main()
{
int i;
float n=1,sum=0;
for(i=1;i<=20;i++)
{
n=n*i;
sum=sum+n;
}
cout<<sum<<endl;
}
来源http://zhidao.baidu.com/question/93376877.html?si=7
益处了啊,请先设个变量把他定义成长整形的,这样就可以了,因为你不自己定义系统默认为短整型的,
这种问题经常出现,所以以后在编程的时候一定要细心
可能是数据溢出了 int 型数据最大值是 32767 你把sum定义为 long 型就可以了
超出范围,溢出了,用UNSIGNED LONG定义变量试试!
可能是结果比较大,溢出了
C语言如何输出数列1,1,2,2,3,3……求算法
for( int i = 1 ; i <= n ; i++ ){ printf("%d,%d,",i,i) ;} 这样可以吗
c语言 用主函数调用子函数求1+2+3++.……+100
include <stdio.h>int sum(int n){ int sum = 0, i; for (i = 1; i <= n; ++i){ sum += i; } return sum;}int main(){ int n; scanf ("%d", &n); printf ("%d\\n", fun(n)); return 0;} ...
C语言中 int b{1,2,3}; b+2啥意思??
你想写得是int b[]={1,2,3};定义数组b,初始化数组的3个元素分别值是1,2,3。(定义时直接给数组初值,可不指定维度,但如果不给初值,必须有维度大小,比如int b[3];)所以这里b是数组名,表示数组首地址常量,b+2就是数组第三个元素的地址(等同于&b[2])。同理b,b+1,b+2分别...
用递归算法,求1+2+3+···+n,n由键盘输入。 用C语言程序编写。_百度知 ...
int fun(int m){ if(m==1)return 1;else return m+fun(m-1);} void main(){ int x;scanf("%d",&x);printf("%d\\n",fun(x));} 你自己好好分析一下,相信你能写的出来,这是最基本的!
c语言程序求1+2+3+...+n的和
include <stdio.h>int main(void){ int i,n,sum=0; printf("请输入一个大于3的正整数:"); scanf("%d",&n); for(i=1;i<=n;i++) sum=sum+i; printf("1+2+3+...+%d=%d\\n",n,sum); return 0;} ...
MATLAB中A(:,1:2:3)是什么意思
说明:A中逗号之前的:表示所有行,逗号之后的1:2:3表示列从1到3取值,步长为2,所以列能取到的值为1,3。MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,...
用C语言编程求出1!+2!+3!+……+20!的值
以下是用C语言编程求出1!+2!+3!+……+20!的值示例代码 include<stdio.h> int main(){ int i,j;long sum,k;sum=0;for(i=1;i<=20;i++){ k=1;for(j=1;j<=i;j++){ k=k*j;} sum=sum+k;} printf("1+2!+3!+…+20!=%d",sum);} ...
c语言编程计算1+2+3+…n<500中最大的n并求和
include<stdio.h> int main(){ int n,sum; \/*sum表示的是和*\/ n=0; sum=0;while(sum<=500){ n++;sum=sum+n;} sum=sum-n; \/*sum大于500,多加了一次,所以要减掉最后加的那一个*\/ n--; \/*n也要减一*\/ printf("%d,%d",n,sum);} ...
用C语言求1+1\/2+1\/3+...+1\/100
用C语言编写求1+1\/2+1\/3+...+1\/100的和的方法如下:1.首先需要定义两个变量,这里定义变量sum用于不断累加计算的和,定义变量i用于分母的更新。2.接着需要使用C语言中的for循环,通过每次进行i+1的操作,实现分母数的更新。3.在循环体内将每一个新产生的分数累加到sum中。4.最后执行完成后...
C语言:用递归法求1*2*3 + 2*3*4 +3*4*5 +... +n*(n+1)*(n+2)的值...
代码文本:include "stdio.h"unsigned int f(unsigned int n){ return n!=1 ? n*(n+1)*(n+2)+f(n-1) : 6;} int main(int argc,char *argv[]){ unsigned int n;printf("Enter n(int 0<n<1601)...\\nn=");\/\/n>1600后可能会溢出 if(scanf("%d",&n)==1 && n>0 && n...
伊进贺卟: #include<stdio.h> main() { int i,b,sum=1,g;/*定义各个需要的元素,sum初值化,就拿1-4的阶乘的和来试炼*/ for(i=2;i<5;i++) { g=i; /*切记要赋值一下,因为下面要改变*/ for(b=1;b<=i-1;b++) { g*=b; } sum+=g; } printf("总和是%d\n",sum); }
图木自治县市13648503988: C语言编程问题:求 1!+2!+3!+...+n! - ?
伊进贺卟: int和long分配的内存空间长度不一样,表示的数值范围不一样.比如可能int有32位的空间,long有64位的空间.n=17超出了整数的表示范围. 这跟编译器的实现方式有关,还与机器的位数有关.比如一个机器用8位表示整型,表示的范围是-128...
图木自治县市13648503988: c语言 求1!+2!+3!+...+n!的值.n由键盘输入怎么写? - ?
伊进贺卟: #include<stdio.h> void main() {int i,n;int m=1;int sum=0;printf("请输入n的值:");scanf("%d",&n);for(i=1;i<=n;i++){m=m*i;sum=sum+m;}printf("1!+2!+3!+...+n!的值=%d\n",sum); } 运行过了 没什么错误了
图木自治县市13648503988: C语言:请分别用三种循环结构编程计算: 1!+2!+3!+...+n! , n的值由键盘输入. - ?
伊进贺卟: C语言#include<stdio.h> void main() { int n=1,i,sum=0,num=1; do { num=1; for(i=n;i>0;i--) num*=i; sum=sum+num; n++; } while(n<=10); printf("(1->10)! is %d\n",sum);}C++编写#include<iostream> using namespace std; void main() { int n=1,i,...
图木自治县市13648503988: 用递归算法,求1+2+3+······+n,n由键盘输入. 用C语言程序编写.?
伊进贺卟: int fun(int m) { if(m==1) return 1; else return m+fun(m-1); } void main(){ int x; scanf("%d",&x); printf("%d\n",fun(x)); } 你自己好好分析一下,相信你能写的出来,这是最基本的!
图木自治县市13648503988: c语言用函数求前n个数的阶乘和(即求1!+2!+3!+…+n!) - ?
伊进贺卟: scanf("%d",&n);int sum=0,temp=1,i,j; for(i=1;i<=n;i++)for(j=1;j<=i;j++){temp=temp*j; sum+=temp;}
图木自治县市13648503988: C语言,求1+2!+3!+...+N!的和 - ?
伊进贺卟: 你的主函数没有声明返回类型 应在 main前加void m=m*j; sum=sum+m; 还有,这俩句可以简化为:m*=j; sum+=m; 希望有所帮助 我测试过了 没有声明主函数返回值类型 他不会报错,但是执行时会出错
图木自治县市13648503988: 用c语言编程实现求1!+2!+3!+...+n!的值,其中n值由键盘输入 - ?
伊进贺卟: #include <stdio.h>//求n!的值 int func(int n) { if(n == 1) return 1; else return n*func(n-1); } int main() { int n,i,sum=0; printf("输入n的值: "); scanf("%d",&n); if(n<=0) { printf("Input Error!\n"); return -1; } for(i=1;i<=n;i++) { sum+=func(i); } ...
图木自治县市13648503988: c语言递归编写1+2+3+......+n?
伊进贺卟: #include int getResult(int n) { if(n==1) return 1; return n+getResult(n-1); } void main(void) { int n,num; scanf("%d",&n); num=getResult(n); printf("Result is: %d",num); getch(); }
图木自治县市13648503988: 用c语言编程实现求1!+2!+3!+...+n!的值,其中n值由键盘输入 - ?
伊进贺卟: #include<stdio.h>//64位机器最多只能取到n = 31,再大数据会溢出int main(){ int n = 0; long long int result = 0, tmp = 1; printf("Please input n to calculate 1! + 2! + ...+ n!:\n"); scanf_s("%d", &n); if (n < 1){ printf("Input wrong.\n"); return 0; } for ...