PTA刷題筆記(C語言) | 7-29 二分法求多項式單根 (20分)

開始刷題,感覺代碼量和基礎太渣了,導致數據結構不會,重頭慢慢刷吧~
在這裏插入圖片描述

1、題目

在這裏插入圖片描述
輸入樣例:

3 -1 -3 1
-0.5 0.5

輸出樣例:

0.33


2、代碼

#include <stdio.h>
double a3=0,a2=0,a1=0,a0=0;
double f(double x){
	return a3*x*x*x+a2*x*x+a1*x+a0;
}
int main(){
	scanf("%lf %lf %lf %lf",&a3,&a2,&a1,&a0);
    double a,b;
    scanf("%lf %lf",&a,&b);
    double mid=0.0;
    while(b-a>=0.001){
    	if(f((a+b)/2)==0){
    		mid=(a+b)/2;
    		break;
		}
		if(f(a)==0){
			mid=a;
			break;
		}
		if(f(b)==0){
			mid=b;
			break;
		}
		if(f(a)*f((a+b)/2)>=0){
			a=(a+b)/2;
		}
		else if(f(b)*f((a+b)/2)>=0){
			b=(a+b)/2;
		}
	}
	if(b-a<0.001){
		mid=(a + b) / 2;
	}
	printf("%.2lf",mid);
	return 0;
}

在這裏插入圖片描述

3、討論

距離足夠小。。。也不說是多少,我看了下網上的答案,0.01和0.000001對結果沒有影響,中心點和端點需要討論,其他的按照給定的規定輸出即可。

妙啊!!!
在這裏插入圖片描述
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章