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

时间:2015-12-19 07:05:37

标签: c++ c visual-studio visual-studio-2012

我是新来的,需要帮助我的这个代码。我必须计算3月和7月的平均温度。这些数组位于一个单独的文件夹中。这是我的代码。感谢

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");
}

2 个答案:

答案 0 :(得分:2)

您要使用错误的条件运算符,而不是&amp;&amp;,您要使用|| - 因为字符串不能同时是&#34;字符串&#34;和&#34;字符串&#34;在一个区分大小的生态系统中。

此外,您无法与&#39; ==&#39;进行字符串比较。运算符在c 中,通过使用你只进行指针比较,你想要的是&#34; strcmp(str1,str2)&#34;,如果字符串匹配则输出为0

所以,你的代码应该是:

if (strcmp(Month,"March") == 0 || strcmp(Month,"march") == 0) 

并对7月进行相同的更改。

而且,正如评论中提到的那样,你宣布了“月”和“#39;作为单个字符,您要么将其初始化为char [],足以容纳一个月或char *,并使用malloc相应地分配内存。

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

有关其他信息,请参阅:strcmp

答案 1 :(得分:0)

你没有将月份作为一个数组..你将月份作为一个char变量来存储单个值......