简单的IF语句scanf

时间:2018-10-12 14:29:31

标签: c if-statement scanf

对于一项作业,我被要求创建一个小程序,该程序要求用户输入以确定他们希望操作的转换器。我的问题是,在输入想要使用的转换器(1或2)之后,为什么程序不要求用户输入。无需调用scanf,它只需一次运行整个语句。

#include <stdio.h>

int main()
{
float cm;
float inches;
int operation;

printf("Hello and welcome to the Inches to Centimetres converter. \n");
printf("Choose from the options below by entering the corresponding number:\n");
printf("Inches to CM converter (1)\n");
printf("CM to Inches converter (2)\n");
scanf("&d", &operation);

if (operation == 1)
{
    printf("Please enter the amount of Inches you wish to convert : \n");
    scanf("%f", &inches);

    cm = inches * 2.54;


    if (inches <= 0)
        {
        printf("Invalid number");
        }
    else
        printf("%f inches is equal to %f centimetres.", inches, cm);
}
else if (operation == 2);
{
    printf("Please enter the amount of Centimetres you wish to convert : ");
    scanf("%f", &cm);

    inches = cm / 2.54;


    if (cm <= 0)
        {
        printf("Invalid number");
        }
    else
        printf("%f centimetres is equal to %f inches.", cm, inches);
}


}

输出

1 个答案:

答案 0 :(得分:2)

这里有两个问题。首先:

scanf("&d", &operation);

有一个错字,“&d”应为“%d”,这就是为什么您会立即得到两次提示的原因。您想要:

scanf("%d", &operation);

第二个是这个

}
else if (operation == 2);
{

;立即结束else块。因此,大括号中的块将始终运行。摆脱;

}
else if (operation == 2)
{

更好:

} else if (operation == 2) {

以这种方式格式化括号实际上将消除这种类型的错误。