在本週的學習過程當中,咱們學習了指針的用法。說實話,指針的用法有點繞,以前一直沒搞懂指針的傳參,不懂指針與數組之間的關係和用法,致使作PTA時很吃力,最後仍是先靜下心把課本和筆記再看了一遍,才分清楚他們的用法。可是對於指針的運用仍是很不熟練,而且思想上第一時間不會去考慮使用指針,且以爲指針相對於數組比較麻煩,多是咱們如今接觸的題目尚未體現出指針的優點吧。
總分:125分算法
給定程序中函數fun的功能是:求出在字符串中最後一次出現的子字符串的地址,經過函數值返回,在主函數中輸出今後地址開始的字符串;若未找到,則函數值爲NULL。 函數接口定義: char *fun (char *s, char *t ); 其中 s和t 是用戶傳入的參數。函數求 t指針所指的字符串在s指針所指的字符串中最後一次出現的地址,並返回,若未找到,則函數值爲NULL。
若找不到,則返回NULL;數組
A2:當時的s[j]表示的時子串的最後一個字符,應該再減去子串的有效長度。函數
在函數那章,咱們已經實現小學四則運算這份做業,如今要求你們把以前設計函數升級改造,原來的函數你們都是用全局變量實現不一樣函數參數傳遞,此次做業要求改地址傳遞,減小全局變量的使用。post
題目要求:
題目有3個難度級別,分別爲
第一級是1位數的一步加減乘除計算
第二級是2位數的2步加減運算
第三級是3位數的2步加減運算學習
改進內容:
1.構造字符數組存放算術表達式
2.表達式是否合法
對於不合法或者超出該級別小學生學習範圍的表達式,視爲不合法,需重造一個。不合法表達式體現有除數爲0的表達式、1,2級別中出現不能整除的除法表達式或其餘不合法狀況設計
傳入num1,num2,op,指針posture; 定義算式的答案result; 定義一個臨時數組temp,用於存放由數字轉換成的字符; 利用_itoa函數,num1由整型轉換成字符型; //_itoa函數的具體用法 ——itoa(num,str,base)將num按十進制轉爲字符串存在str中 將temp複製到posture; 經過判斷op隨機獲得的值,來賦予op運算符號; if op=0 then result=num1+num2; 將posture與‘+’鏈接起來; end if if op=1 then result=num1-num2; 將posture與‘-’鏈接起來; end if if op=2 then result=num1*num2; 將posture與‘*’鏈接起來; end if if op=3 then result=num1/num2; 將posture與‘/’鏈接起來; end if 將num2轉換爲字符並存在temp中; 將posture與由num2轉換後的temp鏈接; 將posture與‘=’鏈接; 返回result; 第2、三級一次類似
在等級1的除法運算若產生的表達式不合法,則從新產生一個表達式
待上一個函數返回result的值以後 if result爲小數 then 清屏 返回到等級1中,從新生成一個式子 end if
函數1:
先前的代碼:
改進以後的代碼:
3d
1.改進前的代碼是用數字進行輸出,而改進以後的數組是用字符數組存放 2.改進前有多個輸出口,而改進以後代碼使每個等級的式子的輸出都只有單一出口,改進以後的代碼提升了代碼的運行速率和可讀性
函數2:
(因爲以前並無實現這個功能,我就直接截圖後來的代碼)
指針
這段代碼能夠有效的避免出現不符合用戶作題的式子,提升了用戶的體驗感。可是從代碼上看,由於用了goto out,因此是代碼的可讀性降低了。而且,若過可能是使用goto out很容易形成混亂。可是我還沒想到怎麼用指針來實現該功能。
由於在對指針的用法不熟悉,因此此次的大做業我作的很是吃力。而且並無將整個大做業所有改成指針,主要是我認爲,在這些部分,直接傳參就能夠解決了,不須要硬用指針。 還有就是在改的過程當中,卡在了不知道如何將整型轉換爲字符串。後來,,,,上網問完百度以後,發現用一個——itoa函數就能夠輕輕鬆鬆解決,因此,學會利用百度這個巨大的資源庫是一個很是重要的技能。