【作業要求】:https://edu.cnblogs.com/campus/hljkj/CS201802/homework/2292
第三次作業:7-7 計算火車運行時間
1.實驗代碼
#include<stdio.h> int main() { int x,y; scanf("%d %d",&x,&y); int a,b; a = y / 100 - x / 100; b = y % 100 - x % 100; if(b>=0){ printf("%02d:%02d",a,b); } else{ a = a - 1; b = b + 60; printf("%02d:%02d",a,b); } return 0; }
2.設計思路
第一步:仔細閱讀作業題目要求,輸入格式及輸出格式。觀察輸出樣例及輸入樣例的數字間是否存在空格。
第二步:定義整型變量x(出發時間),y(到達時間),a(所用小時數),b(所用分鍾數)。
第三步:利用a=y/100-x/100及b=y%100-x%100分別求出所用小時及所用分鍾數。因為變量被定義為整型,符號/可以運用除法運算求出前兩位小時,符號%可以運用求余運算求出后兩位分鍾。
第四步:判斷后兩位分鍾數的兩種情況,利用if-else語句分別求出不同情況下的結果。
第五步:輸出結果。
流程圖

3.本題調試過程碰到問題及解決辦法
剛開始我的代碼及調試是這樣的,輸出結果為3:29,小時的前面並沒有補0。


通過同學的幫助與在網絡上的查詢,代碼應輸入為printf("%02d:%02d",a,b);其中%02d代表如果整數不夠2列就補上0,如果大於2則沒有影響。例如當結果為1時輸出01,當結果為11時則正常輸出11。
但這只是錯誤之一,我發現當出發時間的分鍾數大於到達時間的分鍾數,會變成如下情況。

當出發時間分鍾數大於到達時間分鍾數時,輸出結果會出現負數。因此,需要運用if-else語句分別解釋這兩種不同情況。
情況一:出發時間分鍾數小於到達到達時間分鍾數。


情況二:出發時間分鍾數大於到達時間分鍾數


然后就輸出了不同情況下的正確結果。
第四次作業:7-4 比較大小
1.實驗代碼
#include <stdio.h> #include <math.h> int main() { int a,b,c; scanf("%d %d %d",&a,&b,&c); if(a>b&&b>c){ printf("%d->%d->%d",c,b,a); } else if(a>c&&c>b){ printf("%d->%d->%d",b,c,a); } else if(b>a&&a>c){ printf("%d->%d->%d",c,a,b); } else if(b>c&&c>a){ printf("%d->%d->%d",a,c,b); } else if(c>a&&a>b){ printf("%d->%d->%d",b,a,c); } else{ printf("%d->%d->%d",a,b,c); } return 0; }
2.設計思路
第一步:仔細閱讀作業題目要求,輸入格式及輸出格式。觀察輸出樣例及輸入樣例的數字間是否存在空格。
第二步:定義整型變量a,b,c。利用if-else語句判斷三個數字的大小,並從小到大依次輸出。
第三步:按照輸出格式輸出結果。
流程圖

3.本題調試過程碰到問題及解決辦法
剛開始我的代碼及調試是這樣的,編譯並沒有出錯,但是無法從小到大依次輸出正確格式。

經過同學的幫助以及查閱資料書,我明白了錯誤出在(a>b>c)上。
正確形式應該是(a>b&&b>c),其它以此類推。
其中&&代表 與,意為同時都要滿足。
更改后的代碼及調試如下



這樣就能輸出正確的格式,同理,其它情況同樣適用。
4.個人總結
(1)在本周的學習當中,我學習到了if-else語句,可以通過語句判斷並計算多種不同情況。在學習中確實遇到了一些問題,比如沒有仔細觀察題目,沒能理解其中的隱含條件。通過做題不僅鞏固了if-else語句的知識,同時也掌握了新的知識:%02d的含義。通過 7-4 比較大小這道題,也學會了分類討論的學習思想。
(2)本周的學習內容中感覺if-else語句和else-if語句比較難,經常混淆它們的概念。對此,通過上網查詢資料以及與同學的交流,明白了這周的學習內容,並學習到了新的知識。


作業點評:http://www.cnblogs.com/zst1/p/9912320.html
