第四次作業


博客鏈接:https://edu.cnblogs.com/campus/hljkj/CS201802/homework/2512(點擊以進入)

【課程觀看報告】

1、觀看了三節內容,共計八個視頻

 

2、通過觀看視頻你學習到哪些知識點或者編程題目?

學習了函數的調用,通過子函數在主函數中的調用能夠使主函數運行讀取更加簡便。例如:

 

正如課件所寫,“代碼代碼”是程序質量不良的表現。復制的代碼意味着將來去做維護或者修改時步驟繁瑣,不好定位問題所在。
因此使用函數的好處就顯現出來了:

 

 通過交換坐標來實現用一個兩重循環實現行和列的檢查。

 3、對於所學知識點暫時沒有疑問,但是函數這一章對我來說是難點,本周在復習時要更加注意,同時還應復習pta對應題目幫助自己更好的理解知識點。

 

 

【第十六周】

第十三次作業(數組)

7-2 輸出所有大於平均值的數

1、實驗代碼

 

#include<stdio.h>
int main(void)
{
    int i,n;
    double average,sum;
        scanf("%d",&n);
    int a[n];

    sum=0;
    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]);
    }
}
else{
    printf("Invalid.");
}
printf("\n");
    return 0;
}

 

2、解題思路

(1)題目算法:

第一步:閱讀題概,根據題目要求輸入一正整數n,並構造if條件語句,根據輸入的n的值是否符合(1<=n

               <=10)來判斷是否進入for循環

第二步:進循環后根據n的值輸入相應數目的整數並求和后計算出平均值,完成題目的第一個輸出內容;

第三步:在輸出平均數average后進入另一循環語句,依次檢測出大於平均數的數值並輸出

(2)流程圖:

 

 

3、調試過程遇到的問題及其解決方法:

 在輸出所有大於平均值的數組時的格式出現問題,當輸出的代碼為【printf("% d",a[i]);】時,輸出的格式就變為【 55 89 78 186】;這邊與題目要求的【55 89 78 186】輸出格式不符合;因此將輸出格式改為【printf("%d ",a[i];)】后輸出格式便正確了。

修改后👇

 另外第二行當輸入的n為1時出現的格式錯誤的情況,在if語句結束后輸出【\n】后可得到解決

 

—————————————————————————————————————————————

【第十七周】

第十四次作業

 7-2 求最大值及其下標

1、實驗代碼

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

  printf("%d %d",max,h);
  return 0;
}

 2、解題思路

(1)題目算法:
第一步:設定數組(本題設為f[n]),輸入正整數n表示共有n個整數

第二步:進入for循環后,依次輸入n個整數,循環結束后設定最大值max的初始值為第零個數組的值

第三步:進入第二個循環,當最大值max小於數組時進入if語句,將此次數組的值賦值給max,下標i賦值

              給h

第四步:輸出最終結果

(2)流程圖

                                            

3、調試過程中遇到的問題及其解決辦法

第一次我編寫程序時只用了一個for循環,當輸入結果為【6/2 8 10 1 9 10】時,輸出【10 5】,下標為5,說明最終max取得最后一個10,經過調試后發現因為forx循環只有一個,因此在輸入n個整數、進入if語句之前max已被f[0]賦值,就是說每次判斷max與f[i]的關系之前max的數值都被重置為輸入的第一個整數f[0],並不會承接上次循環得到的max,因此只要是比輸入的第一個整數大的數都會使得進入if語句(例如使用題概所給參考數據時max恆等於2,因此只有第四個數(i=3)不會進入if語句)。因此我設定了兩個for循環,在第二個for循環之前定義max=f[0],這樣就能保證在進入for循環時max能夠承接之前的數值。

(附錯誤程序代碼:)

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

調試過程👇

 

 

 

折線圖以及表格

 

 

 個人總結

通過這兩周的學習,主要了解了數組的概念,然后對於循環語句以及條件語句的穿插利用能夠更加熟練且靈活地掌握,個人認為將多項數值倒序輸出是難點,較難理解。希望能通過對題目的反復練習更熟練的掌握知識點,一邊為接下來的課程夯實基礎。

 

評論對象:

(1)https://www.cnblogs.com/freedomjdp/p/10115746.html(作者:鞠大鵬

(2)https://www.cnblogs.com/mayijing/p/10158728.html(作者:馬一婧)

(3)https://www.cnblogs.com/nansu/p/10134717.html (作者:nansu)

 


免責聲明!

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



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