2015年6月7日 星期日

d226:10071 - Back to High School Physics (22)

d226: 10071 - Back to High School Physics (22)

更新時間:2016/12/21
內容
  某一個粒子有一初速度和等加速度。假設在 t 秒後此粒子的速度為 v ,請問這個粒子在 2t 秒後所經過的位移是多少。
輸入說明
  每組測試資料1列,有2個整數,分別代表 v(-100 <= v <=100)和 t(0 <= t <= 200)。
輸出說明
  對每組測試資料請輸出這個粒子在 2t 秒後所經過的位移是多少。
範例輸入
  0 0
  5 12
範例輸出
  0
  120
提示
  v-t圖:圖形下的面積,代表位移。此圖形會是個梯形。



想一想,再看解答~


我的解題想法
  計算梯形面積,此題目的v是梯形中線長。
  梯形中線公式:(上底+下底)/2;
  故梯形面積公式可以寫成:梯形中線長*梯形高。

程式碼
#include <stdio.h>
int main(void){
    int v,t;
    while(~scanf("%d%d",&v,&t)){
        printf("%d\n",v*2*t);
    }
    return 0;
}
程式碼解析
#1:引入標準輸入/輸出串流。
#2:主程式開始,回傳引數int,沒有參數。
#3:宣告2個整數(int)變數「v」、「t」,範圍–2,147,483,648 到 2,147,483,647。
#4:迴圈 while 開始。題目的輸入方式是多組數據輸入,並不知道結束的長度為多少,所以使用while迴圈搭配scanf判斷資料是否結尾(EOF)。
從標準輸入讀取格式化數據,讀取2個整數(%d%d),依序指定值給「v」、「t」,並判斷「不是結尾(!=EOF)」是否成立。
#5:將格式化數據顯示到標準輸出。輸出1個整數並換行(%d\n)「v*2*t」。
#6:迴圈 while 結束。
#7:主程式回傳整數「0」。
#8:主程式結束。