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:選擇法排序
注意字串的比較和賦值,不能用關係運算子和賦值運算子,要用字串處理函式。
//要記住i其實實驗總結與體會很多已經寫到了**的後面的總結。那就來寫寫指標一章的總結感悟吧。練習:使用選擇法對字串按字典序排序
#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) }
}
(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...