xdm帮我看看哪里出错了
#include <stdio.h>int main()
{
int a,b,c,d,i,sum;
a=0;b=0;c=0;d=1;
for(i=1;i<55;i++)
{
d+=c;
a=d;
b=a;
c=b;
}
for(i=0;i<55;i++)
sum=a+b+c+d;
do
{
scanf("%d",&i);
if(i!=0)
printf("%d\n",sum);
}
while(i!=0);
} dd 请问你想输出的是什么?没有题目,单代码,很难帮你 有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第n年的时候,共有多少头母牛? 多谢了 本帖最后由 hrpzcf 于 2021-10-16 14:11 编辑
#include <stdio.h>
unsigned getnum(unsigned);
int main()
{
unsigned years;
while (1)
{
printf("输入年数:");
while (scanf("%u", &years) != 1 || years < 1)
{
printf("输入有误,重新输入!\n");
goto flush;
}
printf("第%u年牛总数:%u。\n", years, getnum(years));
flush:
// 清空缓冲区的剩余字符
while (getchar() != '\n')
;
}
}
unsigned getnum(unsigned x)
{
if (x <= 4)
/* 前4年都是每年增加一头
因最早第2年生的小牛要到第5年才开始生小牛,以此类推 */
return x;
else
/* 也就是当年牛总数是过去第1年总数加上过去第3年总数 */
return getnum(x - 1) + getnum(x - 3);
}
本帖最后由 傻眼貓咪 于 2021-10-16 14:04 编辑
这题就是斐波那契数列(Fibonacci Sequence):0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144 ...
但你的题目稍微改一点,比如:题目用牛替代,第4年新牛才开始孕出新小牛
以下为我的代码,共参考:#include <stdio.h>
int fibonacci(int n){ // 定义函数:斐波那契数列
if(!n) return n; // 当参数是 0,则返回 0
else if(n == 1) return 1; // 当参数是 1,则返回 1
return fibonacci(n-1) + fibonacci(n-2); // 否则递归函数(参数-1 和 参数-2 作为新参数)
}
int main(){
do
{
int year;
scanf("%d", &year); // 输入年
if(year == 0) break; // 当年份为 0,则退出循环
printf("%d\n", fibonacci(year-1)); // 调用函数:打印该年份的母牛数量
}
while(1);
return 0;
}2
2
5
8
15
987
0
年 2 5 15
母牛数量 2 8 987
页:
[1]