Возможно, вам необходимо проверить, не отсканировал ли ваш scanf.
int main()
{
int num1,num2;
printf("Enter two numbers:");
if(scanf("%d,%d",&num1,&num2) == 2)
{
switch(num1 > num2)
{
case 0:
printf("Number1 is greater than Number2");
break;
case 1:
printf("Number2 is greater than Number1");
break;
}
switch(num1 == num2)
{
case 0:
printf("Number1 is equal to Number2");
break;
case 1:
printf("Number1 is not equal to Number2");
break;
}
}
else
{
printf("Scanf failed!!!\n");
}
}
Обычно при тестировании некоторых идей лучше избегать ввода данных пользователем.
int main()
{
int num1,num2;
for(int index =0; index < 50; index++)
{
num1 = rand() % 50;
num2 = rand() % 50;
printf("Numbers : %d, %d - ", num1, num2);
switch(num1 > num2)
{
case 1:
printf("Number1 is greater than Number2\n");
break;
case 0:
printf("Number2 is greater than Number1\n");
break;
}
switch(num1 == num2)
{
case 1:
printf("Number1 is equal to Number2\n");
break;
case 0:
printf("Number1 is not equal to Number2\n");
break;
}
}
}
Тогда легко заметить, что 1 и 0 необходимо поменять местами, так как ноль означает ложь, а 1 true;
switch(num1 > num2)
{
case 0:
printf("Number1 is greater than Number2");
Так что, если num1 > num2
- истина, то результатом этого логического выражения будет 1, а не ноль
Но у вас также есть много других логических ошибок (не совсем программирование - просто простая логика c). Если num1> num2 id не true
, это означает, что num2 больше, чем num1. Это также может быть равно;
Таким образом, вы должны изменить текст в переключателе на:
case 0:
printf("Number2 is greater than Number1 or they are equal\n");
break;