實驗五(陣列與指標)

2022-06-01 15:18:06 字數 3120 閱讀 7634

part 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)

printf(

"%d

",a[i]);

printf("\n

");printf(

"輸入待查詢的資料項: ");

scanf("%d

", &key);

//呼叫函式binarysearch()在陣列a中查詢指定資料項item,並返回查詢結果給index

//補足**①

index=binarysearch(a,n,key);

if(index>=0

) printf(

"%d在陣列中,下標為%d\n

", key, index);

else

printf(

"%d不在陣列中\n

", key);

return0;

}//函式功能描述:

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

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

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

一定要注意到,形參是陣列,而實參是陣列名。所以呼叫的時候寫的是a,而不是a或者a[n]。

(2)用指標變數訪問。形參是指標變數,實參是陣列名。

//

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

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

#include const

int n=5

;int binarysearch(int *x, int n, int

item);

intmain() ;

inti,index, key;

printf(

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

for(i=0;i)

printf(

"%d

",a[i]);

printf("\n

");printf(

"輸入待查詢的資料項: ");

scanf("%d

", &key);

//呼叫函式binarysearch()在陣列a中查詢指定資料項item,並返回查詢結果

//補足**①

index=binarysearch(a,n,key);

if(index>=0

) printf(

"%d在陣列中,下標為%d\n

", key, index);

else

printf(

"%d不在陣列中\n

", key);

return0;

}//函式功能描述:

//使用二分查詢演算法在x指向的資料項開始的n個資料中,查詢item

//如果找到,返回其位置

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

形參是指標變數,實參仍為陣列名。item是需要尋找的值,*p表示,可是這裡函式中卻要用*(x+mid)

part 2:選擇法排序

注意字串的比較和賦值,不能用關係運算子和賦值運算子,要用字串處理函式。

//

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

#include #include

void selectsort(char str[20], int n ); //

函式宣告,形參str是二維陣列名

intmain() ;

inti;

printf(

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

for(i=0; i<5; i++)

printf(

"%s\n

", name[i]);

selectsort(name,

5); //

呼叫選擇法對name陣列中的字串排序

printf(

"按字典序輸出名單:\n");

for(i=0; i<5; i++)

printf(

"%s\n

", name[i]);

return0;

} //

函式定義

//函式功能描述:使用選擇法對二維陣列str中的n個字串按字典序排序

void selectsort(char str[20], int

n) }

}

要記住i其實實驗總結與體會很多已經寫到了**的後面的總結。那就來寫寫指標一章的總結感悟吧。

(1)關於指標的初始化,一定是要指明即賦值p的是指向誰的位址,若初始化是*p=b這樣的則不算意義上的初始化。及無效,程式發生錯誤。

(2)關於交換的問題。有兩種情況,一是交換指標所指向的數值且指標指向不改變;而是數值不改變,僅僅改變指標的指向,也能達到數值交換的目的。

指標作為函式引數的問題,如swag函式中因為牽涉到引數傳遞的問題,所以編寫swag時只能用改變指標指向的方法(原因我還沒搞懂,後面再補充吧)

(3)陣列的題外話,形參是陣列,實參是陣列名;形參是指標變數,實參是陣列名。

指標與陣列,指標陣列 陣列指標

int a 10 print n a p,a p a,a print n a 1 p,a 1 p a 1,a 1 a做乙個指標,步長為4,指向乙個元素,a做乙個指標,步長為40,指向乙個維陣列 int b 3 4 print n b p,b p,b p b,b,b print n b 1 p,b 1...

第五講 c c 陣列與指標

本文的編寫是為了在學習c 的時候加深自己的記憶,同時也為與我一般的初學者提供一些參考,此處特別感謝 1.陣列 陣列型別 陣列名 陣列長度 1 宣告陣列,陣列在宣告時必須定義長度以分配記憶體,如 int m array1 20 float m array2 20 char m array3 20 2 ...

指標陣列與陣列指標

1.指標陣列 指標陣列中每乙個元素都是乙個指標,也既是存放字串的首位址。所以指標陣列適合處理若干個長度不等的字串。定義的一般形式為 型別說明符 指標陣列名 陣列長度 例如 int p 3 宣告乙個陣列,指標陣列p,由3個int型別指標變數元素組成 從運算子的優先順序分析,由於 的優先順序大於 所以p...