C博客作業--指針
阿新 • • 發佈:2017-12-17
英文名 字符轉換 數字類型 mark 是什麽 post 學生成績 部分 ...
一、PTA實驗作業
題目1:統計大於等於平均分人數
1. 本題PTA提交列表
2. 設計思路
定義形參*s存放s的首地址,n存放人數m的值,*aver存放平均分aver的地址 定義i控制循環,count用來統計高於等於平均分的學生人數 定義浮點型指針*p讓p=s存放數組s的首地址 for i=0 to n { aver累加p指針指向的單元格內的值統計出所以學生成績總分 } aver除以人數n算出平均分 p=s將p指針重新指向s數組第一個地址 for i=0 to n { 如果指針p指向單元格內的數據大於平均分aver則count自增 } 返回count的值
3.代碼截圖
4.本題調試過程碰到問題及PTA提交列表情況說明。
剛剛開始直接拿s指針來做遞增,導致做完統計總分的那個循環後就不知道s的首地址在哪了 解決辦法:重新定義一個指針p讓p=s,然後用p來做自增,這樣就可以不改變s指向的地址,從而知道首地址在哪了。
題2:過濾字符串只保留串中的字母字符
1. 本題PTA提交列表
2. 設計思路
定義函數名為fun的無返回型函數,定義字符型指針*p接受字符串str的首地址 定義i控制變量 max存放最大ASCII碼值的下標 for i=0 to p[i]!=‘\0‘ { 當i=0時max=0 如果有p[i]的ASCII碼值大於p[max] 的ASCII碼值 則max=i記錄下標 } 定義一個temp作為換位置的橋梁 temp=p[max] for i=max to 0 { 把p[i]的值換為p[i-1]//逐個往後推一位 } p[0]=temp
3.代碼截圖
4.本題調試過程碰到問題及PTA提交列表情況說明。
- 剛剛開始不知道ASCII碼值如何比較 解決辦法:使用強制類型轉換比較大小,不知道還有沒有其他辦法,想學習一下。
題目3:輸出月份英文名
1. 本題PTA提交列表
2. 設計思路
3.代碼截圖
4.本題調試過程碰到問題及PTA提交列表情況說明。
- 部分錯誤 解決辦法:八月份的英文打錯了....
- 剛剛開始是把十二個月的英文名存在一個字符串內,用指針遞增的辦法,但是最後沒能實現 解決辦法:想到之前用過switch的分支法就用這個來實現了,但是還是希望能看到有同學用存在字符串內的辦法,讓我學習學習。
- 雖然pta對了,但是我還是想問一下這堆警告是什麽
二、截圖本周題目集的PTA最後排名。
三、閱讀代碼
1.
這是彭希的第八題,做法簡潔明了,直接把t字符串的從第t+m-1個單元賦給s字符串就行了,為了比較我貼一下我之前的做法吧,而且這是沒有全過的做法
2.
該題要求實現循環報數,如何依次把報到m的人除去組內,如何最後輸出每個人出去的順序數。這題我一開始是沒有思路的,看了誌湖同學的代碼才有思路,在循環內放如三個分支判斷,比較形象的呈現報數的過程。
四、本周學習總結
1.自己總結本周學習內容。
- 指針:不懂函數調用時函數名前加個號和不加號的區別
- 結構體:感覺很方便,把一些數據歸類在一個結構體內,像是處理一個人的數據,很神奇
- 庫函數:很方便,但是目前還不太會用,也記不住名字和功能,應該多使用多熟記
2.羅列本周一些錯題。
(1)
這題主要不會toupper函數的用法,現在知道了toupper函數可以把小寫字母轉換為大寫字母 另外tolower可以把大寫字母轉換為小寫字母
(2)
這題沒讀懂題意,題目要求的是把數字類型的字符轉換成整型相加返回,所以sum=sum+*s-‘0’既轉換了類型又累加了數字
C博客作業--指針