要求二
題目一:求任意10個整數中的偶數的和。
1.實驗代碼
#include<stdio.h> int main() { int i,sum=0; int a[10]; for(i = 0;i < 10;i++) { scanf("%d" , &a[i]); } for(i = 0;i < 10;i++) { if(a[i]%2==0){ sum=sum+a[i];} } printf("s=%d",sum); return 0; }
2.設計思路
(1)主要描述題目算法
第一步:本題要求十個數組中的偶數和,首先要定義一個數值為十的數組a[10],然后還要定義一個循環所需的變量i,以及所求的偶數和sum。
第二步:利用for循環實現十個數組的輸入,如果某個數組除以二取余為零,則證明其為偶數,進行累加。
第三步:當i大於10后結束循環,輸出sum的值。
(2)流程圖

3.本題調試過程碰到問題及解決辦法
錯誤提示截圖

遇到的問題:本題在設計思路上並沒有什么問題,只在編譯時出現了一些小的失誤
解決方法:通過錯誤提示改正

4.本題PTA提交列表

題目二輸出小於均值的數
1.實驗代碼
#include<stdio.h> int main() { int i,sum=0; int a[10]; double average; for(i = 0;i < 10;i++) { scanf("%d" , &a[i]); sum=sum+a[i]; } average=sum/10; for(i = 0;i < 10;i++) { if(a[i]<average) printf("%d ",a[i]); } printf("\n"); return 0; }
2.設計思路
(1)主要描述題目算法
第一步:本題要求輸入10個整數,計算這些數的平均值,再輸出所有小於平均值的數。
第二步:先定義一個數值為十的數組a[10],再定義一個循環所需的變量i,以及一個數組和sum和平均數average。
第三步:利用for循環實現數組的輸入以及和的累加計算出平均數。
第四步:如果某個數大於平均數就進行輸出。注意輸出的格式每個數字后面必須有一個空格,即“%d "。
(2)流程圖

3.本題調試過程碰到問題及解決辦法
錯誤提示截圖

遇到的問題:本題和老師在課上講的才不多,a[i]與average比較時出現疑問。
解決辦法:我在大小比較的時候試兩次,哪個和答案一樣哪個對。

4.本題PTA提交列表

題目四fibonacci數列
1.實驗代碼
#include <stdio.h> int main( ) { int i; int a[12]={1, 1}; printf ("%6d",a[0]); printf ("%6d",a[1]); for (i=2;i<12;i++) { a[i]=a[i-2]+a[i-1]; printf ("%6d",a[i]); if ((i+1)%3==0) { printf ("\n");} } return 0; }
2.設計思路
(1)主要描述題目算法
第一步:本題要求用數組計算fibonacci數列的前12個數,並按每行打印3個數的格式輸出。即前兩個數相加得第三個數。
第二步:先定義一個數值為十二的數組,給出前兩個數的數值,再定義一個循環所需的變量i。
第三步:利用for循環依次算出十二個數值,注意:因為前兩個數值的大小已經給出,所以i要從2開始。
第四步:本題要求使用%6d的格式輸出,所以輸出格式為“%6d"。
第五步:要求在輸出最后一個數字后,有一個換行,所以i加1等於數組的個數后進行除3取余,實現三個數換行。
(2)流程圖

3.本題調試過程碰到問題及解決辦法
錯誤提示截圖

遇到的問題:本題和老師講的基本一樣,只是更改了每行的個數,只在編譯上出現了格式錯誤。
解決辦法:我咨詢了同學把代碼輸出的代碼改一下。
4.本題PTA提交列表

題目五 求最大值及其下標
1.實驗代碼
#include<stdio.h> int main() { int n,i,index; scanf("%d",&n); int a[n]; for(i=0;i<n;i++) { scanf("%d ",&a[i]); } index=0; for(i=1;i<n;i++) { if(a[i]>a[index]){index=i;} } printf("%d %d",a[index],index); return 0; }
2.設計思路
(1)主要描述題目算法
第一步:本題要求在給出的n個數中找到最大值及其下標。
第二步:先定義出所需的字符,i代表循環所需的變量,index代表下標,max代表最大值,n代表輸入數值的個數。同時還要定義一個數組a[N],按要求N最大為10。
第三步:首先利用for循環輸入所有的數組值,然后假設a[0]為最大值,其下標也為0。
第四步:將所有的數組與最大值max比較大小,如果給出的數組a[i]比max大,就進行交換,使max永遠保持最大,利用for循環實現所有數組的比較。
第五步:按要求輸出最終的結果。
(2)流程圖

