1.本章學習總結
1.1 思維維導圖
1.2 本章學習體會及代碼量學習體會
1.2.1 學習體會
這周主要學習了數組,一維數組,二維數組和字符數組等,在一些基本的操作方面,如定義,引用等這三種數組並沒有太大的區別,只是不同數組稍微有點改變,就像字符數組中就加入了一個結束符‘\0’.除了有學到一些數組的基本應用,還學到了冒泡排序法和選擇法以及二分查找法等應用型方法。
隨着對C語言的深入學習,數組這一章還是蠻難的,雖然上課有認真聽課,大部分也能夠聽懂,但是課后做題也還是沒有頭緒,以后還是要多花時間在做題上。
1.2.2代碼累計
2.PTA總分
2.1三次題集分數截圖
2.2我的總分
一維數組得分:164分
二維數組得分:50分
字符數組的分:40分
總分:254分
3.PTA作業
3.1 題目一
本題要求編寫程序,將一個給定的整數插到原本有序的整數序列中,使結果序列仍然有序
3.1.1 算法分析
.定義i,j.x.n
.輸入n,定義數組a[n]
.for from i=0 to i<n then do
輸入a[i];
.當a[i]<x且i<n時 do
i++
.for from j=n-1 to j>=i then do
a[j+1]=a[j];
.把x賦給a[i] a[i]=x;
.循環輸出新的序列a[i];
.end
3.1.2 代碼截圖
3.1.3 提交列表及分析
Q1:循環的結束點通常搞不懂在哪里
Q2:插入新的數之后,其后面的每個數的位置都會向右移動一個位置,不懂怎么用代碼表達出來
3.2 題目二
本題要求編寫程序,將給定字符串去掉重復的字符后,按照字符ASCII碼順序從小到大排序后輸出。
3.2.1 算法分析
.定義兩個字符數組 str1[N],str2[N];
定義ch,temp;
定義 len1=0;
定義循環變量 i,j;
定義 k=0,flag;
.輸入字符串 ch=getchar();
.for from i=0 to ch!='\n' then do
str1[i]=ch;
len1++; //計算字符串長度
ch=getchar();
.for from i=0 to i<len1 then do
flag=0; //沒有重復字符時置flag=0;
for from j=0 to j<i then do
判斷:如果有相同字符 then do
flag=1
否則 str2[k++]=str1[i];
.使用冒泡排序法來排序
.for from i= to k-1 then do
for from j=0 to k-i-1 then do
判斷str2的前一個數是否大於后一個數
大於時交換位置 do temp=str2[j]; str2[j]=str2[j+1]; str2[j+1]=temp;
.循環輸出str2[i]
.換行
.end
3.2.2 代碼截圖
3.2.3 提交列表及分析
Q:我的絕望已經體現在我長長的提交列表上了,一直部分正確是因為有很多的小問題沒有處理好
Q2:ASCII碼值的大小比較錯誤
3.3 題目三
本題要求編寫程序,將給定的n個整數存入數組中,將數組中的這n個數逆序存放,再按順序輸出數組中的元素。
3.3.1 算法分析
.定義n,i,j;
.定義count=0,以及兩個數組 a[10],b[10];
.輸入n
.for from i=0 to i<n then do
輸入n個數
.for from j=n-1 to j>=0 then do
b[count]=a[j];
count++;
.循環輸出數組b[ ]
.end
3.3.2 代碼截圖
3.3.3 提交列表及分析
Q:這個題目比較簡單,一開始輸出的格式沒控制好,還沒發現;
4.代碼互評
4.1 代碼截圖
同學的代碼截圖
我的代碼截圖
4.2 二者異同
同:代碼行數都差不多
異:flag的使用不同;我定義了兩個flag,該同學定義了一個flag做變量;
我是使用的方法是先遍歷第一個數組,再遍歷第二個數組,看是否有相同的元素
該同學是把兩個數組的元素合並成為一串,再用flag判斷