查看原文
其他

C语言每日一练(004)

题目

寻找数组元素第一次出现的位置

假如有如下一个数组:

  1. int a[]={5,2,0,13,14,999,666, 55, 66, 88, 1, 5, 9};

该怎么从这个数组中查找 66第一次出现的位置(数组下标)呢?

代码

  1. /*******************************************************************************************************

  2. ** 题 目: 寻找数组元素第一次出现的位置

  3. ********************************************************************************************************/

  4. #include <stdio.h>

  5. #include <conio.h>


  6. #define Method 1 // 非0:方法一 0:方法二



  7. #if Method

  8. // 方法一:函数返回找到元素的下标(使用指针的方式)

  9. int search(int *arr,// 已知数表的首元指针

  10. int n, // 数表中元素个数

  11. int key) // 要寻找的值

  12. {

  13. int *p;

  14. for (p = arr; p < arr+n; p++)

  15. {

  16. if (*p == key)

  17. {

  18. return p - arr; // 返回找到元素的下标

  19. }

  20. }

  21. return -1; // 未查找到key

  22. }


  23. #else

  24. // 方法二:函数返回找到元素的下标(使用数组的方式)

  25. int search(int *arr,// 已知数表的首元指针

  26. int n, // 数表中元素个数

  27. int key) // 要寻找的值

  28. {

  29. int i;

  30. for (i = 0; i < n; i++)

  31. {

  32. if (arr[i] == key)

  33. {

  34. return i; // 返回找到元素的下标

  35. }

  36. }

  37. return -1; // 未查找到key

  38. }

  39. #endif


  40. // 定义一个全局数组

  41. int a[]={5,2,0,13,14,999,666, 55, 66, 88, 1, 5, 9};


  42. // 主函数

  43. int main(void)

  44. {

  45. int i, key;

  46. int *p;


  47. printf("The elements of array a is:\n");

  48. for (i = 0; i < sizeof(a)/sizeof(a[0]); i++)

  49. {

  50. printf(" %d",a[i]);

  51. }

  52. puts("\nPlease input the key number you want to search:");

  53. scanf("%d", &key);

  54. i = search(a,sizeof(a)/sizeof(a[0]),key);

  55. printf("\nThe index of the key number %d in the array is: %d.", key, i);

  56. getch();


  57. return 0;

  58. }

小知识:平时也有看到如下写法

search(int arr[], int n, int key)


int arr[] 最终都会转换为 int *arr 这样的指针。

运行结果

转发、点在看就是对小编最大的支持!


猜你喜欢

C语言每日一练(001)

C语言每日一练(002)

C语言每日一练(003)



    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存