用C语言编写函数求2!+4!+6!+8!+10

作者&投稿:余凯 (若有异议请与网页底部的电邮联系)
用C语言编写函数求2!+4!+6!+8!+10!~

int i,s=0,p;
for(i=2;i<10;i+=2)
{ p=1; 此处要注意,每进行一次阶层运算,就要从1开始累乘。
for(j=1;j<=i;j++)
p=p*j;
s+=p;
}

此题是累加累乘类题目,主要关注的是循环的变量关系。
还有最基本的算法。
很高兴为你解答。
请问还有什么疑问吗?

#include

int Factorial(int num)
{
if(num==0 || num==1)
return 1;
else
return num*Factorial(num-1);
}

void main()
{
int result=0;
for(int number=2;number<=14;number+=2)
result+=Factorial(number);
printf("2!+4!+6!+8!+10!+12!+14!=%d
",result);
}

声明一个和记录变量s,声明一个阶乘记录变量t,再声明一个计数变量n。用一个for循环,计数变量n从1开始步长为1增值至10为止;t初值设置为1,始终记录它与n的当前值的乘积,就得到了n的当前值的阶乘n!;s初值置0,累加每个n当前值时的阶乘t,就完成了题设要求。代码如下:

#include "stdio.h"int main(int argc,char *argv[]){ int s,n,t;

for(s=0,t=n=1;n<11;s+=t*=n++);//用t记录每个n的当前值的阶乘并累加到s

printf("1!+2!+3!+...+10! = %d
",s); return 0;}

扩展资料:

C语言编写函数技巧:

1、原则上尽量少使用全局变量,因为全局变量的生命周期太长,容易出错,也会长时间占用空间.各个源文件负责本身文件的全局变量,同时提供一对对外函数,方便其它函数使用该函数来访问变量。

比如:niSet_ValueName(…);niGet_ValueName(…);不要直接读写全局变量,尤其是在多线程编程时,必须使用这种方式,并且对读写操作加锁。

2、参数命名要恰当,顺序要合理。

例如编写字符串拷贝函数str_copy,它有两个参数。如果把参数名字起为str1 和str2,例如

void str_copy (char *str1, char *str2);

那么很难搞清楚究竟是把str1 拷贝到str2 中,还是刚好倒过来。

可以把参数名字起得更有意义,如叫strSource 和strDestination。这样从名字上就可以看出应该把strSource 拷贝到strDestination。

还有一个问题,这两个参数那一个该在前那一个该在后?参数的顺序要遵循程序员的习惯。一般地,应将目的参数放在前面,源参数放在后面。如果将函数声明为:

void str_copy (char *strSource, char *strDestination);

别人在使用时可能会不假思索地写成如下形式:

char str[20];

str_copy (str, “Hello World”); 参数顺序颠倒

3、如果参数是指针,且仅作输入参数用,则应在类型前加const,以防止该指针在函数体内被意外修改。例如:

void str_copy (char *strDestination,const char *strSource);

4、不要省略返回值的类型,如果函数没有返回值,那么应声明为void 类型。

如果没有返回值,编译器则默认为函数的返回值是int类型的。

5、在函数体的“入口处”,对参数的有效性进行检查。尤其是指针参数,尽量使用assert宏做入口校验,而不使用if语句校验。



unsigned int add[5] = {2,4,6,8,10};

unsigned int value2 = 0;
for (int i = 0;i < 4;i++)
{
unsigned int value1 = 1;
for (int j = 1;j <= add[i];j++)
{
value1 = value1*j;
}
value2 +=value1;
}
value2 = 10 + value2;
printf("value2 is %d",value2);
okay不
后面有没有10!?

#include<stdio.h>
int main()
{int i,j,k,t;
for(i=0;i<11;i++)
for(j=0;j<=2*i;j++)
{t=i*j;
k=k+t;
}
printf("%d*%d=%e\n",k);
return 0;
}

思路:
for(i=2;i<=10;i+=2)
for(n=1;n<=i;n++)
t=t*n;
s+=t;

#include"stdio.h"
void main()
{
int s,a,i,ss;
for(s=0,a=1 ;a<=10;a++)
{ {
for(ss=1,i=1;i<=a;i++)
ss=ss*i;
}
s=s+ss;
}
printf("%d\n",s);
}

用c++程序设计定义一个求阶乘的函数,然后计算1!-2!+3!-4!+5!-6!+7...
答:include<stdio.h> int fact(int n){ int i,f=1;for(i=1;i<=n;i++)f *=i;return f;} int main(){ int i,n,sum=0;scanf("%d",&n);for(i=1;i<=n;i++){ if(i%2==0)sum -= fact(i);else sum += fact(i);} printf("%d\n",sum);} 运行结果为 326981 ...

用c语言求;1!+2!+3!+4!+……+n!
答:include<stdio.h>long factor(int n){ if(n==0|| n==1)return 1;else return n*factor(n-1);} long sum(int n){ long result=0;int i;for(i=1;i<n+1;i++)result+=factor(i);return result;} void main(){ long result=sum(10);printf("the result of sum(10) is:%ld\...

求助:下面是我编写函数求一元二次方程的C语言程序,但提示有错误,麻烦帮...
答:double x1,double x2;这里!!逗号改为“;” 或是去掉后面的double;void root2(double a,double b,double c){ double x1,double x2;x1=(-b+sqrt(disc))/(2*a);//里面的disc也要声明的!!

C语言,用函数调用的方法,求2个整数之和???
答:include<stdio.h> int fun(int a,int b){ int sum=0;sum=b+a;return sum;//返回值为为变量值和 } int main(){ int a,b,sum=0;scanf("%d%d",&a,&b);sum=fun(a,b);//调用函数 printf("%d",sum);return 0;}

如何用C语言编写程序:调用函数求2-1000质数的个数
答:include<stdio.h> int sushu(int x){ int i;for(i=2;i<x;i++)if(x%i==0) break;if(i==x) return 1;else return 0;} main(){ int i,n=0;for(i=2;i<=1000;i++)if(sushu(i)==1) n++:printf("n=%d",n);} ...

...函数,然后计算1!-2!+3!-4!+5!-6!+7!-8!+9!.C语言问题
答:int fact(int n){ int m = 1;while(n>0){ m*=n;n--;} return m;} int main(){ int i, sum=0;for(i=1;i<=9;i++){ if(i%2)sum+=fact(i);else sum-=fact(i);} printf("1!-2!+3!-4!+5!-6!+7!-8!+9!=%d\n", sum);} ...

...当和大于9000时,终止求和并输出结果 用C语言编写
答:我修改一下一楼的答案…include<stdio.h> void main(){ int a=2;int b=0;while(b<9000){ a=a*2;b=b+a;} printf("b=%d";&b);}

用C语言编写程序,求2+4+6+…+98+100之和.
答:include<stdio.h> int main(){ int i,m=0;for(i=2;i<=100;i+=2) m=m+i;printf("%d\n",m);return 0;} 或 include int main(){ int i,sum=0;for(i=1;i<=50;i++){ sum=sum+2*i;} printf("2+4+6+…+98+100=%d\n",sum);return 0;} ...

用C语言中,如何用调用函数编写求一元二次方程的根
答:delta = b* b - 4*a*c ;if(delta<0)return 0 ;deltasqrt = sqrt(delta) ;if (a!=0.0){ root[0] = (deltasqrt - b)/(2.0*a) ;root[1] = (-deltasqrt - b)/(2.0*a) ;} if (root[0] == root[1]) return 1;else return 2 ;} int main(void){ //计算方程...

用C语言求1!+2!+3!+4!+5!+6!+…20!
答:正确代码如下:本人比较郁闷64位整数2561317393011820313竟然不能输出;include<stdio.h> include<stdlib.h> include<string.h> __int64 jc(int a){ __int64 i,k;k=1;for(i=1;i<=a;i++){ k*=i;} // printf("%I64d\n",k);return k;} int main(){ __int64 i,j,k,bj,len,a...