C语言每日一练(002)

题目

求数组元素之和

代码

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

迭代法求和函数

  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)

相关推荐

  • PHP递归与迭代的区别与联系 筋斗云网络

    递归自身调用自身,每一次调用把问题简化,直到问题解决. 迭代:就是指在某个范围内,反复执行相同工作. 递归: 5只猴子,每只猴子,摘1颗桃,完成1步工作 迭代: 1只猴子,这只儿子,摘5颗桃,完成5步 ...

  • 递归和非递归实现规律函数

    递归和非递归实现规律函数

  • 时间复杂度分析,这个很多人都不知道,更别谈会了!

    时间复杂度 请原谅我也是一个标题党! 关于时间复杂度和空间复杂度分析的文章其实不少,但大多数都充斥着复杂的数学计算,让很多读者感到困惑,我就不跟大家扯皮了,关于什么是渐近分析.最坏时间复杂度.平均时间 ...

  • 初学C语言-循环

    for(;;;) 一切能用while循环的语句都可以使用for循环实现 while() 循环   不满足括号内容时结束循环; 先简单写一个while循环 吃小笼包子,吃到第三个包子吃出一条虫 #inc ...

  • 解剖几个有点难度的C笔试题

    总结了几个比较经典的笔试题目,这些题目是在面试中遇到的,有难度,但是不是那种特别难的,比较有代表性,如果正在找工作的话,可以看看,丰富一下自己的知识库. 1.题目一 求下面代码输出: #include ...

  • C语言每日一练(010)

    题目 统计文件的字符数 代码 /************************************************************************************ ...

  • 公基每日一练

    作家路遥在<平凡的世界>中描述到:"田福堂太痛苦了!当年搞合作化时,他曾怀着多么热烈的感情把这些左邻右舍拢合在一起,做梦也想不到二十多年后的今天,大家又散伙了."田福堂 ...

  • 公共基础知识每日一练

    下列属于名医扁鹊的成就的是( ) A.麻沸散 B.五禽戏 C.四诊法 D.人工呼吸 答案:C.解析:AB均为华佗成就,C项为扁鹊成就,D项为张仲景成就.故本题答案为C. 文/福建事业单位招聘

  • 象棋 每日一练 四步杀143

    2道题10分钟优秀,20分钟合格.棋局针对初级象棋爱好者,天天象棋业5以下水平可以练练. 上期答案,答案仅供参考,部分棋局并非唯一解. 1. 马五进七 将5平6 2. 后马退五 将6平5 3. 马五进 ...

  • ​行测每日一练专项练习

    当下的中国,缺少那种让人独处而不寂寞,与另一个自己--自己的灵魂对话的空间.生活总是让人疲倦,我们都需要有短暂的"关机"时间,让自己只与自己相处,阅读.写作.发呆.狂想,把灵魂解放 ...

  • 润德教育2021.5.11临床执业/助理每日一练—生化

    您的姓名:* 类别* 执业 助理 1.直接参与葡萄糖合成糖原的核苷酸是* A.UTP B.TTP C.GTP D.ADP E.CTP 2.磷酸戊糖途径的主要产物之一是* A.NADPH B.FMN C ...

  • (每日一练)2021年税务人员执法资格统一考试训练题

    关于我们 "互帮互助,开拓税官视野","互添互补,共建税务家园"是我们一贯追求的理念.多年来,我们一直努力为基层一线税官提供快捷.权威.实用.互动的税务专业化服 ...

  • 行测每日一练

    张先生希望能按约定时间到达车站.上午8点出家门,以每分钟80米的速度步行去车站,走了一半的路程时,他突然发现忘了东西,立即转身回家去取,并把速度提高到原来的1.5倍.他取了东西后,仍以1.5倍的速度赶 ...

  • 公共基础知识每日一练专项练习

    小何与男友小国到外地旅游,期间二人到玉器首饰店准备购买玉佩作为信物,小何在挑选.试戴玉佩时,不小心将玉佩摔碎,于是玉器店的老板肖某要求二人赔偿.根据相关法律,下列说法正确的是( ). A. 应由小何承 ...