解题思路:由题目给出的样例输入和输出结果可知,第二年仅有两只母牛,即原始母牛第二年年初才生第一只小母牛(不知道为什么,但既然题目这么说就强行说它是),鉴于第一年没有生产不利于结构计算,所以可设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; }
0.0分
2 人评分
简单的a+b (C语言代码)浏览:783 |
A+B for Input-Output Practice (VII) (C++代码)浏览:643 |
C语言程序设计教程(第三版)课后习题6.7 (C语言代码)浏览:549 |
C语言训练-大、小写问题 (C语言代码)浏览:649 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:1264 |
C语言程序设计教程(第三版)课后习题5.6 (C语言代码)浏览:580 |
程序员的表白 (C语言代码)浏览:678 |
大神老白 (C语言代码)浏览:637 |
整除问题 (C语言代码)浏览:594 |
C语言程序设计教程(第三版)课后习题7.3 (C语言代码)浏览:569 |