百科知识

高手帮忙看看这道C语言题目有一头母牛,它每年年初生一头小母牛每

2007-01-28 12:04:42l***
有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第n年的时候,共有多少头母牛? 输入数据由多个测试实例组成,每个测试实例占一行,包括一个整数n(0<n<55),n的含义如题目中描述。 n=0表示输入数据的结束,不做处理。 对于每个测试实例,输出在第n年的时候母牛的数量。 每个输出占一行。 Sample Input 2 4 5 0 Sample Output 2 4 6 #include <stdio.h> int main() { int n,s,i; while((scanf("%d",&n)!=EOF)&&(n!=0)) { s=n; for(i=1;i<=n-4;i++) { s=s+i; } printf("%d\n",s); } } 高手看看到底错在哪高手帮忙看看这道C语言题目有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第n年的时候,共有多少头母牛?输入?

最佳回答

  •   UC问的不无道理 以前有人问过类似问题 看样子我当时的理解就跟现在的情况不同:$ 现在的情况,从第一年开始,牛的数量组成数列a[n]: 1,2,3,4,6,9。。。(n=1,……54) 从a[4]开始有规律a[i]=a[i-1]+a[i-3] 不知道输入输出是否必须先输入到0后一次输出所有结果? 还是只要“每个测试实例占一行”,“每个输出占一行”就行了? 后一种比较简单,就先按后一种了。
       #include "stdio。
      h" void main() { int a[5],n; while((scanf("%d",&n)!=EOF)&&(n!=0)) { for(int i=1;i<=n;i++) { if(i<4) { a[4]=a[i]=i; } else { a[4]=a[1]+a[3]; a[1]=a[2]; a[2]=a[3]; a[3]=a[4]; } } printf("%d\n\n",a[4]); } } 输入输出的感觉大致是: 2 2 4 4 5 6 0 每一个测试实例和它对应的结果是一组,输入0结束。
    2007-01-30 16:40:49
  • 多给几个答案试试,可能 s=s+i 换成 s=s+1;
    2007-01-30 01:11:50
  • 你可以多解释一下吗? 1、第一年有几头牛啊?1头 还是2头?第一年母牛没有生吗? 2、小牛生下的那年算一年吗?例如:第一年出生的小牛,到地4年就可以生小牛,还是 过4年 到地五年才可以生小牛啊???
    2007-01-29 15:39:31
  • 很赞哦! (110)