• 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("
    today: %d-%d-%d
    ",year, month, day);
        
        lastday(&year, &month, &day);
        
        printf("lastday: %d-%d-%d
    ", 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("
    today: %d-%d-%d
    ",year, month, day);
        
        lastday(&year, &month, &day);
        
        printf("lastday: %d-%d-%d
    ", 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("
    today: %d-%d-%d
    ", year, month, day);
        
        tomo(&year, &month, &day);
        
        printf("
    tomorrow: %d-%d-%d
    ", 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("
    today: %d-%d-%d
    ", year, month, day);
        tomor(&year, &month, &day);
        printf("
    tomorrow: %d-%d-%d
    ", year, month, day);
        
        return 0;
    }

  • 相关阅读:
    洛谷 P2515 [HAOI2010]软件安装
    洛谷 P3818 小A和uim之大逃离 II
    洛谷 P3155 [CQOI2009]叶子的染色
    洛谷 P1414 又是毕业季II
    NOI 2014 起床困难综合征
    NOI 2001 反正切函数的应用
    CF1311E Construct the Binary Tree
    小技巧—卡格式
    CF817F MEX Queries
    洛谷 U138573 序章&第一章 黑暗时代(eviltime)
  • 原文地址:https://www.cnblogs.com/liujiaxin2018/p/14824945.html
Copyright © 2020-2023  润新知