C++程序问题(内有代码)

来源:百度知道 编辑:UC知道 时间:2024/07/03 01:22:04
我用的是Visual Studio 2005

// 编写一个函数求下列函数值。
// s(x,n)=x/(1!+2!+3!+…+n!)

#include "stdafx.h"
#include <iostream>
using namespace std;
float fact(int k) // 求K的阶乘函数
{
int i;
float f=1.0;
for(i=0;i<=k;i++)
f=f*i;
return f;
}
float s(int n) // 求1!+2!+3!+…+n!的函数
{
int i;
float s=0.0;
for(i=1;i<=n;i++)
s=s+fact(i);
return s;
}
void main()
{
float x,f;int n;
cout<<"Please input x:";
cin>>x;
cout<<"Please input n:";
cin>>n;
f=x/s(n); // 求本题的表达式值
cout<<"The result is "<<f;
}

输入x=9,n=3
执行结果为:
Please input x:9
Please input n:3
The result is 1.#INF

而不是预期中的
Please input x:9
Please input n:3
The result is 1.000000

为什么?哪里有问题么?该怎么改?

float fact(int k) // 求K的阶乘函数
{
int i;
float f=1.0;
for(i=0;i<=k;i++)
f=f*i;
return f;
}
因为fact()这个个函数中的for循环中的i的初值赋0,所以你的f的值一直为0,
把i=0改成i=1,应该就没问题了

#include <cstdlib>
#include <iostream>
using namespace std;
float fact(int k) // 求K的阶乘函数
{
int i;
float f=1.0;
for(i=1;i<=k;i++)
f=f*i;
return f;
}
float s(int n) // 求1!+2!+3!+…+n!的函数
{
int i;
float s=0.0;
for(i=1;i<=n;i++)
s=s+fact(i);
return s;
}
int main()
{
float x,f;int n;
cout<<"Please input x:\n";
cin>>x;
cout<<"Please input n:\n";
cin>>n;
f=x/s(n); // 求本题的表达式值
cout<<"The result is "<<f<<endl;
system("PAUSE");
return EXIT_SUCCESS;
}

局部变量,不能作为返回值