d786: 平均值 (29)
更新時間:2016/12/21
內容:已知一n個元素的整數數列,計算出這組數列的平均值,四捨五入至小數第2位。
輸入說明:
第一行的數字,代表有幾組測試資料,第二行開始的每一行即為一筆測試資料。
每一筆測試資料以空格分開數字:
第一個整數為數列長度n,其範圍為[1,100]的整數;
接下來的n個整數,其範圍為[-10000, 10000]的整數。
輸出說明:
對每一筆測試資料,以一行輸出平均數,並四捨五入至小數第2位。
範例輸入:
2
5 2 4 6 8 10
3 52 30 61
範例輸出:
6.00
47.67
想一想,再看解答~
我的解題想法:
使用兩層for迴圈,必須要注意除法(/)的運算結果。
整數 / 整數 = 整數
小數 / 整數 = 小數
整數 / 小數 = 小數
小數 / 小數 = 小數
程式碼:
#include <stdio.h> int main(void){ int t,n,tmp,sum; scanf("%d",&t); for(int i=0;i<t;i++){ scanf("%d",&n); sum = 0; for(int j=0;j<n;j++){ scanf("%d",&tmp); sum += tmp; } printf("%.2f\n",sum/(double)n); } return 0; }程式碼解析:
#1: | 引入標準輸入/輸出串流。 |
#2: | 主程式開始,回傳引數int,沒有參數。 |
#3: | 宣告4個整數(int)變數「t」、「n」、「tmp」、「sum」,範圍–2,147,483,648 到 2,147,483,647。 |
#4: | 從標準輸入讀取格式化數據。讀取1個整數(%d),指定值給「t」。 |
#5: | 外層迴圈 for 開始。區域變數「i」,從 0 開始到小於 t 結束 (int i=1;i<=t;i++)。 |
#6: | 從標準輸入讀取格式化數據。讀取1個整數(%d),指定值給「n」。 |
#7: | 變數 sum 指定值為 0。 |
#8: | 內層迴圈 for 開始。區域變數「j」,從 0 開始到小於 n 結束 (int j=1;j<=n;j++)。 |
#9: | 從標準輸入讀取格式化數據。讀取1個整數(%d),指定值給「tmp」。 |
#10: | 變數 sum 累加 tmp 的值。 |
#11: | 內層迴圈 for 結束。 |
#12: | 將格式化數據顯示到標準輸出。輸出1個浮點數,取到小數點第2位(%.2lf)「sum/(double)n」。 (double)n:把整數 n 轉換型別為 倍浮點數。 |
#13: | 外層迴圈 for 結束。 |
#14: | 主程式回傳整數「0」。 |
#15: | 主程式結束。 |