кто-то может помочь, Я пытаюсь написать код, программу для чтения символа и вывода 1 для нижнего символа, 2 для верхнего и -1, если это не буква. Программа должна продолжать работать до тех пор, пока на входе не будет ноль.
Я не могу понять, почему следующий код; сохранение печати -1 во всех ситуациях блока «if»;
Я пробую двумя способами:
первая попытка:
#include <stdio.h>
int main() {
char entrada = 'x';
while (entrada != 48) {
scanf("%c", &entrada);
if (entrada > 96 && entrada < 123) {
printf("%d\n", 1);
} else if (entrada > 64 && entrada < 91) {
printf("%d\n", 2);
} else {
printf("%d\n", -1);
}
}
return 0;
}
вторая попытка:
#include<stdio.h>
int main() {
char entrada = 'x';
int teste;
while (entrada != 48){
scanf("%c", &entrada);
if (entrada > 96 && entrada <123){
printf("%d\n", 1);
continue;
} else {
if (entrada > 64 && entrada < 91) {
printf("%d\n", 2);
continue;
} else if (entrada <= 64 || (entrada >= 91 && entrada <= 96)
|| entrada >= 123 ) {
printf("%d\n", -1);
continue;
}
}
}
return 0;
}





Когда ваша программа (любая из них) выполняет scanf("%c", &entrada);, scanf считывает один символ.
Когда вы вводите «a» и нажимаете Enter или Return, в вашу программу отправляются два символа: «a» и символ новой строки.
Когда ваша программа читает «а», она печатает «1».
Когда ваша программа считывает символ новой строки, она печатает «-1».
Итак, пока вы вводите символ и нажимаете Enter или Return, ваша программа печатает два числа: одно для первого символа и одно для символа новой строки.
Спасибо ! Теперь я мог решить, я просто ввел последний ввод Else! = 10 (новая строка)
Никогда не используйте 64, 91, 96, 123 или другие числа для символов, если вы фактически не реализуете код, который определяет или преобразует наборы символов. Ее трудно читать, легко ошибиться и, разумеется, она непереносима. Даже если вы предполагаете использование ASCII, используйте такой код, как
entrada >= 'a' && entrada <= 'z'. Как правило, вам также следует включать<ctype.h>и использоватьislower((unsigned char) entrada)иisupper((unsigned char) entrada)вместоentrada >= 'a' && entrada <= 'z'.