c语言 结构体11111111111111111111111

图片说明

#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",&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;
    }

    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(&current_date);
    increment_date(&current_date);
    output_date(&current_date);
}

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;
    }

    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(&current_date);
increment_date(&current_date);
output_date(&current_date);
}

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;
}

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(&current_date);
increment_date(&current_date);
output_date(&current_date);
}

void input_date(struct date_rec *current_date)
{
printf("请输入当前日期(YYYY年MM月DD日)");
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;
}

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(&current_date);
increment_date(&current_date);
output_date(&current_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);
}