请问这个函数里应该加什么判断句子呢?

来源:百度知道 编辑:UC知道 时间:2024/05/25 15:04:56
请别改变这个题的做法,题目要求根据今天的日期写出明天的日期,帮我看下中间应该加个什么判断条件让对方输入日期格式不合法的时候不执行下面的句子呢?
代码如下:
#include<stdio.h>
struct date
{
int year,month,day;
}today;
int panduan(int *);

void main()
{
int k;
printf("请输入年");
scanf("%d",&today.year);
printf("请输入月");
scanf("%d",&today.month);
printf("请输入日");
scanf("%d",&today.day);
printf("今天是%d年%d月%2d日",today.year,today.month,today.day);
k=panduan(&today.year);
// 这里加判断的句子
if(today.day==30||today.day==28||today.day==31)
{
today.day=1;
if(today.month==12)
{
today.month=1;
today.year++;
}
else
today.month++;
}
else
today.day++;
printf("\n明天是%d年%d月%2d日",today.year,today.month,today.day);
}

int panduan(int *p)
{
int k;
if((*p%4==0)

你的代码里问题很多:
1。对年月日的合法性没有进行判断
2。判断闰年的方法是不正确的
3。没有考虑每个月的天数是不一样的
4。其他

这里专门为你提供一部分代码,认真读一读,对你会有帮助。
把这些代码放到你的主程序里,就可以得到你想要的结果了。
如果你有兴趣,可以试一试计算当前日期前一天、后一天或者前n天、后n天的日期(这部分还是留给你自己与动手修改吧)。

祝你进步:-)

代码-----〉〉〉〉〉

//指定年份是否为闰年
BOOL isLeapYear(int nYear)
{
return (nYear % 4 == 0) && (nYear % 100 != 0) || (nYear % 400 == 0);
}

//年份是否有效
BOOL isValidYear(int nYear)
{
return nYear > 0; //可以自己设定有效的年份
}

//月份是否有效(基1,即1月为1,2月为2)
BOOL isValidMonth(int nMonth)
{
return nMonth > 0 && nMonth <= 12;
}

//每个月的天数,作为数组
static int g_nDaysOfMonth[] = {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

//日期是否有效(nMonth, nDay都基1)
BOOL isValidDay(int nYear, int nMonth, int nDay)
{
//年月必须有效
if(!isValidYear(nYear) || !isValidMonth(nMonth))
return FALSE;

//日期不能大于当月的天数
if(nDay <