小菜迪迪 2021-09-02 21:24 采纳率: 0%
浏览 224

C语言——细菌繁殖基础问题 日期间隔

    一种细菌的繁殖速度是每天成倍增长。例如:第一天有10个,第二天就变成20个,第三天变成40个,第四天变成80个,……。现在给出第一天的日期和细菌数目,要你写程序求出到某一天的时候,细菌的数目。

Input
第一行有一个整数n,表示测试数据的数目。其后n行每行有5个整数,整数之间用一个空格隔开。第一个数表示第一天的月份,第二个数表示第一天的日期,第三个数表示第一天细菌的数目,第四个数表示要求的那一天的月份,第五个数表示要求的那一天的日期。已知第一天和要求的一天在同一年并且该年不是闰年,要求的一天一定在第一天之后。数据保证要求的一天的细菌数目在长整数(long)范围内。
Output
对于每一组测试数据,输出一行,该行包含一个整数,为要求的一天的细菌数。
** Sample Input**
2
1 1 1 1 2
2 28 10 3 2

Sample Output
2
40

#include <stdio.h>
long int main()
{    int p,start_month,start_date,end_month,end_date,k,j;
    long int poor;
    long int datediff(int start_month,int start_date,int j,int end_month,int end_date);/*函数声明*/
    scanf("%d",&p);
while(p--)
    { scanf("%d%d%d%d%d",&start_month,&start_date,&j,&end_month,&end_date);/*参数*/
        poor=datediff(start_month,start_date,j,end_month,end_date);    
        printf("%ld\n",poor);        
    }
        return 0;
}
    long int datediff(int start_month,int start_date, int j,int end_month,int end_date)
{
    int num;
    int i,k,n;
    int s[20]={1,-2,1,0,1,0,1,1,0,1,0,1};/*与30的差的天数*/
    i=start_month;
    if((end_month-start_month)>1)
        {
            num=30*(end_month-start_month-1);/*相差两个月数的间隔,实际上就只相差一个完整的30天*/
        }
        if(end_month!=start_month)
            {
                num=30-start_date+num;
                num=num+end_date;/*每月30天情况下相差月数的时间间隔*/
                for(n=0;n<end_month-start_month;n++)
                        {
                            num+=s[i-1];
                            i++;
                        }/*开始计算相隔的月数有多少个不是刚好30,排除误差*/        
            }
        else
            {
                num=end_date-start_date;
             } /*相同月份的天数间隔*/
    for(k=1;k<=num;k++)
        j+=j;
    return j;/*返回日期间隔,并且要求长整型*/    
}

健忘笔记,希望可以帮到你
加油吧,程序猿!

  • 写回答

2条回答 默认 最新

报告相同问题?

问题事件

  • 创建了问题 9月2日

悬赏问题

  • ¥15 工价表引用工艺路线,应如何制作py和xml文件
  • ¥15 根据历史数据,推荐问题类型
  • ¥15 需要仿真图,简单的二阶系统实例
  • ¥15 stm32光控照明仿真
  • ¥15 使用人工智能的方法生成满足一定统计参数要求的随机数序列
  • ¥15 SENT协议中相关问题咨询
  • ¥15 URL地址href跳转问题
  • ¥15 mysql数据库备份恢复
  • ¥15 mmdetection mask-rcnn
  • ¥25 matlab可以将微分方程的解显示为相图形式吗