C 语言的日历编程项目。对于新手来说太复杂了

标签 c calendar

    #define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h>

void main()
{
    int numdays, month, day, year = 1;


    while (year > 0)`enter code here`
    {
        printf("Enter Month:  ");
        scanf("%d", &month);
        printf("Enter Day:  ");
        scanf("%d", &day);
        printf("Enter Year:  ");
        scanf("%d", &year);

        numdays = ((year - 1) * 365 + ((year - 1) / 4) - ((year - 1) / 100) + ((year - 1) / 400)); // how many days including exceptions

        if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0))        //check if leapyear
        {
            if (month = 1)                          // January 
                numdays = numdays;
            if (month = 2)                          // February 
                numdays = numdays + 31;
            if (month = 3)                          // March 
                numdays = numdays + 28 + 31 + 1;
            if (month = 4)                          // April 
                numdays = numdays + 31 + 28 + 31 + 1;
            if (month = 5)                          // May 
                numdays = numdays + 30 + 31 + 28 + 31 + 1;
            if (month = 6)                          // June 
                numdays = numdays + 31 + 30 + 31 + 28 + 31 + 1;
            if (month = 7)                          // July 
                numdays = numdays + 30 + 31 + 30 + 31 + 28 + 31 + 1;
            if (month = 8)                          // August 
                numdays = numdays + 31 + 30 + 31 + 30 + 31 + 28 + 31 + 1;
            if (month = 9)                          // September 
                numdays = numdays + 31 + 31 + 30 + 31 + 30 + 31 + 28 + 31 + 1;
            if (month = 10)                         // October                      
                numdays = numdays + 30 + 31 + 31 + 30 + 31 + 30 + 31 + 28 + 31 + 1;
            if (month = 11)                         // November
                numdays = numdays + 31 + 30 + 31 + 31 + 30 + 31 + 30 + 31 + 28 + 31 + 1;
            if (month = 12)                         // December
                numdays = numdays + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30 + 31 + 28 + 31 + 1;
        }
        else
        {
            if (month = 1)                          // January 
                numdays = numdays;
            if (month = 2)                          // February 
                numdays = numdays + 31;
            if (month = 3)                          // March 
                numdays = numdays + 28 + 31;
            if (month = 4)                          // April 
                numdays = numdays + 31 + 28 + 31;
            if (month = 5)                          // May 
                numdays = numdays + 30 + 31 + 28 + 31;
            if (month = 6)                          // June 
                numdays = numdays + 31 + 30 + 31 + 28 + 31;
            if (month = 7)                          // July 
                numdays = numdays + 30 + 31 + 30 + 31 + 28 + 31;
            if (month = 8)                          // August 
                numdays = numdays + 31 + 30 + 31 + 30 + 31 + 28 + 31;
            if (month = 9)                          // September 
                numdays = numdays + 31 + 31 + 30 + 31 + 30 + 31 + 28 + 31;
            if (month = 10)                         // October                      
                numdays = numdays + 30 + 31 + 31 + 30 + 31 + 30 + 31 + 28 + 31;
            if (month = 11)                         // November
                numdays = numdays + 31 + 30 + 31 + 31 + 30 + 31 + 30 + 31 + 28 + 31;
            if (month = 12)                         // December
                numdays = numdays + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30 + 31 + 28 + 31;
            {
                printf("%d %d %d\n", month, day, year);
            }
            int daycode = numdays % 7;
            switch (daycode)
            {
            case 0:
                printf("Sunday\n");
                break;

            case 1:
                printf("Monday\n");
                break;

            case 2:
                printf("Tuesday\n");
                break;

            case 3:
                printf("Wednesday\n");
                break;

            case 4:
                printf("Thursday\n");
                break;

            case 5:
                printf("Friday\n");
                break;

            case 6:
                printf("Saturday\n");
                break;

            default: printf("unexpected error (daycode case) daycode = %d", daycode);
                break;`enter code here`
            }

        }

    }

}

我需要做的是获取输出以读取用户输入的给定日期的日期。但是,我不明白为什么我的月份输入被锁定在 12 点。任何帮助表示赞赏。

最佳答案

正如 MrPickles 的评论中提到的,主要问题是您混淆了赋值运算符 = 与比较运算符 ==。前者 (=) 将左侧的变量设置为右侧的变量,而 == 检查左右两侧是否相等。您的最后一条 if 语句将月份设置为 12,而不是检查它是否为 12。

另一个大问题是打印解决方案的代码位于 else 语句内,因此如果是闰年,它根本不会运行。确保将其移出。

最后,您实际上从未在代码中使用月份的。您需要输入类似 numdays+=day; 的内容。

除此之外,您可以使代码更短,但我认为除此之外这是正确的。

关于C 语言的日历编程项目。对于新手来说太复杂了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35738648/

相关文章:

android - 事件时区值

python - 解析 hh :mm in Python

java - 了解 java.util.Calendar WEEK_OF_YEAR

c++ - 静态分配的内存在其范围结束后会发生什么?

c - 为什么我在 C 语言的 LinkedList 插入方法中遇到段错误

c - STM32 USB VCP(虚拟串口)

java - 从 Calendar 对象获取格式化日期对象

C 编程 - 复制文件缓冲区并写入文件

c - 结构变量不会因赋值而改变

iOS 9 Beta 5 - 日历隐私访问警报未显示在 iPhone 上,但显示在模拟器上