查看原文
其他

C语言每日一练(005)


题目

在已知两个从小到大有序的数表中寻找都出现的第一个元素

代码

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

  2. ** 题 目: 在已知两个从小到大有序的数表中寻找都出现的第一个元素

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

  4. #include <stdio.h>

  5. #include <conio.h>


  6. int *search(int *pa,int *pb,int an,int bn)

  7. {

  8. int *ca,*cb;


  9. /* 为ca、cb设定初值 */

  10. ca = pa;

  11. cb = pb;


  12. while ((ca<pa+an) && (cb<pb+bn)) /*两个数表都未考察完*/

  13. {

  14. /* 在两个数表中找下一个相等的元素 */

  15. if(*ca<*cb) /*数表1的当前元素<数表2的当前元素*/

  16. {

  17. ca++; /*调整数表1的当前元素指针*/

  18. }

  19. else if(*ca>*cb)/*数表1的当前元素>数表2的当前元素*/

  20. {

  21. cb++; /*调整数表2的当前元素指针*/

  22. }

  23. else /*数表1的当前元素==数表2的当前元素*/

  24. {

  25. return ca; /*返回在这两个数表中找到相等元素*/

  26. }

  27. }

  28. return NULL;

  29. }


  30. // 主函数

  31. int main(void)

  32. {

  33. int *vp,i;

  34. int a[ ]={1,3,5,7,9,13,15,27,29,37};

  35. int b[ ]={2,4,6,8,10,13,14,27,29,37};

  36. puts("The elements of array a is:");

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

  38. {

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

  40. }

  41. puts("\nThe elements of array b is:");

  42. for (i = 0; i < sizeof(b)/sizeof(b[0]); i++)

  43. {

  44. printf(" %d",b[i]);

  45. }

  46. vp = search(a, b, sizeof(a)/sizeof(a[0]), sizeof(b)/sizeof(b[0]));

  47. if(vp)

  48. {

  49. printf("\nThe first same number in both arrays is %d\n",*vp);

  50. }

  51. else

  52. {

  53. printf("Not found!\n");

  54. }

  55. puts("\n Press any key to quit...\n");

  56. getch();

  57. }

运行结果

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


猜你喜欢

C语言每日一练(001)

C语言每日一练(002)

C语言每日一练(003)

C语言每日一练(004)



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

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