第4次作業(條件)比較大小。第3次作業(條件)計算火車運行時間。


作業要求(請點擊!!)
題目7-4 比較大小
1.實驗代碼

#include <stdio.h>
int main()
{
  int a,b,c,t;
  scanf("%d %d %d",&a,&b,&c);
  if(a>b){
    t=a;
    a=b;
    b=t;
  }
  if(a>c){
    t=a;
    a=c;
    c=t;
  }
  if(b>c){
    t=b;
    b=c;
    c=t;
  }
  printf("%d->%d->%d",a,b,c);
  return 0;
}

<font size=4 face=“微軟雅黑">2.設計思路
第一步:通過if條件,將a變成輸入的三個數中最大的那一個,b為第二大,c為最小。
第二步:首先用if語句設定比較a與b、a與c的大小。
第三步:將a通過賦值方法變成題目要求的最小值,即a=2.
注:賦值法需要一個變量存儲a的值,所以這里引入了來做存儲a的變量。然后經過一個循環等於,即t=a,a=b,b=t,將a的值變為三者最小。

<font size=3 face=“微軟雅黑">流程圖:

<font size=4 face=”微軟雅黑">3.本題調試過程碰到問題及解決辦法

剛開始看到比較大小時的第一個想法是:C語言里應該有兩個“函數”,一個來表示取這組數據中的最大值(Max),一個來表示去這組數據中的最小值(min)。但是經過查找資料,耗費了很長時間,到最后依然沒有找到心中想象的那個“函數”,所以就想到一個一個的可能都寫出來,畢竟只有三個輸入的數據,各種可能加在一起也可以數的過來,但是在程序輸到一半的時候我放棄了,因為感覺這樣輸入的代碼太過繁瑣,並且沒有實際的作用,潛意識的認為這種情況就算是寫對了,也沒有達到這道題目想要自己學習的“點”,因此我放棄了一種一種可能全輸上去的方法,開始尋找第三種,也就是If 賦值法,最開始我將題目完整的復制到百度搜索,看到了if條件賦值的方法,最開始我是不理解這種方法的實際應用的,因此我將網上找到的源代碼完整的復制到了我的電腦中的“dev c++”中,自己進行編譯輸入了一些數據,並用口算跟着代碼的編寫去進行了一次計算,懂得了if賦值方法的應用,因此開始自己嘗試編寫代碼來驗證自己對代碼的認識。剛開始的輸入因為不理解"->"符號的意思而頻繁出錯。
事實證明不動腦思考動動手指問別人是不可靠而且沒有用處的,經過仔細的查看題目,我發現了"2->4->8"的字樣,因此知道了"->"不是自己認知上的">"而是"<",所以我將代碼進行了修改,但是結果也不盡人意。
因此我開始調試程序。

發現a和b先互換,b和c再互換,這時由於a和b無法再次比較,所以不能進行互換了,如圖

所以應該對a與b、a與c先進行比較,才能使程序正確運行。

對於之前提到的循環等於:初次使用我認為這是一個“循環”,即是循環等於,毫無疑問這種想法是錯誤的,它不會一次又一次的循環而是僅僅只執行一步。

下面是第三次作業。

題目7-7 計算火車運行時間
1.實驗代碼

#include <stdio.h>
#include <math.h>
int main ()
{
  int a,b,c,d;
  scanf("%d %d",&a,&b);
  c=b/100-a/100 ,d=b%100-a%100;
  if(d<0){d=60+d,c=c-1;}
  printf("%02d:%02d",c,d);
  return 0;
}

<font size=4 face=“微軟雅黑">2.設計思路
第一步:通過同學的幫助,認識了“/100”與“%100”分別是取余和取整。
第二步:通過減法和取余取整算出了時間差。
第三步:當分鍾出現負數時需要向小時數借一位。既是if語句。

<font size=3 face=“微軟雅黑">流程圖:

<font size=4 face=”微軟雅黑">3.本題調試過程碰到問題及解決辦法
起初看到這個題,我並沒有想到取余取整的方法,而是想到了上一次的作業中int斷點取整。當時的代碼由於時間問題已經找不到了,只能找到一張沒有完善代碼的截圖,截圖如下。

當時還寫了if語句使它為負數時可以向小時借位,如果分鍾位大於60,也向小時位進位,計算和結果都沒有錯誤,但是提交一直不通過顯示格式錯誤,所以現在也不知道這段代碼的正確性,這是我沒有想到取余取整時所能想到全部了,所以花了很長時間去完善它,但是結果依然不盡人意,因此我向同學詢問了這個的做題方法,得到了取余取整的方法,接着因為忽略的進位和借位,導致了錯誤,通過調試,發現了錯誤並進行了改正。

最后順利完成了此次作業。

總結
本周所得
1.學習了if語句,else if語句 ,程序運行的方法,調試的方法,取余,取整,分段函數的表示方法,double\float的用法和保留小數位數的方法,以及char的使用。

遇到的問題
1.if語句連續使用和if與else if使用不一樣,一開始對這兩個函數混淆,導致程序出錯。
2.調試必須使用斷點,會在斷點區間內進行否則不會開始。
3.float不是只能取小數點后一位,作為單精度浮點數有效數位為七位,而雙精度浮點數double是十六位。

解決問題的方法
1.百度 百度查找后自己進行計算解讀,特殊的運算符不懂問同學或者繼續百度。
2.問同學. 面對面問會的同學會比查找百度更加容易理解和深刻,
4.問學生群. 但大多數情況下沒有用,網絡的便捷性導致了獲得知識真假性難以辨別。
3.問老師. 不到萬不得已我一般不會選擇問老師,老師自身的繁忙導致了不能快速的回答問的問題,一般問題都可以通過前兩種方法快速解決。

學習情況

折線圖:

評價:李浩正
范純銘
王炬皓


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM