實驗四實驗報告
阿新 • • 發佈:2019-04-26
std 兩個 png int font src 初始 一次 數組a 函數調用中,函數名init後面括號裏出現的是實際參數,直接寫數組名。即:init(b, N, -1);
實驗結論
Part 1
數組將類型相同的一組數據在內存中連續存放,由實驗可看出數組中元素的內存地址是連續的,不同類型數據計算機為其分配的內存空間是不同的。
Part 2
定義一維數組a,須指明它包含的元素個數和元素類型,通過數組名和下標的形式引入數組元素,數組下標從0開始,當對所有元素進行初始化時可以省略數組大小,當只初始化一部分元素時剩余沒有被初始化的元素值,系統自動設為0。
Part 3
函數名作為參數時,實參和形參的書寫形式
函數聲明和函數定義中,函數名init後面括號裏出現的是形式參數,數組名後面要加[ ]。即:void init(int a[], int n, int value);
Part 4
冒泡法對一組數據由小到大排序:把一組數據中相鄰的兩個數進行比較,較大的數放到後面。這樣,經過一輪以後,最大的數就放到了最後。把剩余的數,再進行兩兩比較,經過第2輪後,第2大的數就放到了倒數第二的位置。接下來,做類似操作。若是由大到小排序類似,反過來就可以了。
用冒泡法對n個數小→大排序,
共需掃描(n-1)遍,第i遍掃描時需要比較(n-i)次
但在程序中略有不同:for(j=0; j<n-1-i; j++) 這是由於數組下標從0開始造成的
Part 5
練習1:補全程序,查找一組整型數據的最大值。
#include <stdio.h> int findMax(int a[], int n); const int N=5; int main() { int a[N]; int max, i; printf("輸入%d個整數: \n", N); for(i=0;i<N;i++) scanf("%d",&a[i]); max=findMax(a,N); printf("數組a中最大元素值為: %d\n\n", max); return 0; } int findMax(inta[],int n){ int i,j,t,max; for(i=0;i<n-1;i++){ if(a[i]>a[i+1]){ t=a[i+1]; a[i+1]=a[i]; max=a[i+1]; } } return max; }
第一次寫的時候子函數沒有寫返回,輸出是0,後來對比發現錯誤
練習2:補全程序,使用冒泡法對字符數組由大到小排序。
#include <stdio.h> const int N=4; void output(char x[], int n); void sort(char x[], int n); int main() { char string[N] = {‘2‘,‘0‘,‘1‘,‘9‘}; int i; printf("排序前: \n"); output(string, N); sort(string,N); printf("\n排序後: \n"); output(string, N); printf("\n"); return 0; } void output(char x[], int n) { int i; for(i=0; i<N; i++) printf("%c", x[i]); } void sort(char x[],int n){ char i,j,t; for(i=0;i<n-1;i++){ for(j=0;j<n-1-i;j++){ if(x[j]<x[j+1]){ t=x[j]; x[j]=x[j+1]; x[j+1]=t; } } } }
由大到小排序只需將Part4的程序稍作改進即可,沒有遇到什麽問題
實驗總結與體會
對函數定義調用有了一定的理解,稍有掌握,但綜合應用欠缺,具體編程問題很多,要勤加聯系一一克服。
實驗四實驗報告