三个输入字符的错误比较
Incorrect comparison of three input characters
我有以下程序,它比较三个字符并输出它们的比较结果。
当我 运行 程序时,每当我输入三个整数时,只有最后一个 else (所有首字母都不同)语句 运行s 正确地满足了它的条件。但是,对于其他条件,只有最后一个else if(首尾首字母相同)运行s。我在添加花括号后也检查了它,但没有任何变化。
#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;
}
您发布的代码工作正常,只要您不在输入首字母之间输入任何白色space字符!(我用AAA
、AAB
、ABA
、ABB
和 ABC
,都给出了正确的答案。)
但是,如果您要在首字母之间输入 spaces(即输入 A A B
),则 space 字符将被读取为输入(这就是 %c
格式说明符有效)所以,在那种情况下,三个首字母 实际上 是 A
、
和 A
– 给出一个看似答案不正确。
要在输入之间跳过(可选)白色space 字符,只需在每个 %c
格式说明符之间添加一个 space,如下所示:
scanf("%c %c %c", &ch1, &ch2, &ch3);
我有以下程序,它比较三个字符并输出它们的比较结果。
当我 运行 程序时,每当我输入三个整数时,只有最后一个 else (所有首字母都不同)语句 运行s 正确地满足了它的条件。但是,对于其他条件,只有最后一个else if(首尾首字母相同)运行s。我在添加花括号后也检查了它,但没有任何变化。
#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;
}
您发布的代码工作正常,只要您不在输入首字母之间输入任何白色space字符!(我用AAA
、AAB
、ABA
、ABB
和 ABC
,都给出了正确的答案。)
但是,如果您要在首字母之间输入 spaces(即输入 A A B
),则 space 字符将被读取为输入(这就是 %c
格式说明符有效)所以,在那种情况下,三个首字母 实际上 是 A
、
和 A
– 给出一个看似答案不正确。
要在输入之间跳过(可选)白色space 字符,只需在每个 %c
格式说明符之间添加一个 space,如下所示:
scanf("%c %c %c", &ch1, &ch2, &ch3);