1. 程式人生 > >生成一個一維陣列,有10個元素,都用隨機數填充,用指標輪詢的辦法實現函式查詢一個數是否存在。

生成一個一維陣列,有10個元素,都用隨機數填充,用指標輪詢的辦法實現函式查詢一個數是否存在。

題目:生成一個一維陣列,有10個元素,都用隨機數填充,用指標輪詢的辦法實現函式查詢一個數是否存在,具體實現程式碼如下:

  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #include <time.h>
  4. int find(int * pInput, int nLen, int nKey, int * pOut)  
  5. {  
  6.     if (!pInput)  
  7.     {  
  8.         return 0;  
  9.     }  
  10.     if (!pOut)  
  11.     {  
  12.         return 0;  
  13.     }  
  14.     int * pCurPos = pInput;  
  15.     int * pEndPos = pInput + nLen;  
  16.     *pOut = 0;  
  17.     while (pCurPos < pEndPos)  
  18.     {  
  19.         if (*pCurPos == nKey)  
  20.         {  
  21.             *pOut = 1;  
  22.             break;  
  23.         }  
  24.         pCurPos++;    
  25.     }  
  26.     return 1;  
  27. }  
  28. int main()  
  29. {  
  30.     int
     * p = (int *)malloc(sizeof(int)* 10);  
  31.     if (!p)  
  32.     {  
  33.         printf("記憶體分配失敗.\n");  
  34.         return 0;  
  35.     }  
  36.     int i = 0;  
  37.     srand(time(NULL));  
  38.     for (i = 0; i < 10; i++)  
  39.     {  
  40.         p[i] = rand() % 10;  
  41.     }  
  42.     printf("陣列元素:\n");  
  43.     for (i = 0; i < 10; i++)  
  44.     {  
  45.         printf("%d  ", p[i]);  
  46.     }  
  47.     printf("\n");  
  48.     int nTemp = 0;  
  49.     int nFind = 0;  
  50.     printf("請輸人要查詢的資料:\n");  
  51.     scanf("%d", &nTemp);  
  52.     if (find(p, 10, nTemp, &nFind) == 0)  
  53.     {  
  54.         printf("查詢失敗.\n");  
  55.     }  
  56.     else
  57.     {  
  58.         if (nFind == 0)  
  59.         {  
  60.             printf("未找到元素:%d\n", nTemp);  
  61.         }  
  62.         else
  63.         {  
  64.             printf("已經找到元素:%d\n", nTemp);  
  65.         }  
  66.     }  
  67.     if (p)  
  68.     {  
  69.         free(p);  
  70.     }  
  71.     system("pause");  
  72.     return 0;  
  73. }  
執行效果如圖1所示:

圖1 執行效果