| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1125 人关注过本帖
标题:苦思冥想一个C语言问题 我才学到指针和结构变量 给大家做看看这个问题,我想 ...
只看楼主 加入收藏
cqm9266
Rank: 3Rank: 3
来 自:福建
等 级:论坛游侠
帖 子:174
专家分:186
注 册:2011-10-28
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:19 
苦思冥想一个C语言问题 我才学到指针和结构变量 给大家做看看这个问题,我想不出来,顺便学习一下
一对兔子 长到3个月成熟,3个月后每个月生一对兔子。生下的小兔子也符合这个条件。问:输入月份求出该月份的兔子总数。
搜索更多相关主题的帖子: 小兔子 成熟 C语言 
2011-11-01 10:20
heroinearth
Rank: 10Rank: 10Rank: 10
来 自:云南曲靖
等 级:青峰侠
帖 子:430
专家分:1506
注 册:2011-10-24
收藏
得分:2 
程序代码:
#include<stdio.h>

void getmoon(int n)/*n为共需输出几个月的数*/
{
    int i=0,s,sum,x=1,y1=0,y2=0,y3=0;/*x用来存成年的,y用来存小的,i用来存月数*/
    for(i=1;i<=n;i++)
    {
        s=y3; /*3月龄的现再也应成年了,下面行同理*/
        y3=y2;
        y2=y1;
        y1=x*2; /*这个月新生小免数*/
        x+=s;  /*这月底的成年数,下月要生小免的*/
      
        sum=y3+y2+y1+x;
      
        printf("i moonth: %d\n",sum);
      
     
    }

 

 
}

main()
{
    int sum;
    printf("Please enter a number:");
    scanf("%d",&sum);
    getmoon(sum);

 
}

2011-11-01 10:38
cqm9266
Rank: 3Rank: 3
来 自:福建
等 级:论坛游侠
帖 子:174
专家分:186
注 册:2011-10-28
收藏
得分:0 
先吃饭 回来再研究 谢谢了

没病的人说有病的人有病,有病的人说没病的人有病。到底是谁有病?
2011-11-01 11:22
cqm9266
Rank: 3Rank: 3
来 自:福建
等 级:论坛游侠
帖 子:174
专家分:186
注 册:2011-10-28
收藏
得分:0 
你得出的怎么都是奇数? 一对兔子生1对小兔子 怎么算也是双数才对不是吗

没病的人说有病的人有病,有病的人说没病的人有病。到底是谁有病?
2011-11-01 11:55
l987748110
Rank: 1
等 级:新手上路
帖 子:15
专家分:8
注 册:2011-10-31
收藏
得分:2 
#include"stdio.h"
#include"conio.h"
int getmoon(int n)/*n为共需输入几个月的数*/
{
    int y3=1,y2=0,y1=0,x=0,i,sum,p3,p2,p1;/*y3表示差三月成熟的,y2表示差两月成熟的,y1表示差一月成熟的,x表示已经成熟的。  */
        for(i=1;i<=n;n++)
        {
            if(i==1)
            {
                y3--;y2++;
            }
            else if(i==2)
                    {
                        y2--;
                        y1++;
                    }
                else if(i==3)
                        {
                            y1--;
                            x++;
                        }
                    else if(i==4)
                            {
                                y3++;
                            }
                        else if(i==5)
                                {
                                    y2++;
                                }
                            else if(i==6)
                                    {
                                        y1++;
                                    }
                                else if(i>=7)
                                        {
                                            p3=y3;
                                            y3=x;
                                            p2=y2;
                                            y2=p3;
                                            p1=y1;
                                            y1=p2;
                                            x=x+p1;
                                        }
     }
    sum=(y1+y2+y3+x);
    return sum;
}
 
void main()
 {
     int n,sum;
     printf("Please enter a number:\n");
     scanf("%d",&n);
     sum=getmoon(n);
     printf("%d",sum);
     printf("\n");
     getch();
 }
 
