Member 13065446 Ответов: 3

C программа reagrding if else


#include < stdio.h >
    int main() {
        int age;
        char sex;
        char ms;
        printf("Enter the details of the driver\n");
        scanf("%c%c%d", & ms, & sex, & age);

        if (ms == 'y')
            printf("Driver is insured\n");
        else {
            if (sex == 'm') {
                if (age > 30)
                    printf("Driver is insured\n");
                else {
                    if (age > 25)
                        printf("Driver is insured\n");
                    else
                        printf("Driver is not insured\n");
                }
            }
        }
    }


[edit]добавлен блок кода-OriginalGriff [/edit]

Что я уже пробовал:

Я попытался рассказать подробности о водителе.
но программа не дает должного результата.
А в соответствии с программой она должна напечатать вывод о том, что водитель застрахован, когда я даю семейное положение(МС) как "y". но это не так

Richard MacCutchan

Используйте свой отладчик, чтобы проверить значения всех переменных после вызова scanf.

3 Ответов

Рейтинг:
2

OriginalGriff

Начните с отладчика: поставьте точку останова на линию

if (ms == 'y')
И запустить его. Когда вы вводите данные, он должен остановиться и позволить вам взять управление на себя.
Посмотрите, что там внутри. ms - это "у"? Если нет, то что это? Как это соотносится с тем, что вы набрали?
Внимательно посмотрите, что происходит с кодом и с содержимым ваших переменных-это должно сказать вам, что происходит не так.
(Мы не можем сказать вам, как использовать ваш конкретный отладчик, мы понятия не имеем, какую систему вы используете. Но простой google с "debugger nameofyourcompilationsystem" должен найти все это очень легко.)

Но подумайте о бедном пользователе: вы запускаете приложение, а он понятия не имеет, что ему нужно печатать. Вместо этого попробуйте задать ему отдельные вопросы:
char line[100];
printf("Enter the details of the driver\n");
printf("Are they married? (y/n) : ");
scanf("%s", line);
ms = line[0];
printf("Sex?              (m/f) : ");
scanf("%s", line);
sex = line[0];
printf("Age?                    : ");
scanf("%d", &age);

Вы также можете обнаружить, что ваша проблема исчезнет, если вы подскажете им!


Рейтинг:
0

CPallini

С входом

y m 35

ваша программа производит вывод
Drive is insured

на моем ящике Lubuntu.


Рейтинг:
0

Patrice T

Когда вы не понимаете, что делает ваш код или почему он делает то, что делает, ответ таков: отладчик.
Используйте отладчик, чтобы увидеть, что делает ваш код. Просто установите точку останова и посмотрите, как работает ваш код, отладчик позволяет вам выполнять строки 1 на 1 и проверять переменные по мере их выполнения, это невероятный инструмент обучения.

Отладчик-Википедия, свободная энциклопедия[^]
Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]
Базовая отладка с помощью Visual Studio 2010-YouTube[^]

Отладчик здесь для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.
В отладчике нет никакой магии, он не находит ошибок, он просто помогает вам. Когда код не делает того, что ожидается, вы близки к ошибке.