注册 登录
编程论坛 VC++/MFC

初级学c++求教 阶乘求和程序 有些错帮纠正下

lorinky 发布于 2010-05-11 13:10, 1434 次点击
求1!+5!+9!+...+21!之和并输出
我的程序是
#include"stdio.h"
void main()
{
    float i=1,sum=0;int m;
        for(m=1;m<=21;m+4);
        {
            i=i*m;
            sum=sum+i;
        }
        printf("sum=%ld\n",sum);
}
但是运行之后的结果不正确
出现了错误
晴高手指点
6 回复
#2
2010-05-11 13:49
注意溢出…数太大…
#3
lorinky2010-05-11 23:03
回复 2楼 回忆不是我的
具体怎么做啊?给出代码说明下  我不太懂 尽量详细 简单些
谢了
#4
feixinz2010-05-15 10:32
#include<stdio.h>
int factoria(int n);
void main()
{
    int  sum=0;
    int m;
        for(m=1; m<=21; m=m+4)
        {
           sum = sum + factoria(m);        
         //  printf("%ld\n", sum);
        }
        printf("sum=%ld\n",sum);
}
/*
    求n的阶乘,为了处理更大的数,可以返回long, double更大的值,但这里int就够用了
*/
int factoria(int n)
{
    if(n <= 1)
        return 0;
    int result = 1;
    for(int i = 1; i <= n; i++)
    {
        result = i*result;
        //printf("%d, %ld\n",i, result);
    }
    return result;
}
#5
feixinz2010-05-15 10:49
1。 你写的是求1 + 1*5 + 1*5*9 + 1*5*9*13 ....
2。 for后面多了个分号
3。 float输出要用%f, %d值输出整型,
#6
韵笛之声2014-03-30 11:20
我也是初学者,爱莫能助啊
#7
宇智波鼬1232014-06-21 18:45
#include<iostream>  

using namespace std;  
  
int fac(int x);  
double sum=0;
  
void main()  
{  
    int i;  
  
    for(i=1;i<=9;i=4+i)  
    {
    sum=sum+fac(i);
    }
   
    cout<<sum<<endl;


}  
  
int fac(int x)  
{  
    int n;
    static double f=1;   //静态局部变量  
  for(n=1;n<=x;n++)
    f*=n;  
    return f;  
}
1