一:scanf("%3f%3f%3f",a,b,c); 這里要求輸入數(shù)據(jù)必須為三位數(shù),最好改成:
站在用戶的角度思考問題,與客戶深入溝通,找到嵐皋網(wǎng)站設(shè)計與嵐皋網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:成都做網(wǎng)站、網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、域名注冊、網(wǎng)站空間、企業(yè)郵箱。業(yè)務(wù)覆蓋嵐皋地區(qū)。
scanf("%f%f%f",a,b,c); 去掉限定
二:
void tonggen(float a,float b,float k)
//float a,b,k; 如果這樣定義,則上一行的函數(shù)定義應(yīng)該寫成:void tonggen( a, b, k) 二者不能同存
{
float x;
x=(-b)/(2*a); //這里應(yīng)該為2*a
printf("二次函數(shù)為同根為x=%3f",x);
}
#include stdio.h
#include stdlib.h
#include math.h
int main()
{
float a,b,c;
float x1,x2,m;
printf("input number a=:");
scanf("%f",a);
printf("input number b=:");
scanf("%f",b);
printf("input number c=:");
scanf("%f",c);
m=b*b-4*a*c;
if(m=0a!=0){
if(m0){
x1=(-b+sqrt(m))/(2*a);
x2=(-b-sqrt(m))/(2*a);
printf("兩根\n");
printf("x1=%f\n",x1);
printf("x2=%f\n",x2);}
else
printf("一根\n");
printf("x1=x2=%f\n",x1);}
else
{
if(a=0 b!=0) printf("根是x=-c/b");
if(a=0b=0) printf("為常函數(shù)");
if(a!=0) printf("無根\n");
}
system("PAUSE");
return 0; }
這個簡單啊
#includestdio.h
#includemath.h
main()
{
double a,b,c,w;
printf("請輸入三個數(shù)(方程的系數(shù)),中間用空格分開\n");
scanf("%lf%lf%lf",a,b,c);
w=b*b-4*a*c;
if (w0)printf("方程無解\n");
else if(w==0)printf("方程有一個解:x=%lf\n",-b/(2*a));
else printf("方程有兩個解:x1=%lf,x2=%lf\n",(-b+sqrt(w))/(2*a),(-b-sqrt(w))/(2*a));
}
我看書上是改錯題,你沒有發(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);
}
}
如果還有問題,請留言。
首先你已經(jīng)很清楚的說明了你這個程序是用C語言寫二次函數(shù)的,而當a=0時,就不是二次函數(shù)了,應(yīng)該按照一次函數(shù)來進行計算,否則 一個數(shù)除以0就沒有意義了.~
#include stdio.h
#include stdlib.h
#include math.h
int main()
{
float a,b,c;
float x1,x2,m;
printf("input number a=:");
scanf("%f",a);
printf("input number b=:");
scanf("%f",b);
printf("input number c=:");
scanf("%f",c);
if(a==0)
printf("一根:%f\n",c*(-1)/b);
else if(a==0b==0)
printf("無意義!");
else
{
m=b*b-4*a*c;
if(m0)
{
printf("兩根\n");
printf("x1=%f\n",(-b+sqrt(m))/(2*a));
printf("x2=%f\n",(-b-sqrt(m))/(2*a));
}
else if(m==0)
printf("x1=x2=%f\n",x1);
}
else
printf("無實根\n");
}
return 0;
}
我已經(jīng)按你的意思修改了,也運行出來了,希望對你有幫助,代碼附帶在下面:
#includestdio.h
#includemath.h
float t,x1,x2;
void main()
{
void situ1(float a,float b,float c);
void situ2(float a,float b,float c);
void situ3();
float x,a,b,c;
scanf("%f%f%f",a,b,c);
if (a==0)
{
x=-c/b;
printf("x=%.2f\n",x);
}
else
{
t=b*b-4*a*c;
if (t0)
situ1(a,b,c);
else if(t==0)
situ2(a,b,c);
else
situ3();
}
}
void situ1(float a,float b,float c)
{
x1=(-b+sqrt(t))/(2*a);
x2=(-b-sqrt(t))/(2*a);
printf("x1=%.2f\tx2=%.2f\n",x1,x2);
}
void situ2(float a,float b,float c)
{
x1=x2=(-b+sqrt(t))/(2*a);
printf("x1=x2=%.2f\n",x1);
}
void situ3()
{
printf("沒有實根\n");
}