-
#include
#include
int main()
int a,b,c,m;
double x1,x2,n;它屬於雙重型別。
printf("請輸入a,b,c:in ax2+bx+c=0");
scanf("%d %d %d",&a,&b,&c);
m=(b*b-4*a*c);
if(m<0)
printf("方程沒有解");
elsen=sqrt((double)m);將 m 轉換為力型別,再轉換為雙精度,因為連線是雙精度的
x1=(-b-m)/(2*(double)a);
x2=(-b+m)/(2*(double)a);
printf("x1=%.2lf x2=%.2lf",x1,x2);
return 0;ok!
-
你不應該使用 int 變數,float double 就可以了。
-
這個程式執行得很正常,沒有錯誤!
-
你應該把 m=sqrt(m);
x1=(-b-m)/(2*a);
x2=(-b+m)/(2*a);
printf("x1=%d x2=%d",x1,x2);
將其括在括號中,這很好。
-
在程式設計中,將 C++ 更改為 C:C 實際上是乙個 C++ 程式,因為 C++ 與 C 相容。
在 C++ 中,input 語句使用 CIN 而不是 ScanF,使用 Cout 而不是 PrintF,但 C++ 也識別 ScanF 和 PrintF 的主要區別在於 C++ 擴充套件了 C 並且是物件導向的。 如果要更改它,可以: 包括標頭檔案""->#includeusingnamespace。
C++程式的作文和寫作形式:
1.乙個C++程式可以由乙個程式單元或多個程式單元組成 每個程式單元充當乙個檔案 編譯程式時,編譯系統分別編譯每個檔案,因此檔案就是乙個編譯單元
2.在程式單元中,可以包括以下部分:
預處理命令 上一節中的四個程式包括 include 命令
全域性宣告部分(函式外部的宣告部分)包括使用者定義資料型別的宣告和程式中使用的變數的定義
函式 函式是實現操作的部分,因此函式是程式中最基本和最必要的部分 每個程式都必須包含乙個或多個函式,其中必須有乙個(且只有乙個)主函式(main function)。
-
主要存在兩個問題,gets函式使用不當和陣列下標計算不正確,可以按如下方式糾正:
替換 gets(a); 更改為 scanf("%s",a);
將 1 新增到所有下標,例如將 a[j-2] 新增到 a[j-1]。
-
有兩個嚴重的錯誤:
1.程式結構有問題。 根據你的**,你可能知道你要反覆判斷輸入的分數是否合法,然後再判斷測試後的分數是否合法。 但是這個程式不這樣做,如果你按照你的**流程,一般流程如下:
輸入分數 -> 判斷分數是否大於 100(如果是,則執行 if中的**,這裡我就不贅述了) -輸入分數 ->判斷分數是否小於 100 -> 輸入分數 ->判斷分數情況(即剩餘的 if else if 語句)。
這個過程顯然是不正常的。 如果這是您想要的,您可以忽略此錯誤。
如果沒有,則需要更改。 我認為程式結構可以是這樣的:定義乙個無限迴圈,同時輸入它並確定輸入是否有效。 如果它是合法的,就把它打破來,如果它不合法,就繼續執行它。
2.最終的if判斷有問題。 第 24 行中的 if 語句寫錯了,邏輯等號寫成了賦值符號(即“==”寫成了“=”)。
在這種情況下,if 的條件將由 score 的值判斷為 true 或 false(取決於分配給該行的分數,non-0 為 true,0 為 false)。 此行的 if 條件是分配 100 的分數,這將導致條件始終為 true。
更正此問題的方法是將“=”更改為“==”。
-
在 main 裡面你呼叫 calc 函式,而 main 不知道它是乙個函式,是不是看起來很奇怪? 因為您已經在下面編寫了 calc 的完整定義。
原因是編譯器從檔案的開頭開始掃瞄,一遍又一遍地掃瞄生成中間的**,一直掃瞄到你呼叫calc,而當時它還沒有掃瞄calc,所以編譯器不知道它是乙個函式。
如果你只想在下面定義 calc,那很好,只需要在 main 前面語句計算,
喜歡這個:
#include
int calc(int);這是函式的宣告
int main()
也就是說,告訴編譯器這是乙個函式,以後遇到的時候,就會生成這個函式的中間**,至於這個函式定義在什麼地方稍後掃瞄時可以找到它。
-
克除以一千,而不是乘以一千。
-
使用 for 迴圈,每次在它前面再迴圈乙個空格,然後新增四個 *s
5,6,7,8,9,0,1,2,3,4。只要仔細看一下這個函式,它只不過是乙個交換函式,先是 0-3 交換,然後是 4-9,最後是 0-9,。