读取输入后,程序在Code :: blocks中没有响应

时间:2015-10-08 02:53:31

标签: c codeblocks

我正在尝试在code :: blocks中创建一个程序,允许我选择多个单位转换。但是,每当我构建并编译并到达程序中它在我的输入中扫描变量" choice"时,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 个答案:

答案 0 :(得分:1)

您必须将指针传递给choice变量(即&choice)到scanf()来电,就像您为其他人所做的一样scanf()使用。

即。而不是

scanf("%d", choice);

使用

scanf("%d", &choice);

答案 1 :(得分:0)

scanf()从用户读取值,并且必须在语法中表示变量的地址 如果没有表示,程序将获取垃圾值