[問題] 一元二次方程式的解
要解一元二次方程式 a*x^2+b*x+c=0 的解
我有在網路上找過解答
(1)
http://www.eyny.com/archiver/tid-3983841.html
我初學,程式裡有些指令沒學過,所以放棄
(2)
http://tw.knowledge.yahoo.com/question/question?qid=1106111203394
和我的寫法一樣,所以我的寫法應該可行
以下是我的程式
-------------------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main (void)
{
double a,b,c;
double value,r1,r2;
printf("請輸入三個數值: "); //解 a*x^2+b*x+c=0
scanf("%f %f %f",&a,&b,&c); //輸入 a,b,c
printf("%f %f %f\n",a,b,c); //想了解a,b,c有沒有輸入進程式內
printf("一元二次方程式解: ");
value=b*b-4*a*c;
if (value>0) //相異實根
{
r1=(-b+sqrt(value))/(2*a);
r2=(-b-sqrt(value))/(2*a);
printf("%f %f\n",r1,r2);
}
else if (value==0) //相等實根
{
r1=-b/(2*a);
printf("%f %f\n",r1,r1);
}
else //虛數解
printf("沒有實根\n");
printf("%f %f %f\n",a,b,c); //想了解迴圈結束後,a,b,c值為何
system("pause");
return 0;
}
-------------------------------------------------------------------------
問題 <1>
我想設計一個可以 scanf 變數 a,b,c的程式。
但此程式執行完後,發現變數 scanf 完後,下一行 printf a,b,c的值並不是我當初給的。
且執行結果是錯的。
問題 <2>
把 double a,b,c;
double value,r1,r2;
改為 float a,b,c;
float value,r1,r2;
竟然就可以執行。
double 和 float 不是只有表示數值範圍的差別而以嗎?
請問此程式 設 double 和設 float 之間的差別在哪?
問題 <3>
我在宣告變數時,就將 a,b,c的值直接設定。(例如:a=1,b=1,b=10;)
當我宣告 a,b,c 為 float 或 double 程式皆執行無誤。
直接設值 (例如:a=1,b=1,b=10;) 和 scanf 設值,竟然有這麼大的差別
麻煩指正我的問題出在哪
----------------------------------------------------------------------------
Thank you for help!!!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.126.251.169
推
11/18 21:13, , 1F
11/18 21:13, 1F
→
11/18 21:13, , 2F
11/18 21:13, 2F
→
11/18 21:14, , 3F
11/18 21:14, 3F
→
11/18 21:15, , 4F
11/18 21:15, 4F
→
11/23 11:33, , 5F
11/23 11:33, 5F
→
11/23 11:36, , 6F
11/23 11:36, 6F
→
11/23 11:36, , 7F
11/23 11:36, 7F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章
-4
5