作業要求:https://edu.cnblogs.com/campus/hljkj/CS201801/homework/2523
預習作業截圖及感受:
上課前,老師讓我們觀看數組的MOOC視頻,事實證明非常有效,通過觀看視頻達到了對新課程的預先效果,並且產生了對新課程的興趣。雖然觀看視頻后產生了許多疑問,但隨着老師上課的講解,疑問也被逐一解決。如圖,我共計觀看了第六第七周的七個視頻,通過觀看視頻我學到了數組的基本概念和數組如何操作等知識點,並且學到了如排序的數組編程題。產生的疑問是數組到底如何存儲數據以及數組的定義中中括號前面那個字母到底是什么意思,對於二維數組也沒有掌握牢靠。
PTA作業:
第十三次作業
7-1 輸出數組元素
本題要求編寫程序,對順序讀入的n個整數,順次計算后項減前項之差,並按每行三個元素的格式輸出結果。
代碼:
#include<stdio.h> int main() { int n,i,jian,flag=0; scanf("%d",&n); int a[n]; scanf("%d", &a[0]); for(i=1;i<n;i++) { scanf("%d", &a[i]); jian = a[i] - a[i-1]; flag++; if(flag%3==0||flag==n-1){printf("%d", jian);} else{printf("%d ", jian);} if(flag%3==0){printf("\n");} } return 0; }
解題思路:
1)定義一個標識變量flag,定義一個循環變量i,定義一個可輸入的數組容量值n,最后定義一個結果變量jian;
2)輸入n的值,然后定義一個數組a[n],由於需要后一項減去前一項,所以先輸入a[0]的值;
3)建立一個for循環,讓i由1開始循環,每次循環輸入一個a[i]的值,並計算后一項減去前一項的值,保存到jian;
4)由於輸出時需要每行三個且行末不能留有空格,所以讓每次相減后flag的值加一,當flag的值是三或三的倍數時,輸出一個換行,並且當flag的值是三或三的倍數且為最大值時,不輸出空格。
流程圖:
運行結果:
調試之旅:
本周總結:
這一周是我們學習數組的第一周,也是我們第一次開始接觸數組作業。幸運的是,我們已經提前完成了預先工作,所以很多的問題也都迎刃而解,雖然還有一些小疑問,但我有理由相信通過接下來的學習,我們可以解決所有的問題。
第十五次作業
7-3 冒泡法排序
本題要求對任意給定的K(<N),輸出掃描完第K遍后的中間結果數列。
代碼:
#include<stdio.h> int main() { int n,k,i,j,temp; scanf("%d %d",&n,&k); int a[n]; for(i=0;i<n;i++) { scanf("%d",&a[i]); } for(i=0;i<k;i++) { for(j=0;j<n-1-i;j++) { if(a[j]>a[j+1]) { temp = a[j]; a[j] = a[j+1]; a[j+1] = temp; } } } printf("%d",a[0]); for(i=1;i<n;i++) { printf(" %d",a[i]); } return 0; }
解題思路:
1)定義兩個循環變量i和j,定義一個可輸入數組容量n,定義一個可輸入判斷值k,最后定義一個中間變量temp;
2)輸入n的值並定義一個數組a[n];
3)建立一個for循環,讓i從0開始循環到n-1並逐層輸入a[i]的值;
4)再建立一個for循環並鑲嵌一個for循環,外層的控制排序次數,內層的實現排序;
5)如果前一項數組里數字的值大於后一項的,就通過temp實現數值交換,最后輸出交換后的結果。
流程圖:
運行結果:
調試之旅:
本周總結:
這一周既是我們學習數組的最后一周,數組的大部分問題都已經被解決了,僅存的幾道難題也被逐一攻略。同時這也是我們大一上學期學習C語言的最后一周,雖然學習途中有很多坎坷,但我們都成功的克服了,也在這里向老師說聲感謝,謝謝您不厭其煩的教導我們,我們這一學期給您添了不少麻煩,還望海涵。雖然下學期您就不帶我們了,但終有一天我們會再次相逢,我們會再接再厲,努力學習好C語言,不讓老師失望。
學習進度條
表格:
折線圖:
點評
張春宇:https://www.cnblogs.com/zcybky/p/10152047.html