解题思路:由题目给出的样例输入和输出结果可知,第二年仅有两只母牛,即原始母牛第二年年初才生第一只小母牛(不知道为什么,但既然题目这么说就强行说它是),鉴于第一年没有生产不利于结构计算,所以可设sum=0(无中生有),因为题目中原始母牛只有一个,所有设开始生产量plus=1可以理解plus为今年可以生产的母牛的数量),再用一个for循环满足i(现在年数)<n(输入年数)情况下sum+=plus,因为题目定义中新生小母牛要四年后才可以生产,那么可以设置一个数组f[]将今年新生的小母牛数量存进去,四年后再拿出来,可以设置一个指针*p指向数组p,在循环中等到i>4时,才开始plus+=*p;*p++

即解题关键在于今年新增的可以生产的母牛数量=4年前新生小母牛数,今年可以生产的总的母牛数=上一年可以生产的母牛数+今年新增的可以生产的母牛数。



注意事项:实际上第一年母牛并没有生产,所以新增小母牛是从第二年才开始有的,而我设置的数组是从i=1开始的,所以我将*p指向f[2],若设置数组从i=0开始,也可将条件改为p=&f[1],i>3。

参考代码

#include <stdio.h>
int main()
{
  int n,i,f[100],*p,plus,sum;
  while(scanf("%d",&n),n)
 {
   p=&f[2];
   plus=1;sum=0;
   for(i=1;i<=n;i++)
   {
    if(i>4)
     {
      plus=plus+*p;
      *p++;
     }
      sum+=plus;
     f[i]=plus;
   }
 printf("%d\n",sum);
 }
return 0;
}


点赞(4)
 

0.0分

2 人评分

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

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

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

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

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

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

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

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

评论列表 共有 0 条评论

暂无评论