作業要求:https://edu.cnblogs.com/campus/hljkj/CS201801/homework/2293
第三次作業:計算火車運行時間
#include<stdio.h> int main(void) { int x=0,y=0,h=0,m=0; scanf("%d %d",&x,&y); h=y/100-x/100; m=y%100-x%100; if(m>=0){ printf("%02d:%02d",h,m); } else{ h=h-1; m=m+60; printf("%02d:%02d",h,m); } return 0; }
解題思路:
1.定義4個變量x,y,h,m;
2.獲取用戶輸入,x,y都是四位數;
3.計算h=y/100-x/100,m=y%100-x%100,h為小時數,m為分鍾數,由於h被定義成整型,所以用除法運算可以計算前兩位小時數,取余運算可以得到后兩位分鍾位;
4.判斷m是否>=0,若結果為‘是’則運行if語句塊中的語句,否則運行else中的語句;
5.輸出結果。
流程圖:

運行結果:

一開始我的代碼是這樣的,通過計算我發現3前面無法補0,因此在printf語句中人為補上了0;

最開始我沒有考慮分鍾借位問題,后來在跟同學交流的過程中我改了我的初始代碼,並進行借位的單步調試。

在獲取用戶輸入后計算機計算了h和m的值,並儲存在物理內存中等待調用,並在判斷m后直接跳轉到了符合條件的else語句塊。

然后輸出了正確的結果

第4次作業:高速公路超速處罰
1.實驗代碼:
#include<stdio.h> int main(void) { double exceed_rate,velocity,velocity_limit; scanf("%lf %lf",&velocity,&velocity_limit); exceed_rate=(velocity-velocity_limit)*100/velocity_limit; if(exceed_rate<=10){ printf("OK"); } else if(exceed_rate>=10&&exceed_rate<50){ printf("Exceed %.0f%%. Ticket 200",exceed_rate); } else if(exceed_rate>=50){ printf("Exceed %.0f%%. License Revoked",exceed_rate); } return 0; }
2.解題思路:
1.定義變量velocity,velocity_limit;
2.獲取用戶輸入;
3.計算超速比率exceed_rate;
4.用if——else語句判斷exceed_rate是否滿足相應的條件,進入否個語句塊;
5.執行語句塊內容並輸出。
流程圖:

我的初始代碼是這樣的,在pta上運行時報了錯。

通過理解代碼我發現,滿足3條件的語句同時會滿足條件2語句,而語句2總是在語句3的前面,因此要用&&或進行約束,通過調整代碼我進行了單步調試。


類似還可以改變velocity和velocity_limit的數值來執行if——else語句中的其他語句。
本周總結:這兩周主要學習了條件語句以及條件語句中的一些思維方法,以及定義條件時的一些技巧。在實際做題的過程中,提高了
對題目和代碼的理解能力,收獲了一些書本上沒有的內容,比如在printf語句中輸出%,以及用0補位。老師還在課堂上講解
了switch-case語句,加上在晚自習的練習,我修正了一些原本代碼的誤區,如switch判斷數值時case 后加的是相應數值
而字符型時則要加‘ ’。
問題和難點:在理解題意過程中出現了一些偏差導致程序運行不對,有一些輸出格式在書本上還沒有看到,因此要上網查詢。有些語句需要反復練習才能真正掌握。
表格:

博客字數、代碼行數統計:

作業點評:http://www.cnblogs.com/asdwadsxc/p/9892297.html
http://www.cnblogs.com/zcybky/p/9853307.html
http://www.cnblogs.com/abcefg123/p/9898650.html
