用C语言编写函数求 2!+4!+6!+8!+10!+12!+14!
声明一个和记录变量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语句校验。
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;
}
此题是累加累乘类题目,主要关注的是循环的变量关系。
还有最基本的算法。
很高兴为你解答。
请问还有什么疑问吗?
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\n",result);
}
我觉得多半是由于你用的int型的变量存储总和,但是int的存储范围是有限的,int是4个字节,32位,阶乘最后算出来的结果总和int放不下,就本道题来说,你把总和的那个变量改为double类型的再试试,int类型的值可以直接赋值给double的,属于自动类型转换。
#include "stdio.h"
#include "stdlib.h"
float fun(int a)
{
int i;
float sum;
for(i=1,sum=1;i<=a;++i)
sum*=i;
return sum;
}
int main()
{
int i;
float sum;
for(i=1,sum=0;i<=20;++i)
sum+=fun(i);
printf("1!+2!+3!+…+20!=%.0f\n",sum);
system("pause");
return 0;
}
这个程序的结果是87660962666,_int64的范围不够。
void main()
{
int iSum = 0;
int iCurValue = 1;
for(int i = 2; i <=14; i+=2)
{
iCurValue *= (i-1)*i;
iSum+=iCurValue;
}
printf("Sum = %d\n",iSum);
}
#include <stdio.h>
int main()
{
int i;
double s,tp;
for(i=2;i<=14;i=i+2)
{
s=1;
for(;i>=1;i--)
{
s*=i; }
tp+=s;}
printf("f",tp);
}
独张派芬: #include int main (void) { int i,j; long sum = 0; long tmp; for (i = 2;i <= 10;i+=2) { tmp = 1; for (j = i;j>=1;j--) tmp= tmp * j; sum += tmp; } printf("%ld\n",sum); return 0; }
上高县13128029115: c语言编程 求阶乘2!+4!+6!+…12!. - ?
独张派芬: # include int main(){ int n,i,sum=0,m=1; scanf("%d",&n); for(i=1;im*=i; if(i%2==0) sum+=m; } printf("%d",sum); return 0; }
上高县13128029115: 求解一道简单的C程编程题. 输入一个正整数n,编写一个程序,计算2+4+6+...+n的值 - ?
独张派芬: #include <stdio.h> int main(int argc, char *8argv) { int val =0 ; int sum = 0; int a = 0; int i = 0; printf("put in the number\n"); scanf("%d", &val); a = val / 2; for (i = 1; i <= a; i++) { sum += 2 * i; } if (0 != val % 2 ) { sum += val; } printf("2 + 4 + 6 +...+n result:%d\n", sum); return 0; }
上高县13128029115: 用c语言求2+4+6+8+10+…+2n - ?
独张派芬: 如果你用的是WIN-TC的话,下面这个程序是比较简单的;如果你用的是TURBO C的话就把“getch()"改为”getchar()"就可以了. #include"stdio.h" main() {int i,sum=0; for(i=2;i<=100;i++,i++) {sum=i+sum;} printf("The answer is %d",sum); getch(); } 我在WIN--TC中运行了一下 答案是2550
上高县13128029115: 用C语言编程实现2!+4!+6!+8!+10! 要用while不要出现for - ?
独张派芬: 参考代码:#include "stdio.h"#include "stdlib.h" double fun(double a) { if(a==0||a==1) return 1; else return a*fun(a-1); } int main() { int i=2; double sum=0; while(i<=10){ sum+=fun(i); i+=2; } printf("2!+4!+6!+8!+10!=%.0lf\n",sum); return 0; }
上高县13128029115: 大一c语言编写计算2+4+6+8+......+100程序怎么设计 - ?
独张派芬: int x = 0; int sum = 0; for(x=2;x{ sum += x; }// sum就是你要的求和结果.望采纳 如果你满意,请评价为【满意答案】,谢谢!
上高县13128029115: C语言作业.⒈求2+4+6+8……20的值.⒉编写程序,输出以下信息:*** ***2*16=32*** *** - ?
独张派芬: #include<stdio.h> void main() { int i=0,sum=0; for(i=2;i<=20;i=i+2) { sum=sum+i; } printf("%d",sum); }
上高县13128029115: c++语言编程,怎么用IF编出2+4+6+……100??
独张派芬: #include "stdio.h" void main(){ int i,s=0; for(i=1;i<=100;i++) if(i%2==0)s+=i; printf("%d",s) }
上高县13128029115: 编写程序,求满足2+4+6+…….+n>1000时的n的最小值及其和值. - ?
独张派芬: 给,已经编译运行确认:#include<stdio.h> #include<conio.h> void main() {int n=0,s=0;while(s<1000){n+=2;s+=n;}printf("n=%d s=%d",n,s);getch(); } 运行结果:n=64 s=1056
上高县13128029115: 用c语言编写2+4+6+8+10+14+16+18+20 - ?
独张派芬: int main(){ int sum=0; for(int i=2;isum+=i } return 1; }