1. 程式人生 > >C部落格作業05—指標

C部落格作業05—指標

1.本章學習總結

1.1思維導圖

1.2本章學習體會及程式碼量學習體會

1.2.1 學習體會

  • 理解了指標在程式碼中的使用方法,學會使用指標進行引數操作
  • 學會了結構體的定義方式與結構體的使用
  • 經過持續一個週末的大作業重寫,加強了指標在函式中的應用,學會利用陣列與指標的關係進行操作

1.2.2 程式碼累計

2.PTA總分

2.1截圖PTA中的排名得分

2.2 我的總分

指標:110
總分:110

3. PTA實驗作業

3.1 PTA題目1

給定一句英語,要求你編寫程式,將句中所有單詞的順序顛倒輸出。

3.1.1 演算法分析

輸入字串a
mark=strlen(a)
for i=mark-1 to 0
    if a[i-1]=空格 且 a[i]!=空格 //a[i]為單詞首字母
        p=&a[i]
        flag++
    

3.1.2 程式碼截圖

3.1.3 測試資料

3.1.4 PTA提交列表及說明

說明:

Q1:陣列範圍不夠大造成越界
A1:陣列範圍加大至500001
Q2:發現最開始的思路出現了大量重複的無用判斷
A2:修正後執行時間大幅縮短

4.大作業

4.1 介紹改進函式

4.1.1 函式CreateExp


下級函式CreateNum


下級函式CreateOp

4.1.2 函式IsExp


在CreateExp函式中的使用方法

4.1.3 函式ComputeExp

4.2 和原版的比較

4.2.1 函式CreateExp

原版程式碼:

4.2.2 函式IsExp

emmm原版根本沒有這個函式

4.2.3 函式ComputeExp

原版程式碼:(沒錯還是這張圖)

4.3 改進大作業總結

  • 原版的大作業只用了183行程式碼/三個函式完成了四則運算的操作,而且檢查輸入錯誤的方法異常詭異,完全沒有半點改的空間
  • 主要是因為某位老哥在他上次的作業完美重現了我詭異的程式碼,事實證明改了變數名程式碼查重就沒用了
    ,我想看一下那位老哥要厲害到什麼程度才能改我上次做的神奇玩意
  • 所以本次大作業除了輸入提示和上次長得一樣,其它全盤推翻重寫
  • 學會細化函式的分工,使main函式儘可能簡潔
  • 用輸入字串代替輸入字元,防止程式出錯
  • 用指標代替了全域性變數實現函式間引數改變
  • 用查錯函式IsExp解決了小學生四則運算中出現的我也不會做的題,如:3/7
  • 有多處使用了字串轉數字/數字轉字串的操作,一時半會沒法整出一個統一的函式進行轉換,下次將再改進