微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c语言10-2

1、last day  (错误程序)

#include <stdio.h>

void lastday(int *y, int *m, int *d)
{
    if(*d > 1)
    {
        *d -= 1;
    }

    if(*d == 1 && *m == 2 || *m == 4 || *m == 6 || *m == 9 || *m == 11)  // 这种写法不正确,需要将逻辑或运算符用括号括起来
    {
        *d = 31;
        *m -= 1;
    }
    
    if(*d == 1 && *m == 1)
    {
        *d = 31;
        *m = 12;
        *y -= 1;
    }
    
    if(*d == 1 && *m == 5 || *m == 7 || *m == 10 || *m == 12)
    {
        *d = 30;
        *m -= 1;
    }
    
    
    if(*d == 1 && *m == 3)
    {
        if(*y % 4 == 0 || *y % 400 == 0 && *y % 100 != 0)
        {
            *d = 29;
            *m -= 1;
        }
        else
        {
            *d = 28;
            *m -= 1;
        }
    }
}

int main(void)
{
    int year, month, day;
    puts("please input three integers.");
    printf("year = "); scanf("%d", &year);
    printf("month = "); scanf("%d", &month);
    printf("day = "); scanf("%d", &day);
    
    printf("\ntoday: %d-%d-%d\n",year, month, day);
    
    lastday(&year, &month, &day);
    
    printf("lastday: %d-%d-%d\n", year, month, day);
    
    return 0;
}

 

 ↓

修改程序

#include <stdio.h>

void lastday(int *y, int *m, int *d)
{
    if(*d > 1)
    {
        *d -= 1;
    }

    if(*d == 1 && (*m == 2 || *m == 4 || *m == 6 || *m == 9 || *m == 11))
    {
        *d = 31;
        *m -= 1;
    }
    
    if(*d == 1 && *m == 1)
    {
        *d = 31;
        *m = 12;
        *y -= 1;
    }
    
    if(*d == 1 && (*m == 5 || *m == 7 || *m == 10 || *m == 12))
    {
        *d = 30;
        *m -= 1;
    }
    
    
    if(*d == 1 && *m == 3)
    {
        if((*y % 4 == 0 || *y % 400 == 0) && *y % 100 != 0)
        {
            *d = 29;
            *m -= 1;
        }
        else
        {
            *d = 28;
            *m -= 1;
        }
    }
}

int main(void)
{
    int year, month, day;
    puts("please input three integers.");
    printf("year = "); scanf("%d", &year);
    printf("month = "); scanf("%d", &month);
    printf("day = "); scanf("%d", &day);
    
    printf("\ntoday: %d-%d-%d\n",year, month, day);
    
    lastday(&year, &month, &day);
    
    printf("lastday: %d-%d-%d\n", year, month, day);
    
    return 0;
}

 

2、tomorrow

#include <stdio.h>

void tomo(int *y, int *m, int *d)
{
    if(*m == 12)
    {
        if(*d < 31)
            *d += 1;
        else
            {
                *d = 1;
                *m = 1;
                *y += 1;
            }
        return;
    }
    if(*m == 1 || *m == 3 || *m == 5 || *m == 7 || *m == 8 || *m == 10)
    {
        if(*d < 31)
            *d+=1;
        else
            {
                *d = 1;
                *m += 1;
            }
        return;
    }

    if(*m == 4 || *m == 6 || *m == 9 || *m == 11)
    {
        if(*d < 30)
            *d += 1;
        else
            {
                *d = 1;
                *m += 1;
            }
        return;
    }
    if(*m == 2 && ((*y % 4 == 0 || *y % 400 == 0) && *y % 100 != 0))
    {
        if(*d < 29)
            *d += 1;
        else
        {
            *d = 1;
            *m += 1;
        }
        return;
    }
    if(*m == 2 && ((*y % 4 != 0 && *y % 400 != 0) || *y % 100 == 0))
    {
        if(*d < 28)
            *d += 1;
        else
        {
            *d = 1;
            *m += 1;
        }
        return;
    }
}

int main(void)
{
    int year, month, day;
    puts("please input three integers.");
    printf("year = "); scanf("%d", &year);
    printf("month = "); scanf("%d", &month);
    printf("day = "); scanf("%d", &day);
    
    printf("\ntoday: %d-%d-%d\n", year, month, day);
    
    tomo(&year, &month, &day);
    
    printf("\ntomorrow: %d-%d-%d\n", year, month, day);
    
    return 0;
}

 

2、

#include <stdio.h>

void tomor(int *y, int *m, int *d)
{
    if(*m == 1 || *m == 3 || *m == 5 || *m == 7 || *m == 8 || *m == 10)
    {
        if(*d < 31)
            *d += 1;
        else
        {
            *d = 1;
            *m += 1;
        }
        return;
    }
    if(*m == 12)
    {
        if(*d < 31)
            *d += 1;
        else
        {
            *d = 1;
            *m = 1;
            *y += 1;
        }
        return;
    }
    if(*m == 4 || *m == 6 || *m == 9 || *m == 11)
    {
        if(*d < 30)
            *d += 1;
        else
        {
            *d = 1;
            *m += 1;
        }
        return;
    }
    if(*m == 2 && ((*y % 4 == 0 || *y % 400 == 0) && *y % 100 != 0))
    {
        if(*d < 29)
            *d += 1;
        else
        {
            *d = 1;
            *m += 1;
        }
        return;
    }
    if(*m == 2 &&((*y % 4 != 0 && *y % 400 != 0) || *y % 100 == 0))
    {
        if(*d < 28)
            *d += 1;
        else
        {
            *d = 1;
            *m += 1; 
        }
        return;
    }
}

int main(void)
{
    int year, month, day;
    puts("please input three integers.");
    printf("year = "); scanf("%d", &year);
    printf("month = "); scanf("%d", &month);
    printf("day = "); scanf("%d", &day);
    
    printf("\ntoday: %d-%d-%d\n", year, month, day);
    tomor(&year, &month, &day);
    printf("\ntomorrow: %d-%d-%d\n", year, month, day);
    
    return 0;
}

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