#include <stdio.h>
#include <stdlib.h>
struct date_rec
{
int day;
int month;
int year;
};
typedef struct date_rec date_rec;
void input_date(struct date_rec *current_date);
void increment_date(struct date_rec *current_date);
void output_date(struct date_rec *current_date);
int main()
{
date_rec current_date ;
input_date(current_date);
increment_date(current_date);
output_date(current_date);
}
void input_date(struct date_rec *current_date)
{
printf("请输入当前日期(年 月 日)");
scanf("%d%d%d",¤t_date.year,¤t_date.month,¤t_date.day);
}
void increment_date(struct date_rec *current_date)
{
if(current_date.day >0 && current_date.day <=27)
{
current_date.day += 1;
}
if(current_date.day == 28)
{
if(current_date.month == 2)
{
if((current_date.year %4 == 0 && current_date.year %100 != 0)||(current_date.year %400 == 0))
{
current_date.day+=1;
}
else
{
current_date.day = 1;
current_date.month = 3;
}
}
else
{
current_date.day +=1;
}
}
if(current_date.day == 29)
{
if(month == 2)
{
current_date.month = 3;
current_date.day = 1;
}
else
{
current_date.day +=1;
}
}
if( current_date.day == 30)
{
if(current_date.month == 4||current_date.month == 6||current_date.month == 9 ||current_date.month == 11)
{
current_date.month += 1;
current_date.day = 1;
}
else
{
current_date.day+=1;
}
}
if(current_date.day == 31)
{
if(current_date.day == 12)
{
current_date.day = 1;
current_date.month = 1;
}
else
{
current_date.day = 1;
current_date.month +=1;
}
}
}
void output_date(struct date_rec *current_date)
{
printf("当前日期:%d年%d月%d日!",current_date.year,current_date.month,current_date.day);
}
#include <stdio.h>
#include <stdlib.h>
struct date_rec
{
int day;
int month;
int year;
};
typedef struct date_rec date_rec;
void input_date(struct date_rec *current_date);
void increment_date(struct date_rec *current_date);
void output_date(struct date_rec *current_date);
int main()
{
date_rec current_date ;
input_date(¤t_date);
increment_date(¤t_date);
output_date(¤t_date);
}
void input_date(struct date_rec *current_date)
{
printf("请输入当前日期(年 月 日)");
scanf("%d%d%d",¤t_date->year,¤t_date->month,¤t_date->day);
}
void increment_date(struct date_rec *current_date)
{
if(current_date->day >0 && current_date->day <=27)
{
current_date->day += 1;
}
if(current_date->day == 28)
{
if(current_date->month == 2)
{
if((current_date->year %4 == 0 && current_date->year %100 != 0)||(current_date->year %400 == 0))
{
current_date->day+=1;
}
else
{
current_date->day = 1;
current_date->month = 3;
}
}
else
{
current_date->day +=1;
}
}
else if(current_date->day == 29)
{
if(current_date->month == 2)
{
current_date->month = 3;
current_date->day = 1;
}
else
{
current_date->day +=1;
}
}
else if( current_date->day == 30)
{
if(current_date->month == 4||current_date->month == 6||current_date->month == 9 ||current_date->month == 11)
{
current_date->month += 1;
current_date->day = 1;
}
else
{
current_date->day+=1;
}
}
else
{
if(current_date->month == 12)
{
current_date->day = 1;
current_date->month = 1;
current_date->year += 1;
}
else
{
current_date->day = 1;
current_date->month +=1;
}
}
}
void output_date(struct date_rec *current_date)
{
printf("当前日期:%d年%d月%d日!",current_date->year,current_date->month,current_date->day);
}
这个改动应该是最小的。12月31号需要增加年份啊。还有要正确使用if else语句啊。
#include
#include
struct date_rec
{
int day;
int month;
int year;
};
typedef struct date_rec date_rec;
void input_date(struct date_rec *current_date);
void increment_date(struct date_rec *current_date);
void output_date(struct date_rec *current_date);
int main()
{
date_rec current_date;
input_date(¤t_date);
increment_date(¤t_date);
output_date(¤t_date);
}
void input_date(struct date_rec *current_date)
{
printf("请输入当前日期(年 月 日)");
scanf("%d%d%d",¤t_date->year,¤t_date->month,¤t_date->day);
}
void increment_date(struct date_rec *current_date)
{
if(current_date->day >0 && current_date->day <=27)
{
current_date->day += 1;
}
if(current_date->day == 28)
{
if(current_date->month == 2)
{
if((current_date->year %4 == 0 && current_date->year %100 != 0)||(current_date->year %400 == 0))
{
current_date->day+=1;
}
else
{
current_date->day = 1;
current_date->month = 3;
}
}
else
{
current_date->day +=1;
}
}
if(current_date->day == 29)
{
if(current_date->month == 2)
{
current_date->month = 3;
current_date->day = 1;
}
else
{
current_date->day +=1;
}
}
if( current_date->day == 30)
{
if(current_date->month == 4||current_date->month == 6||current_date->month == 9 ||current_date->month == 11)
{
current_date->month += 1;
current_date->day = 1;
}
else
{
current_date->day+=1;
}
}
if(current_date->day == 31)
{
if(current_date->day == 12)
{
current_date->day = 1;
current_date->month = 1;
}
else
{
current_date->day = 1;
current_date->month +=1;
}
}
}
void output_date(struct date_rec *current_date)
{
printf("当前日期:%d年%d月%d日!",current_date->year,current_date->month,current_date->day);
}
你函数传的是指针,那么调用成员变量要用-> 然后主函数里面要通过&传地址。
#include
#include
struct date_rec
{
int day;
int month;
int year;
};
typedef struct date_rec date_rec;
void input_date(struct date_rec *current_date);
void increment_date(struct date_rec *current_date);
void output_date(struct date_rec *current_date);
int main()
{
date_rec current_date ;
input_date(¤t_date);
increment_date(¤t_date);
output_date(¤t_date);
}
void input_date(struct date_rec *current_date)
{
printf("请输入当前日期(YYYY年MM月DD日)");
scanf("%d%d%d",¤t_date->year,¤t_date->month,¤t_date->day);
}
void increment_date(struct date_rec *current_date)
{
if(current_date->day >0 && current_date->day <=27)
{
current_date->day += 1;
}
if(current_date->day == 28)
{
if(current_date->month == 2)
{
if((current_date->year %4 == 0 && current_date->year %100 != 0)||(current_date->year %400 == 0))
{
current_date->day+=1;
}
else
{
current_date->day = 1;
current_date->month = 3;
}
}
else
{
current_date->day +=1;
}
}
if(current_date->day == 29)
{
if(current_date->month == 2)
{
current_date->month = 3;
current_date->day = 1;
}
else
{
current_date->day +=1;
}
}
if( current_date->day == 30)
{
if(current_date->month == 4||current_date->month == 6||current_date->month == 9 ||current_date->month == 11)
{
current_date->month += 1;
current_date->day = 1;
}
else
{
current_date->day+=1;
}
}
if(current_date->day == 31)
{
if(current_date->day == 12)
{
current_date->day = 1;
current_date->month = 1;
}
else
{
current_date->day = 1;
current_date->month +=1;
}
}
}
void output_date(struct date_rec *current_date)
{
printf("当前日期+1后:%d年%d月%d日!",current_date->year,current_date->month,current_date->day);
}
在你的基础上改对了,顺便求个分。。。。
原程序的主要问题有:1、结构体类型指针访问结构体成员的方法不对;2、分支结构的用法不完全正确,导致逻辑出现错误;3、个别地方考虑未完善(如一年最后一天,应考虑年份的递增)。下面是做了修改并通过运行的代码(因题目限制使用指针传递参数,故采用指针方式处理,否则直接采用引用传递更简单)。
#include
#include
struct date_rec
{
int day;
int month;
int year;
};
typedef struct date_rec date_rec;
void input_date(struct date_rec *current_date);
void increment_date(struct date_rec *current_date);
void output_date(struct date_rec *current_date);
int main()
{
date_rec current_date;
input_date(¤t_date);
increment_date(¤t_date);
output_date(¤t_date);
return 0;
}
void input_date(struct date_rec *current_date)
{
printf("请输入当前日期(年 月 日)");
scanf("%d%d%d",&(current_date->year),&(current_date->month),&(current_date->day));
}
void increment_date(struct date_rec *current_date)
{
if(current_date->day >0 && current_date->day <=27)
{
current_date->day += 1;
}
else if(current_date->day == 28)
{
if(current_date->month == 2)
{
if((current_date->year %4 == 0 && current_date->year %100 != 0)||(current_date->year %400 == 0))
{
current_date->day+=1;
}
else
{
current_date->day = 1;
current_date->month = 3;
}
}
else
{
current_date->day +=1;
}
}
else if(current_date->day == 29)
{
if(current_date->month == 2)
{
current_date->month = 3;
current_date->day = 1;
}
else
{
current_date->day +=1;
}
}
else if( current_date->day == 30)
{
if(current_date->month == 4||current_date->month == 6||current_date->month == 9 ||current_date->month == 11)
{
current_date->month += 1;
current_date->day = 1;
}
else
{
current_date->day+=1;
}
}
else if(current_date->day == 31)
{
if(current_date->month == 12)
{
current_date->year += 1;
current_date->day = 1;
current_date->month = 1;
}
else
{
current_date->day = 1;
current_date->month +=1;
}
}
}
void output_date(struct date_rec *current_date)
{
printf("当前日期:%d年%d月%d日!",current_date->year,current_date->month,current_date->day);
}