编程的高手进

来源:百度知道 编辑:UC知道 时间:2024/05/20 22:20:29
老师要我用C编一个程序求1!、3!、5!的和,程序代码如下,看
哪里有问题,怎么修改。
#include<math.h>
void main()
{
int a=1,b=3,c=5,n;
long factorial(int n);
long result,A,B,C;
if(n=0,n++,n<=c)
if(n=a)
A=factorial(n);
else if(n=b)
B=factorial(n);
else if(n=c)
C=factorial(n);
result=A+B+C;
printf("%ld",result);
}
long factorial(int n)
{
long k=1;
int i;
for(i=2;i<=n;i++)
k=i*k;
return(k);
}

这是先输入一个奇数,如果是5,输出1!+3!+5!的合,
输入的7的话输出 1!+3!+5!+7!的合

c++写的,用C的话改点就OK

#include<iostream.h>

int main()
{
int factorial(int n);
int n;
cout<<"请输入一个奇数:";
cin>>n;
cout<<"结果是:";
cout<<factorial(n);
cout<<endl;
return 0;
}
/**********求1~n奇数阶乘阶加函数*************/
int factorial(int n)
{
int sum=0; //sum=1!+3+5+..+n!实现+的功能
int s=1;
for (int k=n;k>=1;k-=2) //输入一个奇数,自减n为5的时候先算5然后在算3在后算1;
{
for (int i=1;i<=k;i++) //从1循环k次,k=n;
s*=i; //1~k的阶乘
sum+=s; //加进去
s=1; //然后初始化阶乘留下的s
}
return sum;
}

程序流程有点问题,在注释里给你说明:

void main()
{
int a=1,b=3,c=5,n;
long factorial(int n);
long result,A,B,C;

for (n=0;n<=c;n++)//这里应该是一个循环,而不是判断,注意括号里的三句话的内容和顺序
{
if(n==a)//一个等号是赋值,两个等号才是判断,下面也一样