作業要求:https://edu.cnblogs.com/campus/hljkj/CS201802/homework/2522
1. 我觀看了數組,函數的定義與使用,函數的參數與變量,數組運算。
2.我知道了1).數組規定了多少個元素就不能超過這個數,否則就是越界。
2).儲存數組時需要用for循環一個一個輸入。
3).函數調用首先從主函數開始進行,從中跳轉到所定義的函數。
3.問題:在運用數組時會出現運用不好的問題,有時還會有越界的問題。
第十六周作業 題目: 7-1 輸出數組元素
1.實驗代碼
#include <stdio.h> int main() { int n,i=0,j,count=0; scanf("%d\n",&n); int a[n]; for(i=0;i<n;i++){ scanf("%d",&a[i]); } for(i=1;i<n;i++){ j=a[i]-a[i-1]; count++; if(count%3==0){printf(" %d\n",j);} else if(count%3==1){printf("%d",j);} else if(count%3==2){printf(" %d",j);} } return 0; }
2.解題思路
1).定義四個整型變量給出的正整數數量n,和輸出的后項減前項的值 j ,以及i和count;輸入n后,再定義整型數組a[n];
2).進入第一個循環從i=0開始進行存入數組中的n個數;而后進行第二個循環;
3).這時要注意從i=1開始計算j的值,因為要求是后一項減前一項;count隨着循環進行n次加;
4).當count除以三求余等於0時輸出空格加j加回車;當count除以三求余等於1時輸出j;當count除以三求余等於2時輸出空格加j;結束運行。
流程圖
3.調試過程遇到的問題及其解決方法:
第一個問題:
進行調試:
輸入所給案例的數字;直接出現結果:
解決辦法:發現儲存a[i]后如果從i=0開始就會有a[0]-a[-1]會有a[0]的值5出現,所以我將i=0改成了i=1,結果沒有直接跳出循環出結果而是一步一步進行循環
:
結果正確。
題目: 7-2 求最大值及其下標
1.實驗代碼:
#include <stdio.h> int main(){ int i,n,h,z,count=0; scanf("%d",&n); int a[n]; for(i=0;i<n;i++){ scanf("%d",&a[i]); } if(n>1&&n<=10){ h=a[0]; for(i=0;i<n;i++){ if(a[i]>h){h=a[i];z=i;} else if(a[i]=h){h=h;count++;} } if(count==i){printf("%d 0",h);} else{printf("%d %d",h,z);} } return 0; }
2.解題思路
1).先定義5個整數型變量i,輸入數組元素的個數n,h,z,count=0,用戶輸入變量n,再定義數組a[n];
2).進入循環i=0;當i<n時不斷輸入數組元素a[i],i++,直至i>n.
3).如果n>1且n<=10,則h=a[0],進入循環i=0;當i<n時不斷進行循環語句中的條件語句:如果a[i]>h時h=a[i],z=i;否則h=h,count++;直至i>n;
4).跳出循環后如果count等於i輸出“h 0”;否則輸出“h z”,結束。
流程圖
3.調試過程遇到的問題及其解決方法:
按照所給提示當n=10,數組中所有元素都相等時進行調試:
解決辦法:發現並不走count=i這一步而是進行下一步,所以我發現如果a[i]=a[i-1]時在我的程序里沒有進行count++;所以count不會等於i;
所以我將a[i]<h改為a[i]=h,結果正確;
個人總結:
本周學習內容:學習了數組的定義,數組的儲存,選擇排序法和冒泡排序法以及我們在儲存數組時需要用for循環語句進行一個一個的儲存;關於數組越界問題,還有將多個for循環用一個for循環以此減少循環使用。
收獲:主要收獲是進行數字排列時可以減少for循環的使用,剪短代碼的行數以及計算機進行的步驟。
表格以及折線圖:
點評:
https://www.cnblogs.com/cyw1/p/10133891.html