查询日期是该年的多少天

题目要求:输入年 月 日 则输出改天是该年的第多少天.

方法一: 最原始的

 

#include  < stdio.h >
void  main()
{
    
int a,b,c,sum,leap,flag=1;
    
while(flag)
    
{
    printf(
"请输入年、月、日(月份前请不要加0!!) ");
    scanf(
"%d%d%d",&a,&b,&c);
    
if(a%4<0||b<=0||b>12||c<=0||c>31)
        printf(
"我跳起日啊!!你在搞毛!!想死了是吧,在乱来 ");
    
else if((a%4==0&&a%100!=0)||(a%400==0))
    
{
        
switch(b)
        
{
        
case 1:sum=0;break;
        
case 2:sum=31;break;
        
case 3:sum=60;break;
        
case 4:sum=91;break;
        
case 5:sum=121;break;
        
case 6:sum=152;break;
        
case 7:sum=182;break;
        
case 8:sum=213;break;
        
case 9:sum=244;break;
        
case 10: sum=274;break;
        
case 11:sum=305;break;
        
case 12:sum=335;break;
        }

    leap
=sum+c;
    printf(
"您输入的是");
    printf(
"%d",a);
    printf(
"年的第%d天! ",sum);
    }

    
else
    
{
        
switch(b)
        
{
        
case 1:sum=0;break;
        
case 2:sum=31;break;
        
case 3:sum=59;break;
        
case 4:sum=90;break;
        
case 5:sum=120;break;
        
case 6:sum=151;break;
        
case 7:sum=181;break;
        
case 8:sum=212;break;
        
case 9:sum=243;break;
        
case 10: sum=275;break;
        
case 11:sum=304;break;
        
case 12:sum=334;break;
        }
    
        leap
=sum+c;
    printf(
"您输入的是");
    printf(
"%d",a);
    printf(
"年的第%d天! ",sum);
    }

    printf(
"continue or not(Y/N)? ");
    scanf(
"%c",&c);
    
if(c=='y'||c=='Y')
        flag
=0;
    }

}

方法2:优化一点点

#include  < stdio.h >
struct  
{
    
int day;
    
int month;
    
int year;
}
date;

void  main()
{
    
int days;
    printf(
"input day month year: ");
    scanf(
"%d%d%d",&date.year,&date.month,&date.day);
    
switch(date.month)
    
{
    
case 1:days=date.day;break;
    
case 2:days=31+date.day;break;
    
case 3:days=59+date.day;break;
    
case 4:days=90+date.day;break;
    
case 5:days=120+date.day;break;
    
case 6:days=151+date.day;break;
    
case 7:days=181+date.day;break;
    
case 8:days=212+date.day;break;
    
case 9:days=243+date.day;break;
    
case 10:days=273+date.day;break;
    
case 11:days=304+date.day;break;
    
case 12:days=334+date.day;break;
    }

    
if((date.year%4==0&&date.year%100!=0)||(date.year%400==0)&&date.month>=3)
        days
=days+1;
    printf(
"%d ",days);
}

方法3:结构体

#include  < stdio.h >
struct
{
    
int day;
    
int month;
    
int year;
}
date;

void  main()
{
    
int i,days=0;
    
int day_lib[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
    printf(
"input year month day: ");
        scanf(
"%d%d%d",&date.year,&date.month,&date.day);
    
for(i=0;i<date.month;i++)
        days
=days+day_lib[i];
    days
=days+date.day;
    
if((date.year%4==0&&date.year%100!=0)||(date.year%400==0)&&date.month>=3)
        days
=days+1;
    printf(
"%d ",days);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值