改了一个自己输入年月日来查询的代码,大家可以参考一下。
增加了年月日输入错误提示,包括分辨了闰年2月是否输入超过29之类的
增加了循环,可以一直查询
#include <stdio.h>
int main()
{
//输入需要计算的日期
int year;
int month;
int day;
int sum;
int flag;
int num;
while(1)
{
printf("Enter year:");
scanf("%d",&year);
printf("Enter month:");
scanf("%d",&month);
printf("Enter day:");
scanf("%d",&day);
if(year%100==0)
if(year%400==0)
flag=1;
else
flag=0;
else
if(year%4==0)
flag=1;
else
flag=0;
num=month; //这里用来代替month
month--; //因为懒得改后面的月份数字了,理解一下就好
switch(month)
{
case 11:
sum+=30;
if(month==11&&day>31)
{
printf("\n日期输入错误!%d月请输入日期1-31\n",num);
break;
}
case 10:
sum+=31;
if(month==10&&day>30)
{
printf("\n日期输入错误!%d月请输入日期1-30\n",num);
break;
}
case 9:
sum+=30;
if(month==9&&day>31)
{
printf("\n日期输入错误!%d月请输入日期1-31\n",num);
break;
}
case 8:
sum+=31;
if(month==8&&day>30)
{
printf("\n日期输入错误!%d月请输入日期1-30\n",num);
break;
}
case 7:
sum+=31;
if(month==7&&day>31)
{
printf("\n日期输入错误!%d月请输入日期1-31\n",num);
break;
}
case 6:
sum+=30;
if(month==6&&day>31)
{
printf("\n日期输入错误!%d月请输入日期1-31\n",num);
break;
}
case 5:
sum+=31;
if(month==5&&day>30)
{
printf("\n日期输入错误!%d月请输入日期1-30\n",num);
break;
}
case 4:
sum+=30;
if(month==4&&day>31)
{
printf("\n日期输入错误!%d月请输入日期1-31\n",num);
break;
}
case 3:
sum+=31;
if(month==3&&day>30)
{
printf("\n日期输入错误!%d月请输入日期1-30\n",num);
break;
}
case 2:
if(month==2&&day>31)
{
printf("\n日期输入错误!%d月请输入日期1-31\n",num);
break;
}
if(flag==1)
sum+=29;
else
sum+=28;
case 1:
sum+=31;
if(flag==1)
{
if(month==1&&day>29)
{
printf("\n日期输入错误!%d年是闰年,%d月请输入日期1-29\n",year,num);
break;
}
}
else
{
if(month==1&&day>28)
{
printf("\n日期输入错误!%d年不是闰年,%d月请输入日期1-28\n",year,num);
break;
}
}
case 0:
if(year<1)
{
printf("\n年份输入错误!请输入大于0的整数\n");
break;
}
if(day<1)
{
printf("\n日期输入错误!请输入大于0的整数\n");
break;
}
if(month==0)
{
if(day>31)
{
printf("\n日期输入错误!请输入日期1-31\n");
break;
}
sum=day;
month++;
printf("\n%d年%d月%d日是该年的第%d天\n",year,month,day,sum);
}
else
{
sum+=day;
month++;
printf("\n%d年%d月%d日是该年的第%d天\n",year,month,day,sum);
}
break;
default:
printf("\n月份输入错误!请输入1-12月份\n");
break;
}
}
return 0;
}