1.2.1 學習體會算法
換個說法吧,後面的博客,每次都說好難好難也很差。(不過也是事實) 指針,我稍微會用的就是和數組有關聯的那一部分。拿着本身寫的題目去問同窗,他說我指針用的太過了,也的確是,不太會用,就拿作過的課堂派做業照着葫蘆畫瓢,尋一點點感受。仍是指針,我用了,本身都不知道他跑到哪裏去了,看了半天都沒毛病,請教大佬後一語道破。目前對指針仍是挺迷的,能不用指針我就儘可能不用吧。(在你徹底熟悉指針以前,儘可能不要亂用。----這是大佬對個人寄語)。不過,有的題目用用指針仍是蠻方便的。 這次大做業,說實話,真的看得一臉懵逼。原本就不怎麼會用,而後有點不知道怎麼下手。不過,也不能不作,作了總比沒作好,哪怕是看着別人的寫的,也比本身不寫好,好歹有個印象。後來和同窗聊天談到,不怎麼會用指針的話,至少會多少寫多少吧,先把一級的寫了。後來想一想也對,這不就是把大問題分解成小問題嘛,解決起來就沒有那麼困難。 這次做業,我仍是要認真的,上次函數大做業沒寫好,以致於此次要基本所有重來一遍,很是費勁,若是此次仍是那麼含糊的話,那下次就是和文件關聯,與課設有關了。對中間要求嚴格一點,作的更好一點,也是爲了後面能不學的那麼累。
1.2.2 代碼累計
數組
指針pta總分110
7-3 字符串的冒泡排序 (20 分) 咱們已經知道了將N個整數按從小到大排序的冒泡排序法。本題要求將此方法用於字符串序列,並對任意給定的K(<N),輸出掃描完第K遍後的中間結果序列。 輸入格式: 輸入在第1行中給出N和K(1≤K<N≤100),此後N行,每行包含一個長度不超過10的、僅由小寫英文字母組成的非空字符串。 輸出格式: 輸出冒泡排序法掃描完第K遍後的中間結果序列,每行包含一個字符串。
3.1.1 算法分析函數
定義二維字符數組ch[100][20] for(i=0 to n) do scanf("%s",ch[i])//將字符串看作一個總體存放在數組中 end for 定義j - for(i=0 to k)循環到k輪結束 do - for(j=0 to n-1-i)//考慮到最大的那個數在最後的狀況,要減1 do - if(ch[j]>ch[j+1]) 定義字符數組t[20] //利用函數strcpy交換ch[j]與ch[j+1]的值 strcpy(t, ch[j]); strcpy(ch[j], ch[j+1]); strcpy(ch[j+1], t); end if end for end for - for(i=0 to n) do 輸出ch[i] end for
3.1.2 代碼截圖
學習
3.1.4 PTA提交列表及說明
3d
題目:實現小學四則運算,有3個難度級別,分別爲:指針
第一級是1位數的一步加減乘除計算
第二級是2位數的2步加減運算
第三級是3位數的2步加減運算
改進內容:code
1.構造字符數組存放算術表達式
算法分析blog
定義lence//表示數組長度 - if(level == 1) lence = 4;//一級運算式子共有4個字符 - else if(level == 2) lence = 9;//一級運算式子共有9個字符 - else lence = 12; //一級運算式子共有12個字符 end if - for( i = 0 to lence-1) - for(j = 0 to level)//一級是一位數,二級兩位數,三級三位數 - if(level>1)//大於兩位數的隨機數,第一位數字不能爲0 - if(j==0) exp[i++] = rand() % 9+'1';//第一位數字不能爲0 - else exp[i++] = rand() % 10 + '0'; end if else exp[i++] = rand() % 10 + '0'; end if end for - if(level == 1)//等級一輩子成四個運算符 t = rand() % 4; if (t == 0) exp[i] = '+'; else if (t == 1) exp[i] = '-'; else if (t == 2) exp[i] = '*'; else exp[i] = '/'; - else //等級二三生成兩個運算符 t = rand() % 2; if (t == 0) exp[i] = '+'; else exp[i] = '-'; end if end for exp[lence-1] = '=';//讓最後一個爲等號 exp[lence] = '\0';
截圖函數代碼
排序
2.計算結果的函數
算法分析內存
定義計算結果sum並初始化爲0 定義oldc爲原來字符並複製爲 + do - if(exp[i]<='9'&&exp[i]>='0' ) //讀到的字符是數字,累計起來 m=10*m+exp[i]-'0'; - else - if(oldc=='+' )//加法 sum += m; - else if(oldc=='-')//減法 sum -= m; - else if(oldc=='*')//乘法 sum *= m; - else if(oldc=='/')//除法 sum /= m; end if m = 0;//從新歸零,不影響下次運算 oldc =exp[i];//賦新制 end if i++;//i自增讀下一個字符 }while(exp[i-1]!='='); end do while 返回最終結果sum;
代碼截圖
改造前函數1和改造後的函數1
改造前函數2和改造後的函數2