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

时间:2018-06-06 05:52:13

标签: c if-statement

我有一个编程课程,目前有一个功课,根据用户在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;
}

1 个答案:

答案 0 :(得分:0)

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

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

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