万年历输出日期怎么不对齐?
#include<stdio.h> /*文件包含预处理命令,printf( )函数在其中声明*/ #include<stdlib.h> /*文件包含预处理命令,scanf( )函数在其中声明*/
char* month_str[]={"一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"};
char* week[]={"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
int IsLeapYear(int year) /*函数声明语句,查询某年是平年还是闰年*/
{
if((year%4==0&&year%100!=0)||(year%400==0))
return 1;
else
return 0; /*返回值0,返回操作系统*/
}
inline int month_day(int year,int month) /*函数声明语句*/
{
int mon_day[]={31,28,31,30,31,30,31,31,30,31,30,31};
if(IsLeapYear(year)&&month==2)
return 29;
else
return(mon_day[month-1]); /*函数返回语句,函数返回到主调函数并将mon_day[month-1]的值一并返回*/
}
int DaySearch(int year,int month,int day) /*函数声明语句,查询某年某月某日是星期几*/
{
int c=0; /*变量定义语句*/
float s; /*变量定义语句*/
int m; /*变量定义语句*/
for(m=1;m<month;m++) /*当m值小于month值时,每次循环m的值自加1*/
c=c+month_day(year,m);
c=c+day;
s=year-1+(float)(year-1)/4+(float)(year-1)/100+(float)(year-1)/400-40+c;
return ((int)s%7);
}
int PrintAllYear(int year)/*函数声明语句,打印全年日历*/
{
int temp; /*变量定义语句*/
int i,j; /*变量定义语句*/
printf("\n\n%d Calander\n",year); /*调用在stdio.h中声明的库函数printf( )*/
for(i=1;i<=12;i++) /*当i值小于等于12时,每次循环i的值自加1*/
{
printf("\n\n%s(%d)\n",month_str[i-1],i); /*调用在stdio.h中声明的库函数printf( )*/
printf("日 一 二 三 四 五 六 \n\n"); /*调用在stdio.h中声明的库函数printf( )*/
temp=DaySearch(year,i,1);
for(j=1;j<=month_day(year,i)+temp;j++) /*当j值小于等于month值时,每次循环j的值自加1*/
{
if(j-temp<=0)
printf(" "); /*调用在stdio.h中声明的库函数printf( )*/
else if(j-temp<10)
printf("%d ",j-temp); /*调用在stdio.h中声明的库函数printf( )*/
else
printf("%d ",j-temp); /*调用在stdio.h中声明的库函数printf( )*/
if(j%7==0)
printf("\n"); /*调用在stdio.h中声明的库函数printf( )*/
}
}
return 0; /*返回值0,返回操作系统*/
}
int main(void) /*主函数main(void)*/
{
int option,da; /*变量定义语句*/
char ch; /*变量定义语句*/
int year,month,day; /*变量定义语句*/
printf("\n\n欢迎使用万年历查询系统!\n");/*调用在stdio.h中声明的库函数printf( )*/
while(1) /*无限循环,遇到break跳出循环*/
{
printf("\n请选择您所需要的服务:\n"); /*调用在stdio.h中声明的库函数printf( )*/
printf("\n1 查询某年某月某日是星期几"); /*调用在stdio.h中声明的库函数printf( )*/
printf("\n2 查询某年是平年或闰年"); /*调用在stdio.h中声明的库函数printf( )*/
printf("\n3 打印全年日历"); /*调用在stdio.h中声明的库函数printf( )*/
printf("\n4 退出\n"); /*调用在stdio.h中声明的库函数printf( )*/
scanf("%d",&option);
switch(option)
{
case 1:
while(1)
{
printf("\n请输入年月日(XXXX,XX,XX):"); /*调用在stdio.h中声明的库函数printf( )*/
scanf("%d,%d,%d,%c",&year,&month,&day);
da=DaySearch(year,month,day);
printf("\n%d-%d-%d 是 %s,您希望继续查询吗?(Y/N)",year,month,day,week[da]); /*调用在stdio.h中声明的库函数printf( )*/
fflush(stdin);
scanf("%c",&ch);
if(ch=='N'||ch=='n')
break;
}
break;
case 2:
while(1)
{
printf("\n请输入您希望查询的年份?(XXXX)"); /*调用在stdio.h中声明的库函数printf( )*/
scanf("%d",&year);
if(IsLeapYear(year))
printf("\n%d 是闰年,您希望继续查询吗?(Y/N)",year); /*调用在stdio.h中声明的库函数printf( )*/
else
printf("\n%d 是平年,您希望继续查询吗(Y/N)?",year); /*调用在stdio.h中声明的库函数printf( )*/
fflush(stdin);
scanf("%c",&ch);
if(ch=='N'||ch=='n')
break;
}
break;
case 3:
while(1)
{
printf("\n请输入您希望打印的年份(XXXX)"); /*调用在stdio.h中声明的库函数printf( )*/
scanf("%d",&year);
PrintAllYear(year);
printf("\n您希望继续打印吗Y/N)?"); /*调用在stdio.h中声明的库函数printf( )*/
fflush(stdin);
scanf("%c",&ch);
if(ch=='N'||ch=='n')
break;
}
break;
case 4:
fflush(stdin);
printf("您确认退出吗?(Y/N)"); /*调用在stdio.h中声明的库函数printf( )*/
scanf("%c",&ch);
if(ch=='Y'||ch=='y')
exit(0);
break;
default:
printf("\nError:对不起,现在没有这项查询功能!\n"); /*调用在stdio.h中声明的库函数printf( )*/
break;
}
}
return 0; /*返回值0,返回操作系统*/
}