C 三个输入字符的比较不正确

C 三个输入字符的比较不正确,c,if-statement,dev-c++,C,If Statement,Dev C++,我有下面的程序,它比较三个字符并输出它们的比较结果 当我运行程序时,每当我输入三个整数时,只有最后一个else(所有的首字母都不同)语句根据其条件正确运行。但是,对于其他条件,只有最后一个else if(第一个和最后一个首字母相同)运行。我还检查了它后,添加了大括号,但没有改变 #include<stdio.h> #include<stdlib.h> int main() { char ch1, ch2, ch3; pr

我有下面的程序,它比较三个字符并输出它们的比较结果

当我运行程序时,每当我输入三个整数时,只有最后一个else(所有的首字母都不同)语句根据其条件正确运行。但是,对于其他条件,只有最后一个else if(第一个和最后一个首字母相同)运行。我还检查了它后,添加了大括号,但没有改变

    #include<stdio.h>
    #include<stdlib.h>

    int main()
    {
    char ch1, ch2, ch3;

    printf("Enter 3 character values into ch1, ch2, and ch3: ");
    scanf("%c%c%c", &ch1, &ch2, &ch3);

    if(ch1==ch2)
    {
      if(ch2==ch3)
      printf("All initials are the same!\n");

      else
      printf("First two initials are the same!\n");
     }
 
    else if(ch2==ch3)
    {
    printf("Last two initials are the same!\n");
    }
  
    else if(ch1==ch3)
    {
    printf("First and last initials are the same!\n");
    }
  
  
    else
    {
    printf("All initials are different!\n");
    }
 
   
    system("pause");
    return 0;
    } 
#包括
#包括
int main()
{
char ch1、ch2、ch3;
printf(“在ch1、ch2和ch3中输入3个字符值:”;
scanf(“%c%c%c”、&ch1、&ch2和&ch3);
如果(ch1==ch2)
{
如果(ch2==ch3)
printf(“所有首字母都相同!\n”);
其他的
printf(“前两个首字母相同!\n”);
}
否则如果(ch2==ch3)
{
printf(“最后两个首字母相同!\n”);
}
else if(ch1==ch3)
{
printf(“首字母和末字母相同!\n”);
}
其他的
{
printf(“所有首字母都不同!\n”);
}
系统(“暂停”);
返回0;
} 

只要在输入首字母之间不输入任何空白字符,您发布的代码就可以正常工作!(我用
AAA
AAB
ABA
ABB
ABC
对它进行了测试,结果都给出了正确的回答。)

但是,如果要在首字母之间输入空格(即输入
aab
),则空格字符将作为输入读取(这就是
%c
格式说明符的工作方式),因此,在这种情况下,三个首字母实际上是
A
A
,给出的答案似乎不正确

要跳过输入之间的空白字符(可选),只需在每个
%c
格式说明符之间添加一个空格,如下所示:

scanf(“%c%c%c”、&ch1、&ch2和&ch3);

程序正在比较3个字符,而不是3个整数。是的,谢谢。这只是一个书写错误。好吧,那么你的输入、预期输出和实际输出是什么?哇。我不知道还有哪一个与哪一个if(或者你认为哪一个与哪一个相关)-这几乎肯定是一个格式化代码将有助于发现问题的情况!你的代码对我来说很好。。。只要输入的字母之间没有空格。如果这样做,则空格将作为输入字符读取。