預習
1、數組視頻全看了
2、學到了一維數組和二維數組,如何定義使用數組
3、數組的排序,不能熟練使用二維數組,只能初步定義

第一題:
7-2 輸出所有大於平均值的數
作業要求:
本題要求編寫程序,將輸入的n個整數存入數組a中,然后計算這些數的平均值,再輸出所有大於平均值的數。
代碼:
1 #include<stdio.h>
2 int main(){
3 int n,sum=0;
4 int i,judge=0;
5 double average=0;
6 scanf("%d",&n);
7 if(n>=1&&n<=10){
8 int a[n];
9 for(i=0;i<n;i++){
10 scanf("%d",&a[i]);
11 sum=sum+a[i];
12 }
13 average=1.0*sum/n;
14 printf("%.2f\n",average);
15 for(i=0;i<n;i++){
16 if(a[i]>average){
17 printf("%d ",a[i]);
18 }
19 }
20 for(i=0;i<n;i++){
21 if(a[i]!=average)
22 judge=1;
23 }
24 if(judge==0){
25 printf("\n");
26
27 }
28 }
29 else{
30 printf("Invalid.");
31 }
32 return 0;
33 }
思路:
第一:定義變量,輸入n;
第二:根據題目要求,n若不在1≤n≤10內,則輸出Invalid.;
第三:n若在1≤n≤10內,則執行循環輸入a[i],sum+=a[i];
第四:求平均數average=1.0*sum/n;
第五:循環判斷a[i]是否大於average,若大於則輸出a[i];
第六:定義變量judge=1,假設數組中有數等於average;
第七:循環判斷a[i]是否不等於average,若是則令judge=0;
第八:如果judge=0,則輸出空行;
結束
流程圖:

運行過程:

做得很輕松一遍過

調試一下
運行成功

第二題:
7-3 交換最小值和最大值
作業要求:
本題要求編寫程序,先將輸入的一系列整數中的最小值與第一個數交換,然后將最大值與最后一個數交換,最后輸出交換后的序列。注意:題目保證最大和最小值都是唯一的。
代碼:
1 #include<stdio.h>
2 int main(){
3 int n,i;
4 scanf("%d\n",&n);
5 int a[n];
6 for(i=0;i<n;i++){
7 scanf("%d",&a[i]);
8 }
9 if(n==2){
10 if(a[0]>a[1])
11 printf("%d %d ",a[1],a[0]);
12 else
13 printf("%d %d ",a[0],a[1]);
14 }
15 else{
16 int max=a[0],index1=0;
17 int min=a[0],index2=0;
18 for(i=0;i<n;i++){
19 if(max<a[i]){
20 max=a[i];
21 index1=i;
22 }
23 }
24 a[index1]=a[n-1];
25 a[n-1]=max;
26 for(i=0;i<n;i++){
27 if(min>a[i]){
28 min=a[i];
29 index2=i;
30 }
31 }
32 a[index2]=a[0];
33 a[0]=min;
34 for(i=0;i<n;i++){
35 printf("%d ",a[i]);
36 }
37 }
38
39 return 0;
40 }
思路:
第一:定義變量,輸入n;
第二:循環輸入a[i];
第三:如果n=2,進入條件語句(第四,第五);
第四:如果a[0]>a[1],輸出a[1],a[0];
第五:如果a[0]<=a[1],輸出a[0],a[1];
第六:如果n!=2,定義變量max=min=a[0],index1=index2=0;
第七:i從0到n-1如果max<a[i]則max=a[i],index1=i;
第八:a[index1]=a[n-1],a[n-1]=max;
第九:i從0到n-1如果min>a[i]則min=a[i],index2=i;
第十:a[index2]=a[n-1],a[n-1]=min;
最后:循環輸出數組a
流程圖:

運行過程:
寫pta出現的問題

首次調試

在這是對的,注意下一波

a[3]出現失誤

想了很久,發現是我的for循環值會覆蓋,於是我把for循環拆成兩個

調試一下新代碼,perfect

總結:
學習了簡單的數組運用,選擇排序,冒泡排序,還看了指針的一些內容。
學習了數組以后,發現了解數組簡單,但是在運用這方面就有點落后了,編程的代碼不能如自己所想的那樣,最后結果不如我所願。我是這么去解決的,遇到了就先改,改到自己認為的極限以后,再去考慮補,打補丁來解決問題。在下一段的學習中,我會先進行簡單的運算,類似於與計算機進行交流,思考好了如何編程,再去碼,不想當然的去碼代碼。
點評:
累積代碼行數和時間:

累積博客字數和時間:
