马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
用C语言写了一个万年历出来,我是新手,请大家多多指教指教。
有什么不足或者语法毛病的可以指出来。#include<stdio.h>
year_days(int date[3]) /*计算由公元1年到本年的日数*/
{
int days,a,b;
a=(date[0]-1)/4+(date[0]-1)/400-(date[0]-1)/100;
b=date[0]*365;
days=a+b;
return days;
}
month_days(int date[3]) /*计算由1月开始到本月的日数*/
{
if(date[1]==1)return 0;
if(date[1]==2)return 31;
if(date[1]==3)return 59;
if(date[1]==4)return 90;
if(date[1]==5)return 120;
if(date[1]==6)return 151;
if(date[1]==7)return 181;
if(date[1]==8)return 212;
if(date[1]==9)return 243;
if(date[1]==10)return 273;
if(date[1]==11)return 304;
if(date[1]==12)return 334;
}
get_days(int date[3]) /*计算总日子数*/
{
int year_days(int);
int month_days(int);
int days;
days=year_days(date)+month_days(date)+date[2];
if(date[0]%100!=0&&date[0]%4==0||date[0]%400==0)
if(date[1]>2)days++;
return days;
}
get_mondays(int date[3]) /*计算每月的日数*/
{
if(date[1]==1)return 31;
if((date[2]%100!=0&&date[2]%4==0||date[2]%400==0)&&date[1]==2)return 29;
if(date[1]==2)return 28;
if(date[1]==3)return 31;
if(date[1]==4)return 30;
if(date[1]==5)return 31;
if(date[1]==6)return 30;
if(date[1]==7)return 31;
if(date[1]==8)return 31;
if(date[1]==9)return 30;
if(date[1]==10)return 31;
if(date[1]==11)return 30;
if(date[1]==12)return 31;
}
main()
{
int get_days(int); /*声明函数*/
int get_mondays(int);
int date[3],days,mondays;
int i;
printf("please Please enter a date\n"); /*输入年月日*/
printf("year:");
scanf("%d",&date[0]);
printf("month:");
scanf("%d",&date[1]);
printf("day:");
scanf("%d",&date[2]);
days=get_days(date);
mondays=get_mondays(date);
printf(" %d/%d/%d\n",date[0],date[1],date[2]);
printf("=============================\n");
printf(" sun mon tue wed thu fri sat\n");
for(i=1;i<=(days-date[2])%7;i++) /*总日数减去日再除7求余,可以计算出每月开头空了的天数*/
{
printf(" ");
}
for(i=1;i<=mondays;i++)
{
if(i<10)printf(" ");
if(i==date[2])
printf("[%d]",i);
else
printf(" %d ",i);
if((days-date[2]+i)%7==0)
printf("\n");
}
printf("\n");
system("pause");
}
|