编写一个程序,输入年份和月份,判断该年是否是闰年,并根据给出的月份判断该月是多少天?

编写一个程序,输入年份和月份,判断该年是否是闰年,并根据给出的月份判断该月是多少天?,第1张

1、打开visual C语言编程软件,新建一个文件。

2、输入预处理命令和主函数:#include<stdio.h>/*函数头:输入输出头文件*/void main() /*空类型:主函数*/。

3、定义变量、输入年份:int year,leap/*定义变量的数据类型为整型。

4、用if函数逐步判断是否满足成为闰年的条件。

5、然后用if函数判断是否是闰年。

6、这样就完成了,最后运行结果就可以了。

#include

"stdio.h"

int

isleapyear(int

year)//判断是不是闰年。

int

iscurrentdate(int

year,int

month,int

day)//是不是正确的日期。

int

returnnextday(int

year,int

month,int

day)//返回下一天,也有判断是不是正确的日期。

int

leapyear_month_sumday[12]={31,29,31,30,31,30,31,31,30,31,30,31}//闰年数组,保存各月天数。

void

main()

{

int

year=0,month=0,day=0,nextday=0

printf("pleace

enter

right

date(example:2005

6

27):\n")

scanf("%d%d%d",&year,&month,&day)

nextday=returnnextday(year,month,day)

switch

(nextday)

{

case

0:

printf("not

a

current

date\n")

break

case

1:

if

(month==12)

{

year++

month=1

}

else

{

month++

}

break

}

if

(nextday!=0)

printf("the

you

input

next

date

is

%d-%d-%d.thank

use

bye

bye!\n",year,month,nextday)

}

int

isleapyear(int

year)

{

if

(year%4==0)

{

if

(year%400)

return

1

else

{

if

(year%100==0)

return

0

else

return

1

}

}

else

{

return

0

}

}

int

iscurrentdate(int

year,int

month,int

day)

{

if

((year<0)

&&

(year>9999)

&&

(month>12)

&&

(month<1)

&&

(day<1)

&&(day>31)

)return

0

else

return

1

}

int

returnnextday(int

year,int

month,int

day)

{

int

thismonthsumday

if

(iscurrentdate(year,month,day)==1)

{

thismonthsumday=leapyear_month_sumday[month-1]

if

(month==2)

{

if

(isleapyear(year)==0)

thismonthsumday--

}

if

(day<thismonthsumday)

{

return

++day

}

else

{

if

(day==thismonthsumday)

{

return

1

}

else

{

return

0

}

}

}

else

{

return

0

}

}

程序直接输入年份和月份,打印对应日历。

一年12个月是固定的,我就不写单独输入年份打印月份了。你想就把我月份数组打印一遍好了。

#include<stdio.h>

#include<time.h>

#include<malloc.h>

enum MONTH{January=1,February,March,April,May,June,July,August,September,October,November,December}

struct tm * getDate(int year,int mon)

void printTime(time_t theTime,int year)

int main()

{

    enum MONTH mon

    time_t theTime

    struct tm *date

    int year,m

    while(1)

    {

        printf("输入任意年份及月份:\n")

        scanf("%d%d",&year,&m)

        if(m<1 || m>12)

        {

            printf("月份超出范围,重新输入!\n")

            continue

        }

        mon=m

        break

    }

    date=getDate(year,mon)

    theTime=mktime(date)//从1900年至此的秒数

    printTime(theTime,year)

    return 0

}

struct tm * getDate(int year,int mon)

{

    struct tm *date=(struct tm *)malloc(sizeof(struct tm))

    date->tm_sec=0

    date->tm_min=0

    date->tm_hour=0

    date->tm_year=year-1900

    date->tm_mon=mon-1

    date->tm_mday=1

    date->tm_yday=0

    return date

}

void printTime(time_t theTime,int year)

{

    int y,m,wday,i,j

    char wd[7][7]={"星期日","星期一","星期二","星期三","星期四","星期五","星期六"}

    struct tm *date

    date =localtime(&theTime)

    y=date->tm_year+1900

    m=date->tm_mon+1

    wday=date->tm_wday

    printf("\n------------------开始生成日历----------------------\n\n")

    printf("                   %d年%02d月\n",y,m)

    i=0

    for(j=0j<7j++)

    {

        printf("%s ",wd[wday++])

        if(wday>6)

            wday=0

    }

    printf("\n")

    while(1)

    {

        if(date->tm_mon+1>m)

        {

            printf("\n")

            break

        }

        printf(" %02d日  ",date->tm_mday)

        if(++i==7)

        {

            printf("\n")

            i=0

        }

        theTime+=24*60*60

        date =localtime(&theTime)

    }

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7695345.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-08
下一篇 2023-04-08

发表评论

登录后才能评论

评论列表(0条)

保存