用C语言编一个程序

编辑一个从1到10的阶乘的和的程序。。。。要有必要的解释同时可以输入后看到结果的。。最好再编辑一个1到n的 编辑两个的我加50分
有时间限制的就到今天晚上23点阿。。。

第1个回答  2009-01-27
1. 从1到10的阶乘的和的程序
运行结果:
1-10阶乘和为: 4037913

#include<conio.h>
#include<stdio.h>

int getResult(int num)
{
if(num == 1 ) /* 1! =1 */
return 1;
else /* 如果 num != 1 那么则必然有 num! = num * (num -1)!*/
return num * getResult(num -1);
}

void main()
{
int i = 1; /*计数器 初试为1 (1-10)*/
int result = 0 ; /*用来存储若干阶乘的和 初始化为0*/
for(;i<=10;i++) /*循环10次以计算1-10阶乘的和*/
{
result+=getResult(i); /*把 i! 加到累加器中*/
}
printf("1-10阶乘和为: %d", result);

getch();
}

2.从1到n的阶乘的和的程序
#include<conio.h>
#include<stdio.h>

int getResult(int num)
{
if(num == 1 ) /* 1! =1 */
return 1;
else /* 如果 num != 1 那么则必然有 num! = num * (num -1)!*/
return num * getResult(num -1);
}

void main()
{
int i = 1; /*计数器 初值为1 (1-n)*/
int n;
int result = 0 ; /*用来存储若干阶乘的和 初始化为0*/

printf("请输入n值: ");
scanf("%d",&n);

for(;i<=n;i++) /*循环n次以计算1-n阶乘的和*/
{
result+=getResult(i); /*把 i! 加到累加器中*/
}
printf("1-%d阶乘和为: %d", n,result);

getch();
}
第2个回答  2009-01-28
我也凑一下热闹:
从1到10的阶乘的和
#include<stdio.h>
main()
{
long i,j,k,sum;
for(i=1,sum=0;i<=10;i++)
{
for(j=1,k=1;j<=i;j++)
k*=j;
sum+=k;
}
printf("%ld",sum);
}
结果:4037913
一个1到n的:
#include<stdio.h>
main()
{
long n,i,j,k,sum;
printf("输入一个数");
scanf("%d",&n);
for(i=1,sum=0;i<=n;i++)
{
for(j=1,k=1;j<=i;j++)
k*=j;
sum+=k;
}
printf("%ld",sum);
}
好了,我感觉我写的是最短的,嘿嘿本回答被提问者采纳
第3个回答  2009-01-27
include<stdio.h>
main()
{
int i,j,h;
int sum = 0;
for(i=1;i++;i<=10)
{
h=1;// 注意h的位置,放在内部循环的外面
for(j=1;j<=i;j++)

h*=j; // 求j的阶乘

sum+=h;//循环相加求和
}
printf("1-10的阶乘和:%d\n",sum);
}

1到n的类比如下:

#include <stdio.h>
main()
{
int i,j,h,n;
int sum = 0;
printf("输入n: \n");
scanf("%d",&n);
for(i=1;i++;i<=n)//循环相加到n
{ j=1;
for(j=1;j<=i;j++) h*=j;
sum+=h;
}
printf("1-n的阶乘和:%d\n",sum);
}
结果自己执行一下,程序是对的。不太明白的话把算法过程逐步代入数字想一下,应该就没问题了。
第4个回答  2009-01-27
这个是1到N的,1到10的可以把a改为10即可
#include <stdio.h>
int mult(int a)
{
int c;
if(a==0) return 1;
c=mult(a-1)*a;
return c;
}

void main()
{
int a,b=0,c;
printf("输入数:");
scanf("%d",&a);
for(c=1;c<=a;c++)
{
b+=mult(c);
}
printf("结果为: %d\n",b);
}
第5个回答  2009-01-27
#include <stdio.h>
int Compute(int a)
{
int x;
if(a==0) return 1;
x = Compute(a-1)*a;
return x;
}

void main()
{
int a=10,sum=0,i;

for(i=1;i<=a;i++)
{
sum += Compute(a);
}
printf("1-10结果: %d\n",sum);
}

//1- n的
#include <stdio.h>
int Compute(int a)
{
int x;
if(a==0) return 1;
x = Compute(a-1)*a;
return x;
}

void main()
{
int n,sum=0,i;
printf("输入N:");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
sum += Compute(n);
}
printf("1-n结果: %d\n",sum);
}
相似回答