第二次作業
作業要求https://edu.cnblogs.com/campus/hljkj/Cprogramming_2018Autumn_CST2018_3/homework/2503
一.(函數)判斷給定整數奇偶性的函數。
1.實驗代碼
int even(int n ) { if(n%2==0) return 1; return 0; }
2.解題思路
1)主要描述題目算法。
第一步:輸入整數,調用主函數。
第二步:判斷整數的奇偶性,和題目要求賦值給整形函數返回主函數。
2)流程圖
3.本題調試過程遇到的問題及解決辦法
因為是書上的例題編譯過程沒有任何問題,只是在提交答案時,把主函數也給打上了,所以提交時總顯示錯誤,后來問過同學才明白不用再寫主函數了。
二.(數組1)交換最大值與最小值
1.實驗代碼
#include <stdio.h> main() { int n,i,a[10],c,d,min,max,j; scanf("%d",&n); for(i=0;i<n;i++) { scanf("%d",&a[i]); } min=max=a[0]; for(i=0;i<n;i++) { if(a[i]<=min) { min=a[i]; j=i; } } c=a[0]; a[0]=min; a[j]=c; for(i=0;i<n;i++) { if(a[i]>=max) { max=a[i]; j=i; } } d=max; a[j]=a[n-1]; a[n-1]=d; for(i=0;i<n;i++) printf("%d ",a[i]); }
2,解題思路
1)主要描述題目算法。
第一步:給數組賦值。
第二步:根據循環求出最大值與最小值。
第三步:交換最大值與最小值。
2)流程圖
3.本題調試過程遇到的問題及解決辦法。
遇到問題:交換時忘記了找一個中間的介質,導致代碼錯誤。
解決辦法:根據提示只有兩個交換元素,在其中加入一個中間介質,重新運行結果正確。
三,(數組2)簡化的插入排序。
1.實驗代碼
#include <stdio.h> main() { int n,i,j,x,a[11]; scanf("%d",&n); for(i=0;i<n;i++) scanf("%d",&a[i]); scanf("%d",&x); i=0; while(a[i]<x&&i<n) i++; for (j=n-1;j>=i;j--) { a[j+1]=a[j]; } a[i]=x; for(i=0;i<n+1;i++) printf("%d ",a[i]); return 0; }
2,解題思路
1)主要描述題目算法。
第一步:原本就是升冪的數列,依次比較此項與下一項的大小。
第二步:若大於此項再依次比較下去。
第三步:直到找到比輸入值大的一項,把數插在此項的前一個。
2)流程圖
3.本題調試過程遇到的問題及解決辦法
遇到問題:出現重復數據。
解決辦法:多次循環后發現忘記在最后一個循環之前重新給a[i]賦值,更改后可以正常運行。
個人總結
1,最近學習了函數與數組,類型題包括數字金字塔,輸出所有大於平均值的數,一維數組,二維數組。在慕課網上學習了switch語句,但還是不太懂。
2,在學習過程中遇到了許多問題,1)總是忘記從零開始計數,通過多打代碼熟悉。2)數組這部分的代碼非常的不能理解,通過自己閱讀教材,問同學,漸漸的明白一點了。
互評和學習進度。
1,互評
梁德輝同學的作業;作為第一個提交作業的人,我認為簡直是太厲害的,對本作業的重視程度非常高,但是我認為流程圖畫的有點太龐大了,有點亂。https://www.cnblogs.com/wsaldh/p/10127051.html
王文琪同學的作業:王文琪同學總結寫的非常認真對所學內容很清晰,但是第二個流程圖好像部分線條重合了。
https://www.cnblogs.com/qqovo/p/10134759.html
於 桐同學的作業:於桐同學的作業很清晰,但是折線圖的各條線代表什么沒有給出,我認為這是美中不足的地方。https://www.cnblogs.com/4399yt/p/10139089.html
2,學習進度