1. 程式人生 > >實驗四實驗報告

實驗四實驗報告

std 兩個 png int font src 初始 一次 數組a

實驗結論

Part 1

數組將類型相同的一組數據在內存中連續存放,由實驗可看出數組中元素的內存地址是連續的,不同類型數據計算機為其分配的內存空間是不同的。

Part 2

定義一維數組a,須指明它包含的元素個數和元素類型,通過數組名和下標的形式引入數組元素,數組下標從0開始,當對所有元素進行初始化時可以省略數組大小,當只初始化一部分元素時剩余沒有被初始化的元素值,系統自動設為0。

Part 3

函數名作為參數時,實參和形參的書寫形式
函數聲明和函數定義中,函數名init後面括號裏出現的是形式參數,數組名後面要加[ ]。即:void init(int a[], int n, int value);

函數調用中,函數名init後面括號裏出現的是實際參數,直接寫數組名。即:init(b, N, -1);

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(int
a[],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的程序稍作改進即可,沒有遇到什麽問題

實驗總結與體會

對函數定義調用有了一定的理解,稍有掌握,但綜合應用欠缺,具體編程問題很多,要勤加聯系一一克服。

實驗四實驗報告