作者:
NMOSFET (NMOSFET)
2015-04-22 17:55:53開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
GCC
問題(Question):
輸入5個浮點數找出最大質
程式碼(Code):
#include<stdio.h>
double maximum(double a, double b, double c, double d, double e);
int main(void)
{
double number1 = 0;
double number2 = 0;
double number3 = 0;
double number4 = 0;
double number5 = 0;
printf("%s", "請輸入五個小數: \n");
scanf("%1f %1f %1f %1f %1f", &number1, &number2, &number3, &number4,&number5);
printf("最大值為:%1f\n", maximum(number1, number2, number3, number4,number5));
system("pause");
return 0;
}
double maximum(double a, double b, double c, double d, double e)
{
double max = a;
if (b>max)
{
max = b;
}
if (c>max)
{
max = c;
}
if (d>max)
{
max = d;
}
if (e>max)
{
max = e;
}
return max;
}
補充說明(Supplement):
1.我輸入整數時沒問題,輸入小數只讓我輸入一次
2.不管輸入多少(整數)都無法比較,只會輸出0.000000
但是把全部double型態改成float型態卻能正常比較(整數)
且輸出正確值
3. http://pastebin.com/A9W72kas 這是課本的答案
把小於改大於就是我要的答案(求最大值),輸入小數
也沒問題,可是我看不出它的程式和我打的差在哪裡
懇求哪位大大肯幫我解惑 ORZ....
作者:
LPH66 (-6.2598534e+18f)
2015-04-22 18:15:00%lf 是小寫 L 不是數字 1(是說課本裡沒對這點強調過嗎...?)%1f 會被認成輸入 %f 即 float 浮點數, 所以才會有你的2.那個 1 會被解釋為最多一個字, 所以你會發現即使改成 float你輸入的東西都只有一位數也由於最多一個字所以碰到 '.' 字 scanf 就不知道怎麼辦了才會只讓你輸入一次; 而 %f 跟 double 對不上所以讀進的值是錯亂的, 這就解釋了你的 1.(所以我個人覺得教 scanf 時一定要強調那是 L 不是 1 ...)
作者:
uranusjr (â†é€™äººæ˜¯è¶…級笨蛋)
2015-04-23 23:23:00以前也愛 Monaco, 但現在覺得不如用 Menlo 和 Consolas網頁上說得很中肯, Monaco 在字小(尤其沒有反鋸齒)的時候很讚, 但放大之後在現在的高解析度螢幕就不太行