- 相關(guān)推薦
C語言數(shù)組元素的查詢
在實(shí)際開發(fā)中,經(jīng)常需要查詢數(shù)組中的元素。下面是小編為大家整理C語言數(shù)組元素的查詢的,歡迎參考~
在實(shí)際開發(fā)中,經(jīng)常需要查詢數(shù)組中的元素。例如,學(xué)校為每位同學(xué)分配了一個(gè)唯一的編號(hào),現(xiàn)在有一個(gè)數(shù)組,保存了實(shí)驗(yàn)班所有同學(xué)的編號(hào)信息,如果有家長(zhǎng)想知道他的孩子是否進(jìn)入了實(shí)驗(yàn)班,只要提供孩子的編號(hào)就可以,如果編號(hào)和數(shù)組中的某個(gè)元素相等,就進(jìn)入了實(shí)驗(yàn)班,否則就沒進(jìn)入。
不幸的是,C語言標(biāo)準(zhǔn)庫沒有提供與數(shù)組查詢相關(guān)的函數(shù),所以我們只能自己編寫代碼。
對(duì)無序數(shù)組的查詢
所謂無序數(shù)組,就是數(shù)組元素的排列沒有規(guī)律。無序數(shù)組元素查詢的思路也很簡(jiǎn)單,就是用循環(huán)遍歷數(shù)組中的每個(gè)元素,把要查詢的值挨個(gè)比較一遍。請(qǐng)看下面的代碼:
#include
#include
int main(){
int nums[10] = {1, 10, 6, 296, 177, 23, 0, 100, 34, 999};
int i, num, subscript = -1;
printf("Please input an integer: ");
scanf("%d", &num);
for(i=0; i<10; i++){
if(nums[i] == num){
subscript = i;
break;
}
}
if(subscript<0){
printf("%d isn't in the array. ", num);
}else{
printf("%d is in the array, and it's subscript is %d. ", num, subscript);
}
system("pause");
return 0;
}
運(yùn)行結(jié)果:
Please input an integer: 100
100 is in the array, and it's subscript is 7.
或者
Please input an integer: 28
28 isn't in the array.
這段代碼的作用是讓用戶輸入一個(gè)數(shù)字,判斷該數(shù)字是否在數(shù)組中,如果在,就打印出下標(biāo)。
第10~15行代碼是關(guān)鍵,它會(huì)遍歷數(shù)組中的每個(gè)元素,和用戶輸入的數(shù)字進(jìn)行比較,如果相等就獲取它的下標(biāo)并跳出循環(huán)。
注意:數(shù)組下標(biāo)的取值范圍是非負(fù)數(shù),當(dāng) subscript >= 0 時(shí),該數(shù)字在數(shù)組中,當(dāng) subscript < 0 時(shí),該數(shù)字不在數(shù)組中,所以在定義 subscript 變量時(shí),必須將其初始化為一個(gè)負(fù)數(shù)。
對(duì)有序數(shù)組的查詢
查詢無序數(shù)組需要遍歷數(shù)組中的所有元素,而查詢有序數(shù)組只需要遍歷其中一部分元素。例如有一個(gè)長(zhǎng)度為10的整型數(shù)組,它所包含的元素按照從小到大的順序(升序)排列,假設(shè)比較到第4個(gè)元素時(shí)發(fā)現(xiàn)它的值大于輸入的數(shù)字,那么剩下的5個(gè)元素就沒必要再比較了,肯定也大于輸入的數(shù)字,這樣就減少了循環(huán)的次數(shù),提高了執(zhí)行效率。
請(qǐng)看下面的代碼:
#include
#include
int main(){
int nums[10] = {0, 1, 6, 10, 23, 34, 100, 177, 296, 999};
int i, num, subscript = -1;
printf("Please input an integer: ");
scanf("%d", &num);
for(i=0; i<10; i++){
if(nums[i] >= num){
if(nums[i] == num){
subscript = i;
}
break;
}
}
if(subscript<0){
printf("%d isn't in the array. ", num);
}else{
printf("%d is in the array, and it's subscript is %d. ", num, subscript);
}
system("pause");
return 0;
}
注意第11行代碼,只有當(dāng) nums[i] >= num 成立時(shí)才進(jìn)行處理,否則繼續(xù)循環(huán)。nums[i] >= num 有兩重含義:
如果 nums[i] == num,則num 在數(shù)組中,那么就需要給 subscript 賦值,記錄當(dāng)前元素的下標(biāo);
如果 nums[i] > num,則nums 不在數(shù)組中。
【C語言數(shù)組元素的查詢】相關(guān)文章:
什么是C語言數(shù)組10-03
C語言數(shù)組教程08-31
C語言數(shù)組方法08-06
C語言數(shù)組實(shí)例解析10-21
C語言數(shù)組的定義及引用08-05
C語言數(shù)組是什么08-25
C語言輸出旋轉(zhuǎn)后數(shù)組中的最小數(shù)元素的算法原理與實(shí)例10-23
如何使用C語言數(shù)組指針09-14