根据在c程序中输入的月份和日期显示假日名称

根据在c程序中输入的月份和日期显示假日名称,c,if-statement,C,If Statement,我有一个编程类,目前有一个家庭作业,根据用户在C程序中输入的月份和日期显示假日名称 每当我编译并运行程序时,都没有错误。但是,如果我输入任何月份并按enter键,它只返回新年,而不要求输入日期。它应该要求同时显示月份和日期,然后显示相应的假日,但它似乎不起作用 我想知道您是否可以提供正确语法的输入 下面是我试图创建的代码: #include <stdio.h> int main () { char m; int d; printf("Enter Mont

我有一个编程类,目前有一个家庭作业,根据用户在C程序中输入的月份和日期显示假日名称

每当我编译并运行程序时,都没有错误。但是,如果我输入任何月份并按enter键,它只返回新年,而不要求输入日期。它应该要求同时显示月份和日期,然后显示相应的假日,但它似乎不起作用

我想知道您是否可以提供正确语法的输入

下面是我试图创建的代码:

#include <stdio.h>

int main () {

    char m;
    int d;

    printf("Enter Month: ");
    scanf("%c", &m);
    printf("Enter Date: ");
    scanf("%d",&d);

    if (m ="January" && d == 1)
        printf("New year's day ");
    else if (m ="July" && d ==1 )
        printf("Canada day ");
    else if (m = "December" && d ==25)
        printf("Christmas day ");
    else
        printf("%c %d does not correspond to a fixed-date holiday ", m, d);

    return 0;
}
#包括
int main(){
charm;
int d;
printf(“输入月份:”);
scanf(“%c”、&m);
printf(“输入日期:”);
scanf(“%d”、&d);
如果(m=“一月”&&d==1)
printf(“元旦”);
否则,如果(m=“7月”&&d==1)
printf(“加拿大日”);
如果(m=“12月”&&d==25)发生其他情况
printf(“圣诞节”);
其他的
printf(“%c%d不对应于固定日期假日”,m,d);
返回0;
}

您必须在程序中更改的内容

1-不要使用
char
类型来存储
字符串
,您可以使用字符数组。
2-
=
不是比较运算符,而是赋值运算符,因此您应该使用一个函数来比较两个字符串并返回不同字符数(如果两个字符串相同,则返回0)

#包括
#包括
int main()
{
charm[10];
int d;
printf(“输入月份:”);
scanf(“%s”,m);
printf(“输入日期:”);
scanf(“%d”、&d);
如果(!(strcmp(m,“一月”)&&d==1)
printf(“元旦”);
否则,如果(!(strcmp(m,“7月”)&&d==1)
printf(“加拿大日”);
如果(!(strcmp(m,12月))和&d==25)
printf(“圣诞节”);
其他的
printf(“%s%d不对应于固定日期假日”,m,d);
返回0;
}

我认为你应该回到你正在阅读的任何教科书或教程,重新开始。你展示的代码有很多问题,告诉我你是在猜测而不是实际知道任何东西。请仔细阅读以下几对代码的区别:键入
char
和类似“一月”的内容<代码>=和
=
。比较字符串和
==
。还可以加入与
scanf()
相关的所有问题的乐趣
char m
太短,无法容纳非空字符串。让我试着让它更简单一些,试着问自己一些问题。1) 为什么两个比较语句在if块中看起来不同。2) 它是不是真的不需要输入,或者是。试着一行一行地遵循你的指导原则,你会发现你的错误——你太棒了@Siraj感谢您解释和更正语法。我在编码方面还是个新手,这真的很有帮助。我们还没有解决strcmp问题,所以我不知道。我感谢你的意见。:)我很高兴能帮助你。
#include <stdio.h>
#include<string.h>

int main()
{
    char m[10];
    int d;
    printf("Enter Month: ");
    scanf("%s", m);
    printf("Enter Date: ");
    scanf("%d", &d);

    if ( !(strcmp(m, "January")) && d == 1)
        printf("New year's day ");
    else if (!(strcmp(m, "July")) && d == 1)
        printf("Canada day ");
    else if (!(strcmp(m, "December")) && d == 25)
        printf("Christmas day ");
    else
        printf("%s %d does not correspond to a fixed-date holiday ", m, d);

    return 0;
}