3.本題調試過程碰到問題及解決辦法

遇到的問題:本題在思路上還是比較清晰的,出現了一些小的問題,在編譯上還是會粗心丟三落四的,沒有注意到輸出方式。
解決方法:在%d與%d之間加了一個空格
4.本題PTA提交列表


題目六 題目七 選擇法排序
1.實驗代碼
#include<stdio.h> int main() { int i,k,a[10],n,temp,max; scanf("%d",&n); for(i=0;i<n;i++){ scanf("%d",&a[i]); } for(k=0;k<n-1;k++){ max=k; for(i=k+1;i<n;i++) if(a[max]<a[i]) max=i; temp=a[max]; a[max]=a[k]; a[k]=temp; } for(i=0;i<n;i++){ if(i+1==n) printf("%d",a[i]); else printf("%d ",a[i]); } return 0; }
2.設計思路
(1)主要描述題目算法
第一步:本題要求將給定的n個整數從大到小排序后輸出。
第二步:先定義編譯所需的變量,循環所需的變量i,t,數組a[10],輸入的數組個數N以及交換大小的變量t。
第三步:利用for循環輸入所有的數組。假設最大值的下標max=k,利用for循環,如果最大值a[max]小於數組a[i],就進行交換,讓max=i,將最大值換給a[k],直到完成所有的排序結束循環。
第四步:本題要求行末不得有多余空格,所以最后一個值的輸出格式應為 printf("%d ",a[i])。
(2)流程圖

3.本題調試過程碰到問題及解決辦法
錯誤提示截圖

遇到的問題:本題先按照老師上課時講的打出了一部分,但是后續的就不會打了,對一些循環的條件的意義有些不理解
解決方法:通過查詢百度,自己把每一步仔細斟酌。學會每一步的意思。
4.本題PTA提交列表

題目八 求矩陣各行元素之和
1.實驗代碼
#include <stdio.h> #define M 10 #define N 10 int main() { int a[M][N]; int sum[M]; int m,n,i,j; scanf("%d %d",&m,&n); for(i=0;i<m;i++) { sum[i]=0; for(j=0;j<n;j++) { scanf("%d",&a[i][j]); sum[i]+=a[i][j]; } } for(i=0;i<m;i++) { printf("%d\n",sum[i]); } return 0; }
2.設計思路
(1)主要描述題目算法
第一步:本題要求矩陣各行元素之和,要將每行的兩個數相加求和,再依次輸出。
第二步:先定義此數組有m行n列,再定義循環所需的變量為i,j,所求的和為sum,初始值為0。定義矩陣數組為a[m][n]。
第三步:利用for的雙層循環輸入矩陣數組的所有值。外循環代表行,內循環代表列。
第四步:再利用for的雙層循環依次求出每行的和。
(2)流程圖

3.本題調試過程碰到問題及解決辦法
錯誤提示截圖

遇到的問題:本題和老師在課上講的才不多,出現了一些小的問題,在編譯上還是會粗心丟三落四的
解決辦法:在for循環之后加入一個“}“
4.本題PTA提交列表


要求三:
1.git地址:
https://coding.net/u/zhangle1234567/p/PTA14-15/git/tree/master/
2.git截圖:

要求四
個人總結
(1)本周你學習了哪些內容?
一維數組
二維數組
收獲了什么?
懂得如何定義數組初始化。
(2)那些是難點?
冒泡排序和選擇排序就是難點,很難理解,最后只能靠背。
哪些知識點還不明白?
不懂冒泡排序第二層循環的意義;
選擇排序也看不太明白
這兩個排序的流程圖不太會畫。
要求五
同學之間互評作業
點評作業:
林夢:http://www.cnblogs.com/lin2580/p/7954077.html

余暢翔:http://www.cnblogs.com/ycx3550213/p/7967451.html

曹琪:http://www.cnblogs.com/blueblog6/p/7886541.html

要求六
學習進度條(總結本周學習情況)
1.表格

2.折線圖

