C++运行 怎么输入后没有反应

#include <iostream>
#include<iomanip>
#include<cmath>
using namespace std;
int main()
{cout<<"请输入x的值:"<<endl;
int s=1;
double x,n=1,t,sum=0;
cin>>x;
cout<<endl;
long f(int);
while((fabs(t))>1e-9)
{sum=sum+t;
n++;
s=-s;
t=s*pow(x,n)/f(n);
}
sum=sum+1;
cout<<"sum="<<setiosflags(ios::fixed)<<setprecision(8)<<sum<<endl;
return 0;
}

long f(int)
{static int n=1;
long z;
if(n==1) z=1;
else
z=f(n-1)*n;
return z;
}
我知道一定是哪出了问题 但我想知道这种没有反应一般是什么问题 帮帮我这个菜鸟新手吧 谢谢哈~~

是用泰勒级数求函数值吧?
f(n)参数传递发生数值变化了。
主要是由于当n很大时,比如说大于65537,参数传递到f(n)是超过了整型的范围,发生截取,不能达到你预想的目的。
建议你这样改(这样该对于太大的x也不行的话,再把double改成long double看看。):
#include <iostream>
#include<iomanip>
#include<cmath>

using namespace std;
double f(double n);//把int改为double,long也改为double

int main()
{

cout<<"请输入x的值:";
int s=1;
double x, n=1, t = 1, sum = 0;
cin>>x;
while(fabs(t) > 1e-2)
{
//cout<<"fabs(t)="<<setiosflags(ios::fixed)<<setprecision(20)<<t<<"\tf(n)="<<f(n)<<endl;
//上面这一行可以检验你的结果,不妨去掉注释在你原来的代码的相应部位加上,其余部分不变看一看是不是f(n)=0了
sum += t;
s =- s;
t = s * pow(x,n) / f(++n);
}
sum=sum+1;
cout<<"sum="<<setiosflags(ios::fixed)<<setprecision(8)<<sum<<endl;
return 0;
}
double f(double n)
{
return n > 1 ? f(n-1) * n : 1;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-05-28
#include <iostream>
#include<iomanip>
#include<cmath>

using namespace std;
long f(int n);

int main()
{

cout<<"请输入x的值:";
int s=1;
double x, n=1, t = 1, sum = 0;
cin>>x;
while(fabs(t) > 1e-2)
{
sum += t;
s =- s;
t = s * pow(x,n) / f(++n);
}
sum=sum+1;
cout<<"sum="<<setiosflags(ios::fixed)<<setprecision(8)<<sum<<endl;
return 0;
}

long f(int n)
{
return n > 1 ? f(n-1) * n : 1;
}
第2个回答  2010-05-28
你这个程序是要干嘛呢?
要判断一个数的N次方和N的阶乘的比例?
我给你改了下,但是输入的X只能是1、2
#include <iostream>
#include<iomanip>
#include<cmath>
using namespace std;
long f(int n);
int main()
{
cout<<"请输入x的值:"<<endl;
int s=1;
double x,n=1,t=0,sum=0;
cin>>x;
cout<<endl;
//t=0;// f(x); //函数声明?还是要调用函数呢?,改成了调用,声明拿到了前面
while(fabs(t)<1e9)//如果是计算级数和和话t的绝对值会越来越大的,应该设置上限而不是下限,你原来那样只会让堆栈溢出……
{
sum=sum+t;
n++;
s=-s;
t=s*pow(x,n)/f(n);
}
sum=sum+1;
cout<<"sum="<<setiosflags(ios::fixed)<<setprecision(8)<<sum<<endl;
system("pause");//DOS介面暂停
return 0;
}

long f(int n)//这是要算阶乘吧?要有输入变量名哇
{
//static int n=1;
long z;
if(n==1)
z=1;
else
z=f(n-1)*n;
return z;
}
第3个回答  2010-05-28
在while那里进入死循环了,所以你才看不到结果
为了证明这个结论,你可以在while里面加入这样一条语句cout << "test";结果你会看到,不断地输出test,这就说明进入了死循环,或是要循环很多次。
第4个回答  2010-05-28
貌似是你的循环体写错了,还有那个函数,你看看能不能找到呀,

C++运行 怎么输入后没有反应
主要是由于当n很大时,比如说大于65537,参数传递到f(n)是超过了整型的范围,发生截取,不能达到你预想的目的。建议你这样改(这样该对于太大的x也不行的话,再把double改成long double看看。):include <iostream> include<iomanip> include<cmath> using namespace std;double f(double n);\/\/...

C++运行出现错误,怎么回事?
方法一:重新安装应用程序 最简单的方法,就是先卸载出现报错的应用程序,但务必要删干净,把与该软件相关的任何文件删除后,重启电脑出奇迹,再重新安装该应用程序。驱动人生提醒,在安装过程中关闭杀毒软件,但可以在关闭杀毒软件前先扫描检测应用程序是否有病毒风险。方法二:管理员身份运行应用程序 有些...

运行程序的时候出现C++错误怎么办
运行程序的时候出现C++错误这样的问题一般是因为DLL文件出错或者VC运行库没有安装导致的,解决方法 一、下载VC运行库进行安装修复,修复后再进行测试。二、以管理员身份运行命令提示符,打开开始菜单,搜索cmd。在命令提示符上单击右键,选择“以管理员身份运行”;在命令提示符中输入以下命令:for%iin(%win...

C++运行时敲回车不出结果,直接退出,怎么修改啊?
else printf("运算符输入错误!\\n");return 0;} 程序如上 你输入 3*4回车是有结果的。程序没有什么大问题。主要是 sign='*'应该写成 sign=='*'后面的类似。有问题可以hi我。

请高手帮我看看我这个C++程序运行时怎么输入数据就没有反应了。
就行了 2.for(j=0;j<num[i];j) j后面少了++ 3.for(k=0;k<i;k++){ sum=sum+"0";pro=Add(sum,pro);} }位置错了,应该是 for(k=0;k

C\/C++getch()输入无响应问题
我在VC6 SP6和MinGW 5下测试了你的代码,是正常的,每按一下2键(w上面的那个2,不是小键盘的2)都有反应。你说的问题可能出在其它代码中。include <iostream> include<conio.h> using namespace std;class Fish { public:void Swim(){ cout<<"fish swimming";} };int main(){ char ch;...

C++编译成功运行不了
1. 在while(cin>>x) 输入后,没有"循环判断"。 你只是简单的赋值 i = 0;判断 if (x == words[0]), yes则count[0]+1; no则count[0] = 1;因此,上面的代码不会统计用户的全部输入。2. count这个vector<int>没有初始化,直接就count[i]访问,一定出问题,起码应该resize一下。3. ...

C语言编程用Dev C++运行时怎么加了getchar()还是不行呢
比如程序只有输出,那么最后的getchar 就等待输入,起到暂停的作用 如果程序需要输入,那么最后会有一个回车,就让getchar 读取了,于是暂停就失效了

电脑运行DEV C++时出现这个提示原因在哪,怎么处理
方法一:在程序的最后加条控制输入的语句,让程序等待键盘的响应。如getch(),getchar(),system("pause"),getch()要加头文件,conio.h...都可达到此效果 缺点是每个程序都要进行该操作,该方法一定奏效。方法二:前段时间看到的方法,此方法是对dev-c++进行配置,你是否能成功就没把握拉。具体步骤...

microsoft visual c++运行库出错是怎么了?
首先,您可以尝试从Microsoft官方网站下载并安装适用于您系统的Visual C++ Redistributable组件。如果问题仍然存在,您可以运行系统文件检查器来修复可能损坏的系统文件。如果这些方法都无效,您可以联系“MyApp.exe”的开发者,询问是否有可用的修复程序或更新版本,以解决与Visual C++ Runtime Library...

相似回答