分享

C语言每日一练(002)

 嵌入式大杂烩 2021-08-20

题目

求数组元素之和

代码

首先,需要构造一个求和函数。这里求和函数有两种构造方法,一种是迭代法,另一个种是递归法。

迭代法求和函数

  1. int sum(int a[], int n)

  2. {

  3. int i = 0;

  4. int arr_sum = 0;

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

  6. {

  7. arr_sum += a[i];

  8. }

  9. return arr_sum;

  10. }

递归法求和函数

  1. int sum(int a[],int n)

  2. {

  3. if (n <= 0)

  4. {

  5. return 0;

  6. }

  7. return a[n-1] + sum(a, n-1);

  8. }

完整代码

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

  2. ** 题 目: 求数组元素之和

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

  4. #include <stdio.h>

  5. #include <stdlib.h>

  6. #include <conio.h> // getch函数在这个头文件中声明

  7. #define Method 0 // 1:迭代法 0:递归法

  8. int a[] = {1, 2, 3, 4, 5};

  9. #if Method

  10. // 方法一:迭代法

  11. int sum(int a[], int n)

  12. {

  13. int i = 0;

  14. int arr_sum = 0;

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

  16. {

  17. arr_sum += a[i];

  18. }

  19. return arr_sum;

  20. }

  21. #else

  22. // 方法二:递归法

  23. int sum(int a[],int n)

  24. {

  25. if (n <= 0)

  26. {

  27. return 0;

  28. }

  29. return a[n-1] + sum(a, n-1);

  30. }

  31. #endif

  32. // 主函数

  33. int main(void)

  34. {

  35. int i;

  36. system("cls"); // cmd窗口清屏

  37. printf("\n The arry is:\n");

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

  39. {

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

  41. }

  42. printf("\n SUM of the arry is: %d\n", sum(a,sizeof(a)/sizeof(a[0])));

  43. printf("\n Press any key to quit...\n");

  44. getch(); // 从控制台无回显地取一个字符

  45. }

小知识:getch是一个计算机函数,在windows平台下从控制台无回显地取一个字符,在linux下是有回显的。用法是int getch(void)。在WINDOWS/MS-DOS中,也可以利用getch()函数让程序调试运行结束后等待编程者按下键盘才返回编辑界面,用法:包含conio.h头文件后,在主函数结尾,return 0;之前加上getch();即可

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多