Мы видели метод получения информации от пользователя. Может наступить время, когда нам нужно будет проинструктировать компьютер принимать решения на основе входных данных. Например, в программе викторины мы спрашиваем у пользователя ответ, а затем нам нужно проверить, правильно ли он ввел ответ. Этот процесс указания компьютерам принимать решения известен в программировании как принятие решений.

если и еще

Операторы if и else проверяют, является ли условие истинным или ложным. Если условие истинно, он выполняет определенный набор кодов, а если условие ложно, он выполняет другой набор кодов.

if (num % 2 == 0)
{
    printf("Number is even");
}
else
{
    printf("Number is odd");
}

Здесь в скобках после «если» мы указываем условие (num% 2 == 0). Оператор «if» проверяет, дает ли «число», деленное на 2, остаток 0. Если условие становится истинным, он выполняет коды между фигурными скобками, что является кодом для отображения «Число четное». Если условие становится ложным, тогда оно будет выполнять коды между фигурными скобками после else, что является кодом для отображения «Число нечетное».

если, еще и еще, если

Что, если нам нужно проверить дополнительные условия? Мы можем связать операторы if и else, используя дополнительный оператор else if.

if (num > 0) 
{
    printf("Number is positive");
}
else if (num < 0)
{
    printf("Number is negative");
}
else
{
    printf("Number is 0");
}

Здесь оператор «if» проверяет, больше ли «num» нуля. Если это правда, отображается «Число положительное». После этого он проверяет, меньше ли «число», чем 0. Если это правда, отображается «Число отрицательное». Если оба условия становятся ложными, выполняется инструкция «else» и отображается «Число равно 0». Мы можем иметь столько операторов else if, сколько захотим, в одном блоке if, else и else if.

Если в условии есть только одна строка кода, фигурные скобки указывать не обязательно. Это необязательно. Приведенный ниже код также должен работать, так как после операторов «if, else и else if» есть только одна строка кода.

if (num > 0) 
    printf("Number is positive");
else if (num < 0)
    printf("Number is negative");
else
    printf("Number is 0");

Программа расчета оценок

#include <stdio.h>
int main()
{
    float marks;
    char grade;
 
    printf("Enter marks: ");
    scanf("%f", &marks);
    
    if(marks >= 90)
    {
        grade = 'A';
    }
    else if(marks >= 80 && marks < 90)
    {
        grade = 'B';
    }
    else if(marks >= 70 && marks < 80)
    {
        grade = 'C';
    }
    else if(marks >= 60 && marks < 70)
    {
        grade = 'D';
    }
    else if(marks >= 50 && marks < 60)
    {
        grade = 'E';
    }
    else 
    {
        grade = 'F';
    }
                    
    printf("Your grade is %c", grade);
    
    return 0;
}

Здесь, после того как пользователь вводит отметки, программа проверяет, истинно ли каждое из условий в операторах if и else if. Если условие становится истинным, этот конкретный блок кода выполняется. Если ни одно из условий не выполняется, выполняется блок кода в операторе «else». С помощью этих процедур программа вычисляет оценку за введенную оценку.

Тернарный оператор

Тернарный оператор может использоваться как сокращение для операторов if и else. Требуется три операнда. Условие, за которым следует вопросительный знак, затем выражение для выполнения, если условие истинно, за которым следует двоеточие (:), и, наконец, выражение, которое нужно выполнить, если условие ложно.

printf("%s", num % 2 == 0 ? "Number is even" : "Number is odd");

Здесь, внутри printf (), после спецификатора формата«% s » у нас есть тернарный оператор, а не просто переменная. В операторе есть условие, которое проверяет, дает ли число, деленное на 2, остаток 0. Если условие становится истинным, берется выражение после вопросительного знака, то есть Число четное или еще выражение после двоеточия. берется, т.е. Число нечетное.

Программа расчета оценок может быть переписана с меньшим количеством строк кода с помощью тернарного оператора.

#include <stdio.h>
int main()
{
    float marks;
    char grade;
 
    printf("Enter marks: ");
    scanf("%f", &marks);
    
    grade = marks >= 90 ? 'A' : 
            marks >= 80 && marks < 90 ? 'B' :
            marks >= 70 && marks < 80 ? 'C' :
            marks >= 60 && marks < 70 ? 'D' :
            marks >= 50 && marks < 50 ? 'E' : 'F';
    
                    
    printf("Your grade is %c", grade);
    return 0;
}

Изначально условие - «баллы ≥ 90». Если условие истинно, оно выполняет выражение после вопросительного знака и, таким образом, присваивает «А» «оценку». Если условие ложно, оно выполняет выражение после двоеточия и проверяет, истинно ли следующее условие, и так далее. Однако у вас не может быть нескольких строк кода для выполнения, если условие истинно или ложно, и поэтому тернарный оператор может использоваться только вместо простых операторов if и else с одной строкой кода в каждом блоке.

Помните, как мы раньше печатали логические значения? Тернарный оператор может использоваться для вывода логических значений.

#include <stdio.h>
#include <stdbool.h>
int main()
{
    int num1, num2;
    bool isEqual;
    printf("Enter a number: ");
    scanf("%d", &num1);
    printf("Enter a number again: ");
    scanf("%d", &num2);
    
    isEqual = num1 == num2;
    printf("%s", isEqual ? "true" : "false");
    
    return 0;
}

Тернарный оператор проверяет, имеет ли isEqual значение true или false. Если истина, она печатает «истина», иначе она печатает «ложь».

Предыдущий =› Как взаимодействовать с пользователями в программировании?