C++ 为什么当我进入三月或七月时,我的代码没有给我正确的输入?

C++ 为什么当我进入三月或七月时,我的代码没有给我正确的输入?,c++,c,visual-studio,visual-studio-2012,C++,C,Visual Studio,Visual Studio 2012,我是新来的,需要你帮我写这段代码。我必须计算三月和七月的平均温度。阵列位于单独的文件夹中。这是我的密码。谢谢 float sumofArray = 0; int j = 0; char Month; float AverageMeanMarch = 0; float AverageMeanJuly = 0; printf("Please type the month for average mean temperature. (March/July) \n"); scanf_s("%c",

我是新来的,需要你帮我写这段代码。我必须计算三月和七月的平均温度。阵列位于单独的文件夹中。这是我的密码。谢谢

float sumofArray = 0;
int j = 0;
char Month;

float AverageMeanMarch = 0;
float AverageMeanJuly = 0;

printf("Please type the month for average mean temperature. (March/July) \n");
scanf_s("%c", &Month);

if (Month == "March" && Month == "march") 
{
    for (j = 0; j < 31; j++)
        sumofArray = sumofArray + MeanMarch[j];
    AverageMeanMarch = sumofArray / 31;


    printf("The average mean temperature for the month of March is %.2f. \n", AverageMeanMarch);
} 

else if (Month == "July" && Month == "july")
{
    for (j = 0; j < 31; j++)
        sumofArray = sumofArray + MeanJuly[j];
    AverageMeanJuly = sumofArray / 31;

    printf("The average mean temperature for the month of March is %.2f. \n", AverageMeanJuly);
}

else
{
    printf("Invalid Month \n");
}
float sumofArray=0;
int j=0;
炭月;
float averageAnmarch=0;
float averageAnjuly=0;
printf(“请键入平均温度的月份(三月/七月)\n”);
扫描单位(“%c”和月份);
如果(月份=“三月”和月份=“三月”)
{
对于(j=0;j<31;j++)
sumofArray=sumofArray+MeanMarch[j];
AverageAnmarch=sumofArray/31;
printf(“3月份的平均温度为%.2f.\n”,AverageAnmarch);
} 
否则如果(月份=“7月”和月份=“7月”)
{
对于(j=0;j<31;j++)
sumofArray=sumofArray+平均7月[j];
AverageAnjuly=sumofArray/31;
printf(“3月份的平均温度为%.2f.\n”,AverageAnjuly);
}
其他的
{
printf(“无效月份”);
}

您使用了错误的条件运算符,而不是&&,您希望使用| |-因为在区分大小写的生态系统中,字符串不能同时是“string”和“string”

而且,您不能使用c中的“==”操作符进行字符串比较,因为您只能进行指针比较,您需要的是“strcmp(str1,str2)”,如果字符串匹配,则该操作符的输出为0

因此,您的代码应该是:

if (strcmp(Month,"March") == 0 || strcmp(Month,"march") == 0) 
七月也要做同样的改变

而且,正如有人在评论中提到的,您将“Month”声明为单个字符,您可以将其初始化为足以容纳一个月的char[]或char*,并使用malloc相应地分配内存

此外,您还使用了带有%c的scanf作为参数,这意味着只能从用户输入中检索一个字符


有关更多信息,请参阅:

您没有将月份作为数组。。您将月份作为存储单个值的字符变量…

此外,月份被声明为单个字符,因此它永远不会包含“三月”或“三月”。您忽略了
month
被声明为
char-month以及其他几个问题。希望,一旦OP得到了一个MCVE要编译,剩下的问题就更少了。是的,我的错误假设,编辑成了答案。1)
char Month-->
字符月[16/*您需要的大小*/]2)
scanf_s(“%c”和月份)-->
scanf_s(“%s”,第16个月)不是C++。为什么我在这里?@把字符串比较成字符数组的文字是C++ +……DIVX是的,C和C++恰好共享同一个链接器。我们中的许多人不相信向后兼容。C++不是java本地接口或p/Unjk的C。为什么C/C#或C/Java(使用令人厌恶的斜杠语法)没有问题?@ZackLee您的代码中有太多缺陷,显然您需要从一开始就学习C。有一个很棒的话题可以帮助你: