1. 程式人生 > >C博客作業--指針

C博客作業--指針

英文名 字符轉換 數字類型 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博客作業--指針