第14、15周作業
阿新 • • 發佈:2017-12-03
print 符號 基本 維數 應該 pan 分享 -i 格式
---恢復內容開始---
#include<stdio.h> int main() { int n,i,a[10],b=0; scanf("%d",&n); for(i=0;i<n;i++){ scanf("%d",&a[i]); } for(i=0;i<n;i++){ if(a[0]<a[i]){ a[0]=a[i]; b=i; } } printf("%d %d",a[0],b); return0; }
- 設計思路:
- 第一步:構建函數基本框架。
- 第二步:定義變量n,i,b。對b賦0的初值。定義最大下標為9的整形數組。
- 第三步:輸入n,確定輸入數組的數據的個數。
- 第四步:將數據輸入數組。
- 第五步:將a[0]與數組中的其他數進行一一比較,將最大值移到a[0],並使用b記錄下標。
- 第六步:輸出a[0]和b。
- 流程圖:
-
- 遇到的問題:開始時遇到輸入的一組數中有兩個及以上最大值時,輸出了那個較大的下標。
-
- 解決方法:逐步調試,發現只要將a[0]<=a[i]改成a[0]<a[i]就行了。
-
#include<stdio.h> int main() { int
- 第一步:構建函數基本框架。
- 第二步:定義數組a[10],變量i,n,b,c,d,e。
- 第三步:將數據輸入數組,將a[0],a[n-1]分別賦值給b,c。
- 第三步:將最小值移動到b,並記錄下下標,將a[0]的值與最小值互換。
- 第四步:將最大值移動到c,並記錄下下標,在新順序裏,將a[n-1]的值與最大值互換。
- 第五步:輸出數組a[i].
- 流程圖:
- 遇到的問題:輸入例題,輸出的格式與例題的答案不對。
-
- 解決方法:將最小值與a[0]值的互換,放在找出最小值和下標之後。也就是a[d]=a[0];a[0]=b; 放在第二個for循環之後。
-
#include<stdio.h> int main() { int a[10],k,n,i,b,c; scanf("%d %d",&n,&k); for(i=0;i<n;i++){ scanf("%d",&a[i]); } for(i=1;i<=k;i++){ for(b=0;b<n-i;b++){ if(a[b]>a[b+1]){ c=a[b]; a[b]=a[b+1]; a[b+1]=c; } } } for(i=0;i<n-1;i++){ printf("%d ",a[i]); } if(i==n-1){ printf("%d",a[i]); } return 0; }
- 第一步:構建函數基本框架。
- 第二步:定義數組a[10],和變量k,n,i,b,c;
- 第三步:輸入n和k。
- 第四步:將數據存入數組a。
- 第五步:用起泡法兩兩比較互換,將原本外層循環的n改為k。
- 第六步:輸出按照格式輸出數組,數組最後一個數不要加空格。
- 流程圖:
- 遇到的問題:掃描的次數k不知道放到哪裏,多次調試之後,才知道k應該放在外層循環。
-
#include<stdio.h> int main() { int a[12],i,b=2; a[0]=a[1]=1; for(i=2;i<12;i++){ a[i]=a[i-1]+a[i-2]; } for(i=0;i<12;i++){ printf("%6d",a[i]); if(i==b){ b=b+3; printf("\n"); } } return 0; }
- 第一步:構建函數基本框架。
- 第二步:定義數組a[12]、i、b。並且b=2,a[0]=a[1]=1;
- 第三步:計算下一個數據a[i]=a[i-1]+a[i-2]。
- 第四步:順序輸出數組a。
- 流程圖:
- 遇到的錯誤:輸出的數據無法形成矩陣。
- 解決方法:輸出時加一個判斷當i=2、5、8、11……輸出\n符號。
-
git地址:https://git.coding.net/Myboss/Homework.git
- 個人總結(涉及的知識點):1:數組的定義:數組定義時必須是整數表達式,不能是變量。2:數組的下標是從零開始的。3:賦初值時需要對數據加大括號,不能只輸入一個數據就對整個數組賦初值。4.二維數組的定義第一個中括號是行數,第二個中括號是列數。5.當確定數據個數時,可以省略行或列。6.使用數據時不能超出數組的範圍。7.二維數組的輸入和輸出是使用雙層循環。8.對數組有選擇排序法,和冒泡排序法。
-
代碼行數 時間 博客字數 時間 涉及知識點 151 4h 300字左右 4h ———————— - 截圖:
第14、15周作業