手写c语言空格怎么写,用C语言写的万年历---亲手写的。好累哦

#include

#include

#include

#define str "   SUN   MON  TUE   WED   THU   FRI   SAT   "

void menu();         //操作菜单

int leap(int year);        //判断某年是不是闰年

int days_month(int year,int month);        //返回某月的天数

int someday(int year,int month,int day);    //计算某天是星期几

void search_month(int year,int month);        //输出某月的日历

void search_someday(int year,int month,int day);    //查询某日是星期几

int main()

{

int i,year,month,day;

int k1,k2,k3,k4;    //用于判断输入的数据和操作是否正确,1代表正确,0代表错误

int a = 1;

menu();

do

{

printf("请输入你要进行的操作(1-4):");

scanf("%d",&i);

getchar();

switch(i)

{

case 1:

printf("请输入你要查询的年份:");scanf("%d",&year);

for(a;a<=12;a++)

{

printf("\n\n---------*******   %d  *******------------\n",a);

search_month(year,a);

}

printf("---------*********************------------\n\n\n");

break;

case 2:

printf("请输入您所要查询的相关信息.\n");

printf("年份:");scanf("%d",&year);

printf("月份:");scanf("%d",&month);

k1=1;

while(k1)

{

if(month>12||month<1)

{

printf("你输入的月份有误,请重新输入!\n");

printf("月份:");

scanf("%d",&month);

if(month<1||month>12)    k1=1;

}

else k1=0;

}

search_month(year,month);

printf("---------*********************------------\n\n\n");

break;

case 3:

printf("请输入你要查询的日期\n");

printf("年份:");scanf("%d",&year);

printf("月份:");scanf("%d",&month);

k2=1;

while(k2)

{

if(month>12||month<1)

{

printf("你输入的月份有误,请重新输入!\n");

printf("月份:");

scanf("%d",&month);

if(month<1||month>12)    k2=1;

}

else k2=0;

}

//    printf("%d年%d月有%d天\n",year,month,days_month(year,month));     调试观察输入的日期是否有误,可忽略

printf("日期:");scanf("%d",&day);

k3=1;

while(k3)

{

if(day>days_month(year,month)||day<1)

{

printf("你输入的日期有误,请重新输入!\n");

printf("日期:");

scanf("%d",&day);

if(day>days_month(year,month)||day<1)    k3=1;

}

else k3=0;

}

search_someday(year,month,day);

printf("---------*********************------------\n\n\n");break;

case 4:exit(0);

printf("---------*********************------------\n\n\n");break;

default:

k4=1;

while(k4)

{

printf("你输入的数据有误,请重新输入你要进行的操作(1-4):");

scanf("%d",&i);

if(i<1||i>4)    k4=1;

else k4=0;

}

break;

}

}while(i>0&&i<5);

return 0;

}

void menu()

{

int i=1;

printf("\n\n\t\t----------------------------------------\n");

printf("\t\t|--------------------------------------|\n");

printf("\t\t|           %d.  输出某年的日历         |\n",i);

printf("\t\t|           %d.  输出某月的日历         |\n",i+1);

printf("\t\t|           %d.  查询某日是星期几       |\n",i+2);

printf("\t\t|           %d.  退出系统               |\n",i+3);

printf("\t\t|--------------------------------------|\n");

printf("\t\t----------------------------------------\n\n");

}

int leap(int year)

{

if((year%4==0&&year%100!=0)||year%400==0) return 1;

else return 0;

}

int days_month(int year,int month)

{

int days_month;

switch(month)

{

case  1:

case  3:

case  5:

case  7:

case  8:

case  10:

case  12: days_month = 31;break;

case  4:

case  6:

case  9:

case  11:days_month = 30;break;

case  2:

if(leap(year)==1)

{

days_month = 29;break;

}

else days_month = 28;break;

}

return days_month;

}

int someday(int year,int month,int day)

{

//该函数运用了特殊的计算公式,详细可参见 http://blog.163.com/hexin_mars_blog/blog/static/248215040201571351115699/

int someday,m,n,i;  //someday表示查询的日子是星期几

m=year-year/1000*1000;

n=m-m/100*100-1;            //用于获得年份的后两位数

int days=0;

for(i=1;i

days =days + day;

someday = (n + n/4 - n/100 + n/400 + days)%7;

return someday;

}

void search_someday(int year,int month,int day)

{

char weekname[20];

switch(someday(year,month,day))

{

case 0:strcpy(weekname,"星期天") ;break;

case 1:strcpy(weekname,"星期一") ;break;

case 2:strcpy(weekname,"星期二") ;break;

case 3:strcpy(weekname,"星期三") ;break;

case 4:strcpy(weekname,"星期四") ;break;

case 5:strcpy(weekname,"星期五") ;break;

case 6:strcpy(weekname,"星期六") ;break;

}

printf("你所要查询的日期是%s\n",weekname);

}

void search_month(int year,int month)

{

int i=0,j,k=0,m;     //j用于记录某月的第一天是星期几   m用于记录某月的天数  k用于换行提示

char x[10]="      ";

m=days_month(year,month);

j=someday(year,month,1);

//输出某月的日历

printf("------------------------------------------\n");

printf("%s\n",str);

for(;i

{

printf("%s",x);k++;

}

for(i=1;i<=m;i++)

{

k++;

if(k%7==0)

{

if(i<10)

{

printf("    %d ",i);

printf("\n");

}

else if(i>=10)

{

printf("   %d ",i);

printf("\n");

}

}

else

{

if(i<10)

{

printf("    %d ",i);

}

else if(i>=10)

{

printf("   %d ",i);

}

}

}

printf("\n------------------------------------------\n");

}

void exit()

{

exit(0);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值