沒想到都已經學習完C語言的靈魂—指針的內容了(固然也是C裏面最難學習的內容了)。雖然在以前就有聽學習進度比較快的同窗大概介紹過指針,不過那時候是僅限於知道這個是一個特好用的東西,不過開始學習就懵逼了,上課聽老師講課只知道這個指針指向那個地址又對應哪個內容,emmmm(自閉了)在通過一段時間學習指針後,。
在指針的調用還有它指向什麼內容仍是不是很掌握。數組和字符串和指針之間的聯繫,好比各元素的地址與數組名及數組名與首地址的對應關係,以及指針在數組、字符串中的儲存方式,還有就是發現指針能夠處理動態內存的分配問題,而且指針傳遞的是地址,這樣能夠大大節省計算機的儲存空間和運行成本,反正感受好處多多,不過要學好必需要下大功夫就是了。c++
函數總分: 100分算法
- 定義循環變量i,數組長度替代量n - char *a=s,n=s數組長度-1 - for(i=0到n)同時數組首尾分別日後往前推動 - 在循環內,if(*(s+i)!=*(a+n)),break - 循環外,if(i>n) return true - else return false
Q1:一開始看到題目立刻就想到以前在數組也作過相似的的會問題,因此一開始就按照首尾遞進比較的方法來解決
A1:可是發現用並不能像數組那樣直觀,在devc++上面調,結果輸出都是對的,但是改來改去仍是有兩個點卡着
A2:一是刪減了定義的多餘指針變量,二是對循環條件進行了調整數組
在函數那章,咱們已經實現小學四則運算這份做業,如今要求你們把以前設計函數升級改造,原來的函數你們都是用全局變量實現不一樣函數參數傳遞,此次做業要求改地址傳遞,減小全局變量的使用。函數
- int 計數替代量num,int 循環變量i,int 運算符選擇變量op - 定義字符數組str - if(level==1),i=3, while(i--) if(i%2==1) op取隨機數表明四種運算符 switch(op) case(0到3)將運算符在exp運算式子後鏈接起來 else num=rand()%9+1 將整型變量num轉化爲字符型變量存入數組str中 將str數組中的字符串在exp運算式子後鏈接起來 - else if(level=2或3 )i=5 while(i--) if(i%2) switch(level) case(2到3)num=rand()%90+10||rand()%900+100;break; 將整型變量num轉化爲字符型變量存入數組str中 將str數組中的字符串在exp運算式子後鏈接起來 else op=rand()%2 switch(op) case(0到1)將運算符在exp運算式子後鏈接起來 將‘=’exp運算式子後鏈接起來
截圖函數代碼
學習
- int m=0,sum=0,i=0;char c,char old='+' - do { c = exp從第一個開始 if(c<='9'&&c>='0') m 將字符型數字轉化爲整型數字 else { if(oldc=='+'||'-'||‘*’||‘/’) sum '+'||'-'||‘*’||‘/’= m; m=0 oldc=c } i++; } while(c不等於'='的時候)end 返回 sum的結果;
截圖函數代碼
設計
Q: 改造前函數和改造後的函數的不一樣及區別,優缺點。
A:原先我式把三個等級分開來卸,各自獨自取隨機數,獨自運算,每次num循環,調用一次就能夠獲得一個隨機計算式子,每一次獨立輸出就行了,這一次不能用全局變量,改用指針傳參。沒改全,實際上改完後個人程序運行結果問題多多,還沒改好,不過也就把這個貼上來了,至於說選作的那個IsExp函數沒有能實現3d
說實話此次要求用指針加函數的寫法改進大做業我是懵逼的,由於指針用法不熟悉,因此有一種無從下手無從下手的感受,改了許多天,沒有進展,參照林麗老師的博客5的computerExp函數的寫法,依葫蘆畫瓢卻是寫出來了第三個函數,但是第一個函數怎麼弄仍是夢夢的,因而請教了同窗,也從老師推薦的曾俊韋同窗那裏學到了itoa(num,str,10)函數能夠直接實現遺傳整形轉化爲字符串,頭文件#include<string.h> 的知識指針