工科小白的第三次作业(实验3)
1、输入一个日期并判断日期格式是否正确:
#include<stdio.h>
int main()
{
int year, month, day;
printf("请输入一个日期(yyyy-m-d):");
scanf_s("%d-%d-%d", &year, &month, &day);
if (year > 0)
{
if ((month > 0) && (month <= 12))
{
if ((day > 0) && (day <= 31))
{
if ((month == 4) || (month == 6) || (month == 9) || (month == 11))
{
if (day == 31) printf("输入的日期错误!");
else printf("输入的日期是%d年%d月%d日", year, month, day);
}
else if (month == 2)
{
if ((year % 4 != 0) || (year % 100 == 0) && (year % 400 != 0) && (day > 28))
{
printf("输入的日期错误!");
}
else if ((year % 400 == 0) || (year % 4 == 0) && (year % 100 != 0) && (day > 29))
{
printf("输入的日期错误!");
}
else
{
printf("输入的日期是%d年%d月%d日", year, month, day);
}
}
}
else
{
printf("输入的日期错误!");
}
}
else
{
printf("输入的月份错误!");
}
}
else
{
printf("输入的年份错误!");
}
return 0;
}
2、判断输入的日期是这一年的第几天:(调用函数)
#include<stdio.h>
int riqi(int year, int month, int day)
{
int a=0;
if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) a = 1;
else a = 0;
int t = 0;
switch(month-1)
{
case 11: t+= 30;
case 10:t+= 31;
case 9:t+= 30;
case 8:t += 31;
case 7: t+= 31;
case 6:t += 30;
case 5:t += 31;
case 4:t += 30;
case 3: t+= 31;
case 2:t += 28 + a;
case 1: t+= 31; break;
default:;
}
t+= day;
printf("该日期是这一年的第%d天。", t);
return 0;
}
int main()
{
int year, month, day;
printf("请输入一个日期(yyyy-m-d):");
scanf_s("%d-%d-%d", &year, &month, &day);
riqi(year, month, day);
return 0;
}