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)
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)