作業要求:https://edu.cnblogs.com/campus/hljkj/CS201802/homework/2522
課前預習:
學習了有關數組定義及運算的知識
有關輸出最大值或最小值及其下標等還不熟練,字母間代換思路有時還不是很清晰
【7-2 輸出所有大於平均值的數】
#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){ printf("Invalid."); } else{ for(i = 0;i < n;i++){ scanf("%d",&a[i]); sum = sum + a[i]; } average = sum / n; printf("%.2f",average); printf("\n"); for(i = 0;i < n;i++){ if(a[i] > average){ printf("%d ",a[i]); } } } printf("\n"); system("pause"); return 0; }
解題思路:
1. 定義平均數average 、數組之和sum 、元素個數n 、數組a[ i ] 、i
2. 利用 if 語句,n<1或n>10時,輸出 “ Invalid. ”
3. 利用 for 循環,求出數組之和,再求出平均值
4. 利用 for 循環,將數組中的數與平均值比較,輸出大於平均值的數
流程圖:
調試過程:
在檢查時發現 if 判斷句中多打了等號,導致出錯
將 n<=1 || n>=10 改為 n<1 || n>10
【7-2 求最大值及其下標】
#include <stdio.h> int main(void) { int i,n; scanf("%d",&n); int f[n]; int index = 0; for(i = 0;i < n;i++){ scanf("%d",&f[i]); } int max = f[0]; for(i = 0;i < n;i++){ if(max < f[i]){ max = f[i]; index = i; } } printf("%d %d",max,index); system("pause"); return 0; }
解題思路:
1. 定義元素個數 n 、下標 index 、數組 f [ n ] 、i
2. 輸入f [ n ],定義最大值 max = f [ 0 ]
3. 利用 for 循環,若 max = f [ i ],則替換 max 與下角標,
4. 輸出最大值與下角標
流程圖:
調試過程:
翻看課本時發現定義的 max = f [ 0 ]應寫在第一個 for 循環后面
個人總結:
(1)本周進行了數組學習,定義引用、初始化、選擇法排序與冒泡法排序
(2)打代碼時經常粗心,經常寫錯或寫串位置
邏輯思維還需進一步提高
點評:
(1)https://www.cnblogs.com/kaitbkleyue/p/10164062.html
(2)https://www.cnblogs.com/zst1/p/10133338.html
(3)https://www.cnblogs.com/nansu/p/10134717.html