偶数阶乘求和

2!+4!+6!+……+m!=?,m要求键盘输入且<=10,c语言方法
#include<iostream>
using namespace std;
void main()
{
int fact(int n);

int i = 2,n;
int sum = 0;
cout<<"请输入一个不大于10的偶数m"<<endl;
cin>>n;

if(n%2!=0||n>10){cout<<"你的输入有误";}
while(i<=n)
{

int i;
for(i=2;i<=10;i=i+2)
sum=sum+fact(i);

cout<<"2!+……"<<n<<"! = "<<sum<<endl;}
}

int fact(int n)
{
static int m = 1;
m = m*n;
return m;
}

第1个回答  2011-05-17
#include<iostream>
using namespace std;
int main()
{
int fact(int n);

int i,n;
int sum = 0;
haha: cout<<"请输入一个不大于10的偶数m"<<endl;
cin>>n;

if(n%2!=0||n>10){
cout<<"你的输入有误!"<<endl;
goto haha; // 输入错误后再重新输入即可,不必退出程序
}

for(i=2;i<=n;i=i+2)
sum=sum+fact(i);
cout<<"2!+……"<<n<<"! = "<<sum<<endl;
return 0; //标准的程序设计里面都这样子写的,主函数用int 型,返回0 ,在ACM竞赛里面必须要有返回值。
}

int fact(int n) // 求n 的阶乘
{
int m = 1; //这里改为动态的一样,一般是用动态的,这样有利于程序代码的再用
for(int i=1;i<=n;i++)
m = m*i;
return m; //返回阶乘值
}
第2个回答  推荐于2017-10-08
#include<iostream>
using namespace std;
void main()
{
int fact(int n);

int i = 2,n;
int sum = 0;
cout<<"请输入一个不大于10的偶数m"<<endl;
cin>>n;

if(n%2!=0||n>10){cout<<"你的输入有误"<<endl;}
for(i=2;i<=n;i=i+2)//你的这部分代码有累赘的部分,所以改了
sum=sum+fact(i);
cout<<"2!+……"<<n<<"! = "<<sum<<endl;
}

int fact(int n)
{
static int m = 1;
m = m*n*(n-1);//主要问题在这里,m保留的是上一次的阶乘,如2!,而下次的阶乘4!=4*3*2!
return m; //所以m=m*n*(n-1);
}追问

如果输入数字5,程序会报错,但为什么还是有加起来=26?怎么完善啊!

追答

添加一句即可:
cout<<"你的输入有误"<<endl;
return;

本回答被提问者采纳
相似回答