實驗5 陣列和函式

2022-07-10 20:36:09 字數 3630 閱讀 4549

實驗任務1

#include const

int n=3

;int

main() ;

inti;

printf(

"通過陣列名及下標直接訪問陣列元素:\n");

for(i=0; i)

printf(

"%d: %d\n

", &a[i], a[i]);

printf(

"通過位址間接訪問陣列元素:\n");

for(i=0; i)

printf(

"%d: %d\n

", a+i, *(a+i));

return0;

}

執行結果

實驗結論

1.陣列元素在記憶體中是連續存放的

2.a+i和&a[i]都表示陣列元素a[i]的位址是正確的

*(a+i)和a[i]都表示陣列元素a[i] 是等價的

實驗任務2

#include const int line = 2;

const int col = 3;

int main() ;

int i,j;

printf("通過陣列名及下標直接訪問陣列元素:\n");

for(i=0; i執行結果

實驗結論

1.c語言中,二維陣列在記憶體中是按行存放的

2.以下方式是等價的

a[i]+j和&a[i][j]都表示二維陣列元素a[i][j]的位址

*(a[i]+j)和a[i][j]都表示二維陣列元素a[i][j]

3.對於二維陣列a[2][3],以下方式是等價的

a和&a[0]都表示二維陣列第0行的位址

a+1和&a[1]都表示二維陣列第1行的位址

實驗任務3

//使用指標變數間接訪問一維陣列

#include #include

const

int n=3

;int

main()

執行結果

實驗結論

1. 程式中,指標變數p在使用時並不指向確定的位址

2. 程式原始碼中,line12-line13執行完後,指標變數p指向a[2],line16-line17執行完後,指標變數p

指向a[2]

3. 程式原始碼中,line22-line27執行完後,指標變數p指向a[2],line26-line27執行完後,指標變數p

指向a[2]

4.line26-line27和line16-17二者都運用指標,更為靈活

實驗任務4

// 使用指標變數間接訪問二維陣列 

#include int main() ;

int i,j;

int *p; // p是指標變數,存放int型資料的位址

int (*q)[3]; // q是指標變數,存放包含有3個元素的一維陣列的位址

// 通過指標變數p間接訪問,輸出二維陣列a的元素值

for(p=a[0]; p執行結果

實驗結論

1.可以

2.*q+j和*(*q+j)分別表示&q[i][j]和q[i][j]

3.指向陣列元素的指標變數p可以看作把2行3列的二維陣列看作6個一維陣列,指向一維陣列的指標變數q則要分行與列依次指向

4.全對

實驗任務5.1

// 練習:使用二分查詢,在一組有序元素中查詢資料項

// 形參是陣列,實參是陣列名

#include

const int n=5;

int binarysearch(int x, int n, int item); // 函式宣告

int main() ;

int i,index, key;

printf("陣列a中的資料:\n");

for(i=0;i=0)

printf("%d在陣列中,下標為%d\n", key, index);

else

printf("%d不在陣列中\n", key);

return 0;

}//函式功能描述:

//使用二分查詢演算法在陣列x中查詢特定值item,陣列x大小為n

// 如果找到,返回其下標

// 如果沒找到,返回-1

int binarysearch(int x, int n, int item)

return -1;

}執行結果

5.2// 練習:使用二分查詢,在一組有序元素中查詢資料項

// 形參是指標變數,實參是陣列名

#include const int n=5;

int binarysearch(int *x, int n, int item); // 函式宣告

int main() ;

int i,index, key;

printf("陣列a中的資料:\n");

for(i=0;i=0)

printf("%d在陣列中,下標為%d\n", key, index);

else

printf("%d不在陣列中\n", key);

return 0;

}//函式功能描述:

//使用二分查詢演算法在從x中查詢特定值item,陣列x大小為n

// 如果找到,返回其下標

// 如果沒找到,返回-1

int binarysearch(int *x, int n, int item)

return -1;

}

執行結果

實驗任務6

// 練習:使用選擇法對字串按字典序排序

#include const int n = 5;

void selectsort(char str[20], int n ); // 函式宣告,形參str是二維陣列名

int main() ;

int i;

printf("輸出初始名單:\n");

for(i=0; istr[j][m])

if(str[k][m]執行結果

實驗總結

最後乙個實驗專案很有難度參考幾位同學的設計才弄出來,下去還是很有必要加強陣列和函式這塊

實驗5 函式與陣列

實驗1 include const int n 3 int main inti printf 通過陣列名及下標直接訪問陣列元素 n for i 0 i printf d d n a i a i printf 通過位址間接訪問陣列元素 n 1.是的 2.等價 實驗2 include const int...

實驗5 陣列和指標

1.二分查詢 實現方式1 形參是陣列,實參是陣列名,使用陣列元素直接訪問方式實現。include const int n 5 int binarysearch int x,int n,int item intmain inti,index,key printf 陣列a中的資料 n for i 0 i...

實驗5 陣列和指標

實現方式1 形參是陣列,實參是陣列名,使用陣列元素直接訪問方式實現 程式原始碼檔案ex1 1.cpp 以下是補全程式ex1 1.cpp之後的程式原始碼 練習 使用二分查詢,在一組有序元素中查詢資料項 形參是陣列,實參是陣列名 include const int n 5 int binarysearc...