解题思路:思路在代码里
注意事项:1、虽然题目要求最多只能输入十组数据,但其实将 for(i=1;i<=10;i++) 改为 while(1) [ps.当while()的括号内的值不为零,该循环就会运行], 进行提交,只要不该改变 if(n==0) break; 即其循环结束条件不改变,提交后依旧正确。
2、 如果觉得输出部分不好理解,可以自行定义一个变量来保存调用函数后的值,例如a=fun(n);然后把输出那一行改为:printf("%d\n",a); 即可。
参考代码:
#include
int fun(int n)
{
int average,remainder,total;//remainder为余数,
average=n/3;//能换的汽水瓶个数
remainder=n%3;//换了汽水瓶后剩余的空瓶子个数
total=average+remainder;//total为总瓶子的个数(包括空瓶和有汽水的瓶子)
if(average==0&&total==1) return 0;//average==0保证了n<3,也就是总的瓶子数少于三个。
else if(average==0&&total==2) return 1;//average==0保证了n<3 ,也就是总的瓶子数少于三个。
else return fun(total)+average; //将当前的总瓶子个数作为新的参数n,进行递归。
}
int main()
{
int n,i;
for(i=1;i<=10;i++) //最多输入十组数据
{
scanf("%d",&n);//输入
if(n==0) break; //判断是否满足题设的结束条件
printf("%d\n",fun(n));//处理及输出
}
return 0;
}
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复