作業要求:https://edu.cnblogs.com/campus/hljkj/Cprogramming_2018Autumn_CST2018_4/homework/2502
一、函數作業 數字金字塔
1.實驗代碼

1 void pyramid( int n ) 2 { 3 int i,j,k,m; 4 5 m = n; 6 for(i=1;i<=n;i++,m--) 7 { 8 j=m; 9 for(j=m-1;j>0;j--) 10 printf(" "); 11 for(k=i;k>0;k--) 12 printf("%d ", i); 13 printf("\n"); 14 } 15 16 }
2.解題思路
(1)主要描述題目算法
1.數字加前面的空格數為行數
2.數字后面都有空格
第一步:輸入行數
第二步:輸出對應行數的空格和帶空格的數字
(2)流程圖
3.本題調試過程碰到問題及解決辦法
問題:前面多了一個空格
解決辦法:
將j=m改為j=m-1
二、數組1作業 7-1 交換最小值和最大值
1.實驗代碼

1 #include<stdio.h> 2 int main() 3 { 4 int a[10]; 5 int i,n,c,b,e; 6 scanf("%d\n",&n); 7 8 for(i=0;i<n;i++) 9 { 10 scanf("%d",&a[i]); 11 } 12 13 int min=a[n-1]; 14 int max=0; 15 16 int imin=n-1; 17 int imax=0; 18 for(i=0;i<n;i++) 19 { 20 if(max<a[i]) 21 { 22 imax=i; 23 // printf("%d\n",imax); 24 max=a[imax]; 25 // printf("%d\n",a[imax]); 26 } 27 if(min>a[i]) 28 { 29 imin=i; 30 min=a[imin]; 31 } 32 } 33 if(n==2) 34 { 35 if(a[0]>a[1]) 36 { 37 printf("%d %d ",a[1],a[0]); 38 } 39 else 40 { 41 printf("%d %d ",a[0],a[1]); 42 } 43 } 44 else if(imin==n-1) 45 { 46 47 b=a[0];a[0]=min;a[imin]=b; 48 c=a[n-1];a[n-1]=max;a[imax]=c; 49 for(i=0;i<n;i++) 50 { 51 printf("%d ",a[i]); 52 } 53 54 } 55 56 57 58 59 else 60 { 61 c=a[n-1];a[n-1]=max;a[imax]=c; 62 63 b=a[0];a[0]=min;a[imin]=b; 64 for(i=0;i<n;i++) 65 { 66 printf("%d ",a[i]); 67 } 68 } 69 return 0; 70 }
2.解題思路
(1)主要描述題目算法
第一步:輸入行數和一行數
第二步:選出最大值和最小值
第三步:將最小值和第一個調換,將最大值與最后一個調換
第四步:輸出
(2)流程圖
3.本題調試過程碰到問題及解決辦法
原先以為調換出錯,發現寫的程序只是其中一種情況。考慮了最小值在最前和不是的情況。發現將最大值與最小值調換的兩個語句的順序對調試有一定的促進作用,將兩者互補之后發現仍缺少考慮輸入為兩個數的情況。
嘗試將這種情況放入if語句的中間結果發現調換情況仍不對,使用數據測試后認為應該將兩個數的情況優先考慮,再次調試即為正確答案。
三、數組2作業 7-2 查找整數
1.實驗代碼

1 #include <stdio.h> 2 3 int main() 4 { 5 int N,M; 6 scanf("%d %d",&N,&M); 7 int as[N],b; 8 int a; 9 int x=0; 10 for(a=0;a<N;a++) 11 { 12 scanf("%d",&as[a]); 13 14 } 15 for(b=0;b<N;b++) 16 { 17 if(M==as[b]) 18 { 19 x=1; 20 printf("%d",b); 21 break; 22 } 23 } 24 if(x==0) 25 { 26 printf("Not Found"); 27 } 28 return 0; 29 }
2.解題思路
(1)主要描述題目算法
第一步:輸入數據
第二步:在數據中依次查找X
第三步:輸出其在數組內的位置或者not found
(2)流程圖
3.本題調試過程碰到問題及解決辦法
Not Found的格式錯誤,寫成了NotFound
解決辦法:添加空格
要求三(共10經驗值)
個人總結
(1)總結這幾周你學習哪些內容(不限於課上)?你有哪些收獲?
數組的應用,自定義函數,選擇法排序與冒泡排序的區別,vector數組
(2)總結這幾周所學內容中你覺得哪些地方是難點?對此你做了哪些措施去克服這些困難?(5經驗值)
比較的順序和各種情況的先后大小問題
措施:利用測試點進行調試
要求四(共10經驗值)
互評和學習進度
1、點評3個同學的本周作業(在作業中給出被點評同學博客的鏈接),並邀請3名同學點評你的作業,無點評作業(你的作業未被3人點評)/或者沒有回復同學或老師的點評都倒扣該題分數。(5經驗值)。
點評:1)閆慧欣同學
2)李靖同學
3)初可欣同學
邀請:李銳 初可欣 閆慧欣
2、請用表格和折線圖呈現你這幾周(11/10 12:00~12/10 12:00)的累積代碼行數和時間、累積博客字數和時間(5經驗值),表格和折線圖請參考https://www.cnblogs.com/ranh941/p/7594640.html。
請注意,折線圖體現的是累積代碼行數和累積博客字數,例如:第1周代碼行數為100、博客字數1000,第2周代碼行數為200、博客字數為500,則對應的折線圖中應該有兩個點,折線圖橫坐標為時間(第1周、第2周),縱坐標為累積代碼行數和博客字數(100和300或者1000和1500)。允許兩個折線圖,當然雙y軸折線圖更好。
周數 | 此周代碼行數/行 | 碼代碼所用時長/h | 所寫博客字數/字 | 寫博客所用時長/h | 所涉及的知識點 |
第13周 | 2000 | 6 | 0 | 0 | 函數和內存 |
第14周 | 2500 | 8 | 0 | 0 | 數組和函數 |
第15周 | 2100 | 6 | 500 | 2 | 數組 |
第16周 | 3100 | 11 | 1000 | 3 | 數組和內存 |