浙大版《C语言程序设计(第4版)》题目集参考答案
本题要求实现一个计算m~n(m<n)之间所有整数的和的简单函数。
函数接口定义:
int sum( int m, int n );
其中m
和n
是用户传入的参数,保证有m<n。函数返回的是m~n之间所有整数的和。
裁判测试程序样例:
#include <stdio.h>
int sum(int m, int n);
int main()
{
int m, n;
scanf("%d %d", &m, &n);
printf("sum = %d\n", sum(m, n));
return 0;
}
/* 你的代码将被嵌在这里 */
输入样例:
-5 8
输出样例:
sum = 21
提交结果:
基本思路:
***函数递归:>函数自己调用自己***
1.创建变量接收整数的和
2.利用循环或递归依次加和m~n之间的所有整数
3.返回整数的和
代码实现:
1.for循环
int sum(int m, int n)
{
int sum = 0;//整数的和
for (int i = m; i <= n; i++)//m~n之间的所有整数
{
sum += i;//计算m~n之间所有整数的和
}
return sum;//返回m~n之间所有整数的和
}
2.while循环
int sum(int m, int n)
{
int sum = 0;//整数的和
int i = m;//整数初始化
while (i <= n)//m~n之间的所有整数
{
sum += i;//计算m~n之间所有整数的和
i++;//下一个整数
}
return sum;//返回m~n之间整数的和
}
3.do..while循环
int sum(int m, int n)
{
int sum = 0;//整数的和
int i = m;//整数初始化
do
{
sum += i;//计算m~n之间所有整数的和
i++;//下一个整数
} while (i <= n);//m~n之间的所有整数
return sum;//返回整数的和
}
4.函数递归
int sum(int m, int n)//也可以n越来越接近m,同理
{
if (m == n)//限制条件
{
return n;//返回最大值
}
else
{
return m + sum(m + 1, n);//每次递归,m越来越接近限制条件
}
}
欢迎提问和纠错,共同讨论一起进步!