c语言中pow函数问题

#include "stdafx.h"
#include "cmath"
#include "iostream"
using namespace std;
int main()
{
int k,i=0,j;
double x[100],e;
cin>>x[0]>>e;
do
{
x[i+1] =pow((x[i]+1),1.0/3) ;
i++;
}
while(x[i]-x[i-1]<e);
cout<<i<<endl;
cout<<x[i]<<endl;
return 0;
}
//程序运行输入后出现

while(fabs(x[i]-x[i-1])>e);才对
不需要用数组:
#include "stdafx.h"
#include <cmath>
#include <iostream>
using namespace std;
int main()
{
double val_old,val_new,e;
cin>>val_new>>e;

do
{
val_old=val_new;
val_new=pow(val_old+1,1.0/3);
}while(fabs(val_new-val_old)>e);

cout << val_new << endl;
return 0;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-09-14
这个要看输入的数据啦,如果输入的数据不对,就会出现上述情况!
第2个回答  2019-03-28
由于while里的条件始终满足,所以循环无法终止,i会一直递增下去,而你的x数组是有限的,最终会越界访问内存,当到达不可读内存区域时,会出现错误。
相似回答