【经典例题】抓交通肇事犯答案(结构体版)

程序:

#include<stdio.h>
int days(struct date day);
struct date
{
    int year;
    int month;
    int day;
};
int main()
{
    struct date today,term;
    int yearday,year,day;
    cout<<"Enter year/month/day:";
    cin>>today.year>>today.month>>today.day; /*输入日期*/
    term.month=12; /*设置变量的初始值:月*/
    term.day=31; /*设置变量的初始值:日*/
    for(yearday=0,year=1990; year<today.year; year++)
    {
        term.year=year;
        yearday+=days(term); /*计算从1990年至指定年的前一年共有多少天*/
    }
    yearday+=days(today); /*加上指定年中到指定日期的天数*/
    day=yearday%5; /*求余数*/
    if(day>0&&day<4) cout<<"he was fishing at that day."<<endl; /*打印结果*/
    else cout<<"He was sleeping at that day."<<endl;;
}
int days(struct date day)
{
    static int day_tab[2][13]=
    {
        {0,31,28,31,30,31,30,31,31,30,31,30,31,}, /*平均每月的天数*/
        {0,31,29,31,30,31,30,31,31,30,31,30,31,},
    };
    int i,lp;
    lp=day.year%4==0&&day.year%100!=0||day.year%400==0;
    /*判定year为闰年还是平年,lp=0为平年,非0为闰年*/
    for(i=1; i<day.month; i++) /*计算本年中自1月1日起的天数*/
        day.day+=day_tab[lp][i];
    return day.day;
}

体会:目测结构体很好用。竟然可以用数组,智商真高啊

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值