感覺:和數組同樣,這又是一個很是陌生的知識點——指針,剛剛開始學習的時候,被陌生的各類賦值方式搞得眼花繚亂,對於使用的方式束手無策,真的感受到本身的代碼能力真的不好啦,對本身一度挺失望的,經過老師的講解和各類函數代碼之中頻繁出現指針,意識到指針是很重要的知識點。
以後的學習:但願經過後面的自主學習能對指針的用法有所瞭解,逐漸運用自如,而且把前面的內容也好好複習,融會貫通,要本身多多寫代碼,減小對於同窗的依賴,不要以爲一道題調試一兩小時麻煩,對於本身陌生的知識點要作筆記,多多訓練,pta上的不太熟練的題也要從新再作。多是適應和學習能力的問題,以爲老師的上課強度較大,做業量也有點可怕,大做業作的不想其餘同窗那麼垂手可得,因爲四級考試和各類論文的壓力之下,對於c語言的學習的確有所懈怠,要好好兒彌補,好好兒用心!算法
指針:125分;數組
說反話:將輸入的一行字符串,以單詞爲總體倒敘輸出,每一個單詞之間一個空格函數
定義字符數組sen[500001],統計字符長; 定義變量:flag表示輸出過單詞,word表示是單詞,count統計單詞字母數; 逆向遍歷數組 for i=len-1 to 0 if sen[i] 不是空格 word=1; count++; end if if sen[i]是空格&&前面是單詞(例如是pretty) 輸出空格 end if for j=i+1 to i+count //輸出該單詞(pretty) flag=1; end for if i==0&&count!=0 //第一個單詞後無空格單獨判斷 先輸出單詞後輸出空格 end if end for
剛開始作這道題的時候覺得很簡單,不就是倒序輸出單詞嘛,可是實操以後,確實不太簡單,簡直是錯誤套餐
Qs:1.沒有想到逆向遍歷,沒啥思路,請教了同窗;
2.沒有搞懂判斷條件應該是 單詞後是空格的話,就輸出空格而後輸出單詞;
3.忽略第一個單詞後無空格須要特殊處理;
4.因爲有兩個輔助判斷的變量,容易搞混,錯誤出來的時候改的地方不對,致使反覆錯誤,沒有改正,反而越改越錯學習
函數一覽
優化
思路:【數字轉化成字符和字符都存入字符數組】 將主函數中的指針*exp、等級level和題量的選擇repeat傳遞到函數1中 定義char str[]存放 ‘+’、‘-’ 、‘*’ 、‘/’; switch語句等級劃分 switch(level) //經過規律查找,三種狀況能夠作以下統一處理,經過if語句判斷 case 1: case 2: case 3: 提醒題集名稱 level==1 -> 小試牛刀 產生隨機數 採用for循環 控制數字位數 存入exp[] 產生隨機運算符 str[rand()%9+1] 控制算式結構 if語句控制是否增長一個數字和一個字符 加上'\0'便於輸出表達式 end switch 用戶輸入非法題集後,提醒更換
要求避免在除法運算中出現除數爲0的狀況,可是因爲筆者認爲在運算中出現0的計算意義不大,且在上一個函數中爲了更簡潔的同時保證兩位數和三位數的生成,規避了數字出現0的狀況,就沒有設計函數二設計
思路:【字符數字轉化成數字形式進行運算】 參考了老師的作法 do-while語句判斷 do if exp[i] 是字符數字 將其轉化成數字 end if else //是運算符 oldq==‘+’ -> 作加法運算 while(不是等於號) 導入 判斷函數 檢測答案是否正確,輸入對應評價語句
在助教的提醒和閱讀同窗優秀代碼以後,確實發現本身上一版本的大做業函數分裝十分亂(雖然此次也不是很好),就沒有在原來的基礎上修改,而是選擇從新寫了一份,故而就不曬圖作對比‘了
函數一
區別:通過從新寫代碼,對於指針的稍稍運用,與以前的代碼徹底不同
舊:以前是直接生成數字和字符,使用printf的方式直接輸出,簡單粗暴;
新:對於表達式的生成,採用指針和數組的運用,將數字轉化成字符數字,與運算符一同存入數組,輸出字符數組,可見指針的便捷度;
優勢:舊代碼的顯而易見,對於初級碼農十分簡單,基本不會有bug,操做簡單;
對新代碼來講,大大提升代碼質量(雖然也不是很高),使代碼看起來更簡潔,更加高效,更穩定,避免無效運算0
缺點:兩個代碼放在一塊,舊代碼效率低又冗長的缺點一覽無遺,而新代碼可閱讀性不強,有點複雜,容易出現bug
-函數二
有點投機取巧的閃開這個0部分,不過的確是少了一部分須要考慮的東西,但會形成程序不完整
-函數三
區別:
舊:以前的代碼比較亂,函數分裝的很隨意很雜亂,直接在判斷運算符時,計算出告終果;
新:將函數一的數組傳過來後,將字符數字轉化成數字,進行運算
優勢:
舊:以前的代碼彷佛只有好寫、沒啥閱讀難度、不容易出現bug這些只能算方便的特色。。。。。。
新:更加簡潔,減小時間和空間,效率更高;
缺點:
舊:分裝不好,只是用最基礎的switch語句劃分計算種類,直接算出結果,質量很低;
新:採用字符數組轉換仍是有些顯得不太靈活;3d
剛開始知道這個做業的時候真的是一頭霧水,可能有點不太能跟上老師的節奏,撲面而來許多知識點,學的有點暈,不太能相通爲啥這麼神奇,經過一個簡單的指針有這麼多的做用,因此一時沒法下筆,先慢慢啃了一邊書和視頻,適當向同窗請教以後纔有所思路,指針的複雜度使整個函數太容易出現bug,讓本身很煩躁,以爲專業能力真的太差了,後來在室友們的幫助下,才慢慢堆起來本身的函數,儘管本身也看出來,對於指針的運用仍是太少,要好好再認真搞清楚指針的運用,代碼能力真的很爛,要更加認真了。
還有一個成績單,我再優化一下指針