Программа не отвечает в Code::blocks после прочтения моего ввода

Я пытаюсь создать программу внутри code::blocks, которая позволит мне выбрать несколько преобразований единиц измерения. Однако всякий раз, когда я собираю, компилирую и достигаю точки в программе, где он сканирует мои данные для поиска переменной "выбор", code::blocks сразу же отображает окно, в котором говорится, что мой.exe перестал работать, и я не могу выяснить, почему это так. Я использую компилятор GNU GCC. Будем чрезвычайно признательны любой помощи.

#include <stdio.h>

int main()
{
    float fahrenheit;
    float celsius;
    float pound;
    float kilogram;
    float inch;
    float centimeter;
    float mph;
    float kph;
    int foc;
    int pok;
    int ioc;
    int mok;
    int choice;

    printf("\n1. Temperature Conversion\n");
    printf("\n2. Weight Conversion\n");
    printf("\n3. Length Conversion\n");
    printf("\n4. Speed Conversion\n");
    printf("\n5. Exit Program\n");
    printf("\n");
    printf("\nEnter the number of the program you would like to run :\n");
    printf("\n");
    scanf("%d", choice);

    //Temperature Conversion
    if(choice == 1) {
        printf("\n1. Convert from Celsius to Fahrenheit\n");
        printf("\n2. Convert from Fahrenheit to Celsius\n");
        printf("\nEnter the number that corresponds with the conversion you would like to do:\n");
        printf("\n");
        scanf("%d", &foc);

        if(foc == 1) {
            //option 1
            printf("\nEnter your temperature in Celsius : ");
            scanf("%f", &celsius);
            fahrenheit = 32 + (celsius * 1.8);
            printf("\nYour temperature in Fahrenheit : %f ", fahrenheit);
        }
        else {
            //option 2
            printf("\nEnter your temperature in Fahrenheit : ");
            scanf("%f", &fahrenheit);
            celsius = (fahrenheit - 32) * 0.55555555;
            printf("\nYour temperature in Celsius : %f ", celsius);
        }
    }
    //Weight Conversion
    else if(choice == 2) {
        printf("\n1. Convert from Pound to Kilogram ");
        printf("\n2. Convert from Kilogram to Pound ");
        printf("\nEnter the number that corresponds with the conversion you would like to do: ");
        printf("\n ");
        scanf("%d", &pok);

        if(pok == 1) {
            //option 1
            printf("\nEnter your weight in pounds : ");
            scanf("%f", &pound);
            kilogram = (2.20462 * pound);
            printf("\nYour weight in kilograms : %f ", kilogram);
        }
        else {
            //option 2
            printf("\nEnter your weight in kilograms : ");
            scanf("%f", &kilogram);
            pound = (kilogram/2.20462);
            printf("\nYour weight in pounds : %f ", celsius);
        }
    }
    //Length Conversion
    else if(choice == 3) {
        printf("\n1. Convert from inches to centimeters ");
        printf("\n2. Convert from centimeters to inches ");
        printf("\nEnter the number that corresponds with the conversion you would like to do: ");
        printf("\n ");
        scanf("%d", &ioc);

        if(ioc == 1) {
            //option 1
            printf("\nEnter your length in inches : ");
            scanf("%f", &inch);
            centimeter = (inch/2.54);
            printf("\nYour length in centimeters : %f ", centimeter);
        }
        else {
            //option 2
            printf("\nEnter your length in centimeters : ");
            scanf("%f", &centimeter);
            inch = (centimeter*2.54);
            printf("\nYour length in inches : %f ", inch);
        }
    }
    //Speed Conversion
    else if(choice == 4) {
        printf("\n1. Convert from mph to kph ");
        printf("\n2. Convert from kph to mph ");
        printf("\nEnter the number that corresponds with the conversion you would like to do: ");
        printf("\n ");
        scanf("%d", &mok);

        if(mok == 1) {
            //option 1
            printf("\nEnter your speed in mph : ");
            scanf("%f", &mph);
            kph = (mph/1.60934);
            printf("\nYour speed in kilometers: %f ", kph);
        }
        else {
            //option 2
            printf("\nEnter your speed in kph : ");
            scanf("%f", &kph);
            mph = (1.60934*kph);
            printf("\nYour length in inches : %f ", mph);
        }
    }
    else if(choice == 5) {
        printf("\nProgram has ended. Thanks for your time!");
    }
    else {
        printf("\nThat is not a valid program number. ");
    }
}

2 ответа

Решение

Вы должны передать указатель на choice переменная (т.е. &choice) на ваш scanf() звоните, как вы сделали для другого scanf() использует.

Т.е. вместо

scanf("%d", choice);

использование

scanf("%d", &choice);

scanf() читает значение от пользователя, и адрес переменной должен быть представлен в синтаксисе, если не представлен, программа принимает значение мусора так,

Другие вопросы по тегам