这个程序无法正常运行,输入了三个数字就直接暂停了。以及求问如何把一串数字以字符形式存储在char型数组中?
#include <stdio.h>#include <stdlib.h>
#include <math.h>
float fun(float n)
{
float sum=0;
sum=pow(n,4)+2*pow(n,3)+pow(n,2)-5;
return sum;
}
/*float happy(char strng[],int precision)//我想把精度precision在主函数中以整数形式输入后确认精度。可是没法将输入的root强制转换成一个一个的char进行判定
{
int i=0,count=0;
while(strng[i]!='\n');
{
if (strng[i]=='.')
{
while(strng[i]!='\n')
{
count++;
i++;
}
if(count>=precision)
return 1;
else
return 0;
i++;
}
else;
}
}*/
void findRoot(float precision,float a,float b)
{
float root;
int n=0;
while(1)
{
root=(a+b)/2;
if (precision>=root&&fabs(fun(root)-0)<=precision)
{
printf("the root is%f",root);
printf("run the exe:%d",++n);
break;
}
else if (fabs(b-root)<fabs(a-root))
{
n++;
a=(a+b)/2;
}
else
b=(a+b)/2;
n++;
}
}
int main(int argc, char *argv[])//很麻烦,确认精度要输入0.00001这样 然后上面想改良,结果失败了。
{
float precision;
float a, b;
printf("scanf a precision:");
scanf("%f",&precision);
fflush(stdin);
printf("scanf a left:");
scanf("%f",&a);
fflush(stdin);
printf("scanf a right:");
scanf("%f",&b);
findRoot(precision,a,b);
system("pause");
return 0;
}