1.問題敘述:想要使圖中五位同學的分數以小數點表示,並且計算五位同學的總和以及平均(總和、平均以四捨五入處理),但是失敗了,想知道如何改進
2.程式碼
#include <stdio.h>
main()
{
float a[5];
float Sum = 0;
float Ave = 0;
int j;
for(j = 0; j < 5; j++)
{
printf("第%d位學生的成績:", j + 1);
scanf("%4.1f", &a[j]);
}
for(j = 0; j < 5; j++)
Sum += a[j];
Ave += Sum / 5;
printf("學習總成績:%.0f\n", Sum);
printf("平均成績:%.0f\n", Ave);
}
3.畫面
您好:
printf函數才可以控制小數點的位數精確度,
scanf函數不行,
可參考C語言格式輸入函數scanf()詳解所說的
scanf函數中沒有精度控制,如:scanf("%5.2f",&a);是非法的。不能企圖用此語句輸入小數為2位的實數。
如果一定要讓輸入也四捨五入的話,可以用<math.h>
裡面的round函數,
它會四捨五入到整數位
修改如下:
#include <stdio.h>
#include <math.h>
int main()
{
float a[5];
float Sum = 0;
float Ave = 0;
int j;
for(j = 0; j < 5; j++)
{
printf("第%d位學生的成績:", j + 1);
scanf("%f", &a[j]);
a[j] = round(a[j]);
}
for(j = 0; j < 5; j++)
Sum += a[j];
Ave += Sum / 5;
printf("學習總成績:%.0f\n", Sum);
printf("平均成績:%.0f\n", Ave);
}