2011-11-01 14:44
248698530
Rank: 2
等 级:论坛游民
帖 子:46
专家分:22
注 册:2008-1-10
收藏
得分:2 
路过学习
2011-11-01 14:51
竹闲云
Rank: 2
等 级:论坛游民
帖 子:39
专家分:34
注 册:2011-10-9
收藏
得分:2 
这个问题注意,从第三个月起  就满足A3=A2+A1;就是后一个数等于前两个数之和,如果你注意到这点了,这个问题就好说了,我也是上几周把这个程序编写出来的。。。。
2011-11-01 15:21
liao06550107
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:2
帖 子:111
专家分:696
注 册:2011-10-2
收藏
得分:2 
程序代码:
#include <stdio.h>
#include <stdlib.h>
struct Month_rabbit
{
    long int
        old_rabbit,   //成熟的兔子
        new_rabbit,   //新生的兔子
        unew_rabbit,  //非新生未成熟的兔子
        sum_rabbit;   //该月为止兔子总数
} ;

void rabbit_sum(int month, struct Month_rabbit *prabbit)
{
    if(month<1)
    {
        printf("输入有误!"); exit(1);
    }

    for(int i=1;i <= month; i++ )
    {
        switch(i)
        {
            case 1 :
                prabbit->new_rabbit= 2; prabbit->old_rabbit = 0; prabbit->unew_rabbit = 0; prabbit->sum_rabbit = 2;
            break;
            case 2 :
                prabbit->new_rabbit= 0; prabbit->old_rabbit = 0; prabbit->unew_rabbit = 2; prabbit->sum_rabbit = 2;
            break;
            case 3 :
                prabbit->new_rabbit= 0; prabbit->old_rabbit = 0; prabbit->unew_rabbit = 2; prabbit->sum_rabbit = 2;
            break;
            default :
                prabbit->old_rabbit = (prabbit-3)->new_rabbit + (prabbit-1)->old_rabbit ;//本月成熟兔子等于往前数三个月月份新生兔子与本月前一个月月份成熟兔子之和
                prabbit->unew_rabbit = (prabbit-1)->unew_rabbit + (prabbit-1)->new_rabbit - (prabbit-3)->new_rabbit ;//本月非新生未成熟兔子等于前一个月份非新生未成熟兔子加前一个月份新生兔子的和减去本月往前数三个月月份的新生兔子数
                prabbit->new_rabbit = prabbit->old_rabbit ;//本月新生兔子数等于本月成熟的兔子数
                prabbit->sum_rabbit = prabbit->old_rabbit + prabbit->new_rabbit + prabbit->unew_rabbit ;//本月为止兔子总数为本月成熟的兔子数和新生的兔子数以及非新生未成熟兔子数之和
      
        }
        prabbit++;
    }
}

int main(void)
{
    int month;
    long int total = 0;
    struct Month_rabbit rabbit[20];
    printf("请输入月份:");
    scanf("%d", &month);
    rabbit_sum(month, rabbit);
    printf("到第%d月为止共有兔子:%ld\n", month,rabbit[month-1].sum_rabbit);
    return 0;
}


[ 本帖最后由 liao06550107 于 2011-11-1 18:42 编辑 ]

听不同的音乐,看不同的书,游历不同的城市,邂逅不同的人,走的多了,站的高了,自然就看的远了。
2011-11-01 17:12
cqm9266
Rank: 3Rank: 3
来 自:福建
等 级:论坛游侠
帖 子:174
专家分:186
注 册:2011-10-28
收藏
得分:0 
都谢谢了 恩

没病的人说有病的人有病,有病的人说没病的人有病。到底是谁有病?
2011-11-01 18:26
竹闲云
Rank: 2
等 级:论坛游民
帖 子:39
专家分:34
注 册:2011-10-9
收藏
得分:0 
/* Note:Your choice is C IDE */
#include "stdio.h"
void main()
{
    int yue,i,c;
    int m=1,n=1,sum;
    printf("请输入过了几个月:");
    scanf("%d",&yue);
    if(yue==1||yue==2)
    {
        printf("过了%d兔子的数量变为1\n",yue);
    }
    else
    {
        
        for(i=3;i<yue+1;i++)
        {
             sum=m+n;
              n=m;
             m=sum;
        }
   
        printf("过了%d月兔子的数量为%d",yue,sum);   
    }   
}

试试这个,应该就是这个了。我只是觉得上面的太复杂了,所以就发这个了。
你试试
2011-11-01 18:29
快速回复:苦思冥想一个C语言问题 我才学到指针和结构变量 给大家做看看这个问题 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.366039 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved