第四次作業


第四次作業

我觀看了浙江大學程序設計入門-C語言課程中有關數組的第六周和第七周部分,總共觀看了17個視頻。

觀看列表截圖

通過觀看視頻我學習到的知識點:

 *利用for循環來遍歷數組。

 *數組的集成初始化:直接用大括號給出數組所有元素的初始值,不需要給出數組大小。

 *數組作為函數參數時,往往必須再用另一個參數來傳入數組大小。

對於所學知識點還有的疑問:

 *專一多能不是好的代碼,例如在一段代碼中,i即是循環遍歷的變量,又用來作為其他的標志,這樣是不好的。一開始不是很理解這句話的意思,反復看了幾遍視頻之后就能理解了。

沒有學會的知識點:

*二維數組的tic-tac-toe游戲中讀入矩陣,檢查行,檢查列,檢查對角線。

 

作業要求https://edu.cnblogs.com/campus/hljkj/CS201802/homework/2522

 

PTA作業

第16周 第13次作業 7-2 輸出所有大於平均值的數

題目:

本題要求編寫程序,將輸入的n個整數存入數組a中,然后計算這些數的平均值,再輸出所有大於平均值的數。

輸入格式:輸入在第1行中給出一個正整數n(1n10),第2行輸入n個整數,其間以空格分隔。題目保證數據不超過長整型整數的范圍。

輸出格式:輸出在第1行給出平均值,保留2位小數。在第2行輸出所有大於平均值的數,每個數的后面有一個空格;如果沒有滿足條件的數,則輸出空行。如果輸入的n不在有效范圍內,則在一行中輸出"Invalid."。

1.實驗代碼

#include <stdio.h>
int main ()
{
  int n,i,a[10],sum;
  double average;
  
  sum=0;
  
  scanf("%d",&n);
  
  if(n>=1&&n<=10)
  {
    for(i=0;i<n;i++)
    {
      scanf("%d",&a[i]);
      sum=sum+a[i];
    }
    average=sum/n;
    printf("%.2f\n",average);
    for(i=0;i<n;i++)
    {
      if(a[i]>average)
      {
        printf("%d ",a[i]);
      }
    }
    printf("\n");
  }
  else
  {
    printf("Invalid.");  
  }
 return 0; 
}

 

 2 解題思路

(1)算法:**利用for循環進行數組的賦值並求和,求出平均值后,再利用for循環將數組中每個數與平均值一一比較,輸出符合要求的數。

        *輸入n。

        *當輸入的n值滿足條件時,利用for循環遍歷數組,進行數組的賦值並求和。

        *求出平均值。

        *再次利用for循環遍歷數組,將數組中每個數與平均值比較。

        *輸出符合要求的數。 

        *當輸入的n值不滿足條件時,輸出“Inwalid”。

(2)流程圖:

 

3.本題調試過程碰到問題及解決辦法

(1)錯誤:在利用for循環給數組賦值時,語句“i<n”,錯寫成了“i<=n”。

(2)有錯誤提示的截圖

 

 

當正常輸入n等於3,接着在輸入三個數,按回車鍵后,沒有給出計算結果,而是顯示要繼續輸入。

(3)編譯器設置斷點、單步調試的界面截圖

 

 

(4)解決辦法:通過反復嘗試,我找出了錯誤的地方並去掉了多余的等號,改正后正常輸入后可以得出結果。

 

第17周 第14次作業 7-2 求最大值及其下標

題目:本題要求編寫程序,找出給定的n個數中的最大值及其對應的最小下標(下標從0開始)。

輸入格式:輸入在第一行中給出一個正整數n(1<n10)。第二行輸入n個整數,用空格分開。

輸出格式:在一行中輸出最大值及最大值的最小下標,中間用一個空格分開。
1.實驗代碼

#include <stdio.h>
int main ()
{
  int i,a[10],n,max;
  scanf("%d",&n);
  for (i=0;i<n;i++)
  {
    scanf("%d",&a[i]);
  }
  max=0;
  for (i=0;i<n;i++)
  {
    if(a[max]<a[i])
    {
      max=i;
    }
  }
  printf("%d %d",a[max],max);
  return 0;
}

2解題思路

(1)算法:**利用兩次for循環遍歷數組,第二個for循環中嵌套if語句用來給查找最大值。

        *第一次利用for循環,遍歷數組,給數組賦值。

        *先令max等於0,在進行最大值的查找。

        *第二次利用for循環,遍歷數組,再嵌套if語句,將數組中每個數進行比較,找出最大值及其下標。

(2)流程圖

 

3.本題調試過程碰到問題及解決辦法

(1)錯誤:數組長度是一個整型常量表達式,而我把數組長度設成一個變量,這是不對的。

(2)有錯誤提示的截圖

 

 

(3)編譯器設置斷點、單步調試的界面截圖

 

 

(4)解決辦法: 將數組長度該成一個常量,例如10,程序就可以正常運行了。

 

個人總結:

1.本周我學習了的內容:數組的定義,利用for循環給數組賦值,還可以將數組中每個數都拿出來進行相關計算。

  我的收獲*數組是一些具有相同類型的數據的集合,數組中的數據按照一定的順序排列存放。

           *數組長度是一個整型常量表達式,設定數組的大小,在定義時必須指定。

           *數組下標從0開始,下標不能越界。

2.難點:*利用for循環遍歷數組來進行賦值,比較等計算。

       *邏輯關系復雜的程序總是思路混亂,沒有頭緒。

  措施:*認真看書,先解決在知識點上的欠缺。

       *上網查找資料,培養自主學習的能力。

       *多敲代碼,反復練習,熟能生巧。

       *虛心向同學學習,借鑒他們的優點。

 

累積代碼行數和時間:

時間 12月13日 12月14日 12月15日 12月16日 12月17日 12月18日 12月19日 12月20日 12月21日 12月22日 12月23日 12月24日 12月25日
代碼行數 30 55 73 102 135 157 160 176 189 194 210 225 236

累積博客字數和時間:

時間 12月13日 12月14日 12月15日 12月16日 12月17日 12月18日 12月19日 12月20日 12月21日 12月22日 12月23日 12月24日 12月25日
博客字數 0 0 0 0 0 200 300 300 300 450 750 850 900

折線圖:

 

 

點評:https://www.cnblogs.com/mayijing/p/10158728.html

                 https://www.cnblogs.com/zst1/p/10133338.html

                https://www.cnblogs.com/nansu/p/10134717.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM