做關(guān)于二次函數(shù)的問題,首先考慮a的取值a0,開口向上;a0,開口向下。
創(chuàng)新互聯(lián)公司主營舒蘭網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,重慶APP開發(fā)公司,舒蘭h5微信平臺小程序開發(fā)搭建,舒蘭網(wǎng)站營銷推廣歡迎舒蘭等地區(qū)企業(yè)咨詢
頂點(
-b/2a,(4ac-b^2)/4a
)
該題在x=-1時,y有最小值-4,就說明了該二次函數(shù)的頂點(并且a是大于0的)
即-b/2a=-1,(4ac-b^2)/4a
=-4
——
a
x1^2+x2^2=10(兩根之和為-b/a,兩根之積為c/a)
x1^2+x2^2=(x1+x2)^2-2x1x2=(b/a)^2-2c/a=10——
b
根據(jù)
a
和
b
解出就行了
一:scanf("%3f%3f%3f",a,b,c); 這里要求輸入數(shù)據(jù)必須為三位數(shù),最好改成:
scanf("%f%f%f",a,b,c); 去掉限定
二:
void tonggen(float a,float b,float k)
//float a,b,k; 如果這樣定義,則上一行的函數(shù)定義應該寫成:void tonggen( a, b, k) 二者不能同存
{
float x;
x=(-b)/(2*a); //這里應該為2*a
printf("二次函數(shù)為同根為x=%3f",x);
}
我看書上是改錯題,你沒有發(fā)完整的原題(錯誤的代碼),無法改錯,只能按照編程題做了:
main(){
int a=1,b=5,c=-6;
float x1,x2,delta;
delta=b*b-4*a*c;
if(delta0)printf("沒有實數(shù)解。\n");
elseif(delta==0){
x1=-b*1.0/(2*a);
printf("只有一個解:x=%f。\n",x1);
}
else{
delta=sqrt(dalta);
x1=(-b+delta)/(2*a);
x2=(-b-delta)/(2*a);
printf("有兩個解:x1=%f,x2=%f。\n",x1,x2);
}
}
如果還有問題,請留言。
#include stdio.h
#include math.h
void main()
{
double val=0,result1=0,result2=0;
val=b*b-4*a*c;
if(abs(val)EPSILON)
return;
else
{
result1=(sqrt(val)-b)/(2*a);
result2=-(sqrt(val)+b)/(2*a);
printf("\n\r result1=%ld,result2=%ld",result1,result2);
}
}
沒注意題目,把main里面寫成個函數(shù)就行了,在main里面調(diào)用。