最新国产AV资源网_亚洲熟女AV天堂五月天_中文字幕丶东京热_中文字幕乱码免费高清视频

Hi,您好,歡迎來到西安盛圖軟件科技有限公司!

C語言|判斷數(shù)組中是否包含某個元素

發(fā)布時間:2023-11-10 14:06:03

在實(shí)際開發(fā)中,經(jīng)常需要查詢數(shù)組中的元素。例如,學(xué)校為每位同學(xué)分配了一個唯一的編號,現(xiàn)在有一個數(shù)組,保存了實(shí)驗(yàn)班所有同學(xué)的編號信息,如果有家長想知道他的孩子是否進(jìn)入了實(shí)驗(yàn)班,只要提供孩子的編號就可以,如果編號和數(shù)組中的某個元素相等,就進(jìn)入了實(shí)驗(yàn)班,否則就沒進(jìn)入。



不幸的是,C語言標(biāo)準(zhǔn)庫沒有提供與數(shù)組查詢相關(guān)的函數(shù),所以我們只能自己編寫代碼。


一、對無序數(shù)組的查詢

所謂無序數(shù)組,就是數(shù)組元素的排列沒有規(guī)律。無序數(shù)組元素查詢的思路也很簡單,就是用循環(huán)遍歷數(shù)組中的每個元素,把要查詢的值挨個比較一遍。請看下面的代碼:

#include <stdio.h>
int main(){
   int nums[10] = {1, 10, 6, 296, 177, 23, 0, 100, 34, 999};
   int i, num, thi
sindex = -1;
 
   printf("Input an integer: ");
   scanf("%d", &num);
   for(i=0; i<10; i++){
       if(nums[i] == num){
           thisindex = i;
           break;
       }
   }
   if(thisindex < 0){
       printf("%d isn't  in the array.\n", num);
   }else{
       printf("%d is  in the array, it's index is %d.\n", num, thisindex);
   }

   return 0;
}

運(yùn)行結(jié)果:

Input an integer: 100↙
100 is  in the array, it's index is 7.

或者

Input an integer: 28↙
28 isn't  in the array.

這段代碼的作用是讓用戶輸入一個數(shù)字,判斷該數(shù)字是否在數(shù)組中,如果在,就打印出下標(biāo)。

第10~15行代碼是關(guān)鍵,它會遍歷數(shù)組中的每個元素,和用戶輸入的數(shù)字進(jìn)行比較,如果相等就獲取它的下標(biāo)并跳出循環(huán)。

注意:數(shù)組下標(biāo)的取值范圍是非負(fù)數(shù),當(dāng) thisindex >= 0 時,該數(shù)字在數(shù)組中,當(dāng) thisindex < 0 時,該數(shù)字不在數(shù)組中,所以在定義 thisindex 變量時,必須將其初始化為一個負(fù)數(shù)。

二、對有序數(shù)組的查詢

查詢無序數(shù)組需要遍歷數(shù)組中的所有元素,而查詢有序數(shù)組只需要遍歷其中一部分元素。例如有一個長度為 10 的整型數(shù)組,它所包含的元素按照從小到大的順序(升序)排列,假設(shè)比較到第 4 個元素時發(fā)現(xiàn)它的值大于輸入的數(shù)字,那么剩下的 5 個元素就沒必要再比較了,肯定也大于輸入的數(shù)字,這樣就減少了循環(huán)的次數(shù),提高了執(zhí)行效率。

請看下面的代碼:

#include <stdio.h>
int main(){
   int nums[10] = {0, 1, 6, 10, 23, 34, 100, 177, 296, 999};
   int i, num, thisindex = -1;
 
   printf("Input an integer: ");
   scanf("%d", &num);
   for(i=0; i<10; i++){
       if(nums[i] == num){
           thisindex = i;
           break;
       }else if(nums[i] > num){
           break;
       }
   }
   if(thisindex < 0){
       printf("%d isn't  in the array.\n", num);
   }else{
       printf("%d is  in the array, it's index is %d.\n", num, thisindex);
   }
 
   return 0;
}

與前面的代碼相比,這段代碼的改動很小,只增加了一個判斷語句,也就是 12~14 行。因?yàn)閿?shù)組元素是升序排列的,所以當(dāng) nums[i] > num 時,i 后邊的元素也都大于 num 了,num 肯定不在數(shù)組中了,就沒有必要再繼續(xù)比較了,終止循環(huán)即可。


上一篇:C語言|二維數(shù)組的定義、初始化、賦值
下一篇:超詳解答:C語言|字符數(shù)組和字符串

歡迎登錄盛圖科技

歡迎注冊盛圖科技

已有賬號,立即登錄