1. 求c语言大神:现有一头牛,第四年开始每年生一头牛,小牛也是按这个规律再生下一代小牛……输入年数,输
这个简单:我的建议是如果你真的希望自己能学会这种题目的话,第一步肯定是要先推导出前几年的牛的数量观察数据,然后根据数据进行思考:每个小牛到第四年的时候就可以像我刚开那的那个牛一样生育了。所以,你的第一个牛,就是一个榜样,每个过了四年的牛都会成为这样的一只牛的,如果觉得我回答的抽象了建议你搜索HDU2018有题解的可以参考下。代码的话我也不发了,简单的递推题目。
2. C语言的一个基本程序,寻求帮助!
我估计每四年生一个小牛的意思是到第五年有产小牛,这样程序就对了
int i; *其实这句话可以没有
int T(i) *在主函数外声明一个函数T(i),返回值是整型
{ *括号里是函数内容
if (i<4) *如果i小于4(i应该是年数)
return 1; *T(i)=1,很好理解,4年内母牛不会生小牛
return (T(i-1)+T(i-4)); *否则将T(i)这个函数改变自变量递归
}
int main() *这里是主函数
{
int i; *声明变量i(c语言用变量之前要声明,很麻烦)
scanf("%d",&i); *输入一个值赋给i
printf("%d\n",T(i));*运用子函数T(i)解出值并输出
}
如果你不理解递归,你可以随便给i一个大于4的值用笔算一下
**c语言允许在主函数外定义函数,主函数main前面的int可写可不写,因为函数前如果不定义返回值类型的话将默认为整型int,我调试后发现那个子程序的算法是错的,要用别的算法。**如果你还有什么其他的问题可以用网络hi和我讨论
另外这个程序没有#include<stdio.h>,也就是没有调用输入和输出的头文件
我昨天晚上就回答你的补充问题了你有没有好好看
3. C语言母牛生小牛(时间超了)
用递归效率低是正常的,毕竟频繁的函数调用是要占据大量的时间空间。
如果该题不是一定要用递归算法的话,我给你个新的算法(肯定不会超时),但是代码我就不写了,因为很简单。
初始化 int cow_age[4] = {1, 0, 0, 0};分别代表出生1年、出生2年、出生3年、出生4年以后的母牛数目,最初有个出生1年的母牛(题目给出)。
然后设置循环变量i,i每自加一次就代表过一年,循环内容是
cow_age[3]+ = cow_age[2] //3岁的母牛长到了4岁
cow_age[2] = cow_age[1] //2岁的母牛长到了3岁
cow_age[1] = cow_age[0] //1岁的母牛长到了2岁
cow_age[0] = cow_age[3] //每个4岁以上的母牛生了一只1岁的小牛
总数就是 cow_age[0]+cow_age[1]+cow_age[2]+cow_age[3]。
理解应该没问题吧
4. C语言编程问题 母牛繁殖
我用递归的方法写了个,非递归的方法暂时没想出来:
#include<stdio.h>
voidCow(int*femaleCow,intn)
{
for(inti=1;i<=n;++i)
{
*femaleCow+=1;
if(i+4<=n)
Cow(femaleCow,n-(i+4)+1);
}
}
intmain()
{
for(inti=1;i<=20;++i)
{
intfemaleCow=1;
Cow(&femaleCow,i);
printf("第%2d年:%3d头母牛\n",i,femaleCow);
}
}
也不能肯定对你的问题有没有理解对,以下是测试结果,你要的答案的第20年的:
第1年:2头母牛//第一头母牛加她生的小牛
第2年:3头母牛//依次类推
第3年:4头母牛
第4年:5头母牛
第5年:7头母牛//第一年生的小牛开始生了
第6年:10头母牛//第二年生的小牛也开始了
第7年:14头母牛
第8年:19头母牛
第9年:26头母牛
第10年:36头母牛
第11年:50头母牛
第12年:69头母牛
第13年:95头母牛
第14年:131头母牛
第15年:181头母牛
第16年:250头母牛
第17年:345头母牛
第18年:476头母牛
第19年:657头母牛
第20年:907头母牛
不知道你要的是不是这样的结果?
5. c语言关于奶牛的问题
#include "stdio.h"
main()
{
int a=1,b=15,c=20,d=1,j=1,k;
for(c=20;c<0;c--)
{
b=b-1; /*母牛生一次,减掉一年的寿命*/
a=a*2; /*每生一次,得到的牛*/
if(c>=16)
{
d=d*2; /*小牛生的牛*/
a=a+d; /*老牛加上小牛*/
}
if(b<=0)
{
j=j*2; /*死去的牛*/
a=a-j; /*总共的牛减去死去的牛*/
}
k=a;
}
printf("%d",k);
}
6. C语言设有一头小母牛,从出生第四年起每年生一头小母牛,按此规律,第N年时有几头母牛 求解释
n-1说的是去年一共有多少头,然后n-3说的是3年前有多少头(也就是说性成熟可生育的母牛数量),那么去年的牛数加上可生育的牛数量(也就是今年新产的小牛数量)就是今年牛数量
举个例子,第5年就是第四年的牛数量加上第2年的牛数量(第二年的牛已经全部可以生育了)
7. c语言编程:递增的牛群:若一头小母牛,从第四个年头开始每年生一头母牛。按此规律,第n年时有多少头母
1/************************************************************************
递增的牛群的问题。若1头小母牛,从第4年开始每年生一头母牛,按此规律,第20年
时,有多少头母牛?
************************************************************************/
2
3#include<stdio.h>
4
5intmain()
6{
7inti,f1=1,f2=1,f3=1,f4;
8
9for(i=4;i<=20;i++)
10{
11f4=f1+f3;
12f1=f2;
13f2=f3;
14f3=f4;
15}
16printf("第20年都一共有%d头母牛 ",f4);
17}
8. c语言程序设计 若一头小母牛从第4个年头开始每年生育一头母牛,按照此规律,第n年时有几头母牛
//VS2005 调试通过!
#include<iostream>
using namespace std;
int main()
{
int i;
int n;//年数
int num;//牛的数目
//type[0]表示刚出生的牛,type[1]表示出生后第二年的牛,type[2]表示出生后第三年的牛,type[3]表示已经开始生产的牛
int type[4]={1,0,0,0};
cout << "输入年数:";
cin >> n;
for (i=1;i<n;i++)
{
type[3] += type[2];
type[2] = type[1];
type[1] = type[0];
type[0] = type[3];
}
num = type[0] + type[1] + type[2] + type[3];
cout << "牛的总数为:" << num << endl;
return 0;
}
9. c语言问题,母牛生小母牛
如果想直接用程序模拟全部过程,可以用4个变量x1,x2,x3,x4.
x1=第1年的牛.
x2=第2年的牛.
x3=第3年的牛.
x4=可以生小牛的牛(>=4岁).
从第一年开始推,则第二年的状态:
t=x4; (新生的牛)
x4=x4+x3; (第3年的牛长了一岁)
x3=x2; (第2年的牛长了一岁)
x2=x1; (第1年的牛长了一岁)
x1=t; (新生的牛)
依此类推.