這一個多星期將近兩個星期的時間一直在學習指針,其實就跟老師說的同樣,從函數開始題會變得難一些,而後須要咱們思考的越多,而後是數組,最後就是指針。我算法
認爲指針的難度很大,我也不是很清楚具體的操做,只能硬着頭皮,看翁愷視頻,看學校c 語言的書去打代碼,此次pta的題集題雖然很少,但都頗有難度,每一道題都數組
須要我花不少的時間去寫。再有,我認爲,指針是一種方法,老師說這也是c語言的靈魂,與下學期要學的數據結構聯繫很大,因此我要用心學習,在這方面打好基礎數據結構
,爭取不拖之後學習的後腿。函數
下列程序中,函數fun的功能是:在字符串str中找出ASCII碼值最大的字符,將該字符前的全部字符向後順序移動一個位置,而後將該字符放到第一個位置上。
定義void類型函數 fun 定義 int型變量 i,t; 定義 字符指針數組char max指向指針p; for i=0到數組結束 依次判斷ASCII碼值最大的字符,使之變成max; for i=t-1到i=0 p數組的第i+1個等於第i個 p[0]=max;讓ASCII碼值最大的字符變成數組的第一個
Q1:編譯錯誤?學習
A1:我對於字符數組使用的還不是很熟練,在讓字符數組爲零這個方面的語法產生了錯誤。設計
Q2:答案錯誤?3d
A2:此次是循環中的循環條件,應該到t-1結束,下一個等於前一個。指針
題目:實現小學四則運算。code
在函數那章,咱們已經實現小學四則運算這份做業,如今要求你們把以前設計函數升級改造,原來的函數你們都是用全局變量實現不一樣函數參數傳遞,此次做業要求改視頻
地址傳遞,減小全局變量的使用。
題目要求:
題目有3個難度級別,分別爲:
•第一級是1位數的一步加減乘除計算
•第二級是2位數的2步加減運算
•第三級是3位數的2步加減運算
定義指針數組exp; 輸入能產生隨機數字的函數 定義靜態數組ch[2]; 定義number1,number1產生0-9的隨機數字,number2同理 用一個函數itoa(number1, exp, 10)將 number1放進數組exp中; //百度出來的強制類型轉換,將int類型數字轉換爲char型 定義number3產生1-4的隨機數; 用switch case,將1,2,3,4分別表示符號加減乘除 用函數strcat(exp, ch),將number1和符號鏈接 定義字符數組Num爲空數組,將number2存進去 用函數strcat(exp, Num),將exp與number2鏈接 用函數strcat(exp, "=")將與等號鏈接 最後用puts輸出指針
定義int temp=0; 定義int Result=0; 當(exp[0]<='9'&&exp[0]>='0' ) 即數字number1爲0-9時, 結果 Result =number1 if (第一個運算符=='+') Result=number1+number2 else if (第一個運算符=='-') Result=number1-number2 else if (第一個運算符=='*') Result=number1*number2 else Result=number1/number2 返回結果 Result;
我原有的函數是這種類型,當時只會定義變量,不會使用數組和指針,就一個勁兒的用switch case,將依次運算的結果加啊加,一次兩次還好,若是是屢次運算,代碼
會很長,雖然不繁瑣,可是重複的會不少,代碼看起來很不舒服,我用了數組和指針就不會。首先,長度會縮小,我只須要定義字符數組就好,不用一次次的加減運
算,其次,用數組的話,讓運算符號,即加減乘除的表示方便了不少。
改造前的函數2在上圖中,仍是那句話,改造前計算結果時,我要一次次的表示出來,不停的寫number1啊number2啊這些,改造後就不用,我只須要把整型數變成字符
型數,再用strcat這個函數將函數鏈接起來就好。可是我以爲不足的,也是我如今尚未想到辦法的就是運算次數的問題,一次兩次還好,要是運算次數多了,不停的定
義數組也是一個麻煩事,還要不停的把數組鏈接起來,也挺麻煩的。
1.首先我遇到的麻煩是在函數1中,由於我當時定義的number1,number2這些都是整型數字,可是我想把他們放進一個字符型的數組裏,在這塊我不知道怎麼用強制類
型轉換,而後我一個舍友告訴我百度,因而我就查到了itoa這個函數,能夠將整形數字變成字符,在百度的同時呢,我還看到了不少能夠用來將整型變成浮點型或者將浮
點型變成字符型的這些函數,學到了很多知識,同時也讓我知道了,在遇到不懂得問題時,查百度不失爲一個好方法。
2.而後仍是在函數1中,第一開始個人鏈接有毛病,加減乘除運算符怎麼弄都沒法盡到數組裏,致使輸出的時候一直不對,後來詢問大佬,他說strcat傳進去的是地址,我
第一開始定義了一個野指針,當時很不理解,我就問他既然我定義了數組,指針的意義在哪裏,他說,對於數組指針可能沒意義,可是對於整型什麼的就有意義,大數
據傳指針能夠增長運行速度,聽得似懂非懂的我只能之後本身慢慢去摸索了。
3.在函數2中,我計算的結果老是不對,後來發現是運算符優先級的問題,我將字符型數字變成整型數字時,要減去「0」,但是我卻忘了加括號,這就致使運算出現了錯
誤,此次知道了,下次就不能再犯這種毛病了。
4.在此次修改大做業的過程當中,我發現了我以前代碼的許多問題,好比重複啊,函數較少啊,運算較麻煩等等,我知道大做業是一項大工程,本身不能老是犯懶,要儘可能
改正這些問題與毛病。