#c #logic
#c #Логические
Вопрос:
Спасибо, что помогли мне, вот раздел о моем коде.
printf("Thank you, now please enter the logic gate");
scanf("%s", amp;C);
if (C == 'AND')
{
if (A == 1 amp;amp; B == 1)
{
(A amp;amp; B == 1);
printf("You have chosen the AND logic gate n");
printf("%dn", A);
}
else
{
printf("You have chosen the AND logic gate n");
A = 0;
printf("%dn", A);
}
}
Я действительно смущен тем, как я буду хранить входные данные с более чем одним символом. Например, «И» или что-то в этом роде.
Кажется, что мой код просто не вводит ни один из операторов IF, любая помощь очень ценится.
Комментарии:
1. Что такое
C
? Для%s
спецификатора вам нужен массивchar
, а не адрес одногоchar
. Кроме того, это,'AND'
вероятно, не то, что вы думаете — это не строка, а anint
. Обычно вы используете только одинарные кавычки с одним символом внутри (чтобы получить значение этого символа как anint
). Используйте двойные кавычки для строкового литерала и сравните сstrcmp()
или аналогичным.2. Строка
(A amp;amp; B == 1);
ничего не делает, пожалуйста, соблюдайте предупреждения компилятора.3. Я предполагаю, что
scanf("%s", amp;C);
так и должно бытьscanf("%s", C);
, но вы не разместили достаточного количества кода. Я думаю, что ваша главная проблема заключается не в логических элементах, а в базовом синтаксисе C.
Ответ №1:
- Сначала используйте массив символов для чтения типа логического элемента
char str[10]; scanf("%s", str)
- Затем сравните строку как таковую
if (!strcmp(str, "AND")) { // matched }
Ответ №2:
Ваш код вообще компилируется? Покажите ваши объявления переменных для A, B и C.
printf("Thank you, now please enter the logic gate");
scanf("%s", amp;C);
if (C == 'AND')
// '' means char, you most likely want string here
// so you need to use strncmp() to compare strings
if (A == 1 amp;amp; B == 1)
{
(A amp;amp; B == 1);
// ^ This is not a valid syntax for comparing values