解题思路:思路在代码里
    
注意事项: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分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论