在开关盒中输入用户输入

时间:2014-03-18 13:56:57

标签: c switch-statement

我们可以在开关盒中输入吗? AS在这里,如果我运行代码,因为它要求值'a'但它返回区域为0。 但是,如果我在声明时或在开关案例之外的任何地方定义'a'的值,它将返回正确的值。

double a, area;
switch(ch)
{
    case 1: printf("equilateral triangle \n");
            printf("value of side \n");
            scanf("%f",&a);
            area= 0.433*a*a;
            printf("\n %f", area);
            break;

    default : break;

}    

3 个答案:

答案 0 :(得分:0)

是的,你可以。您得到错误的结果,因为您使用了double的错误说明符。请改为使用%lfscanf)。

查看正在运行的代码here

答案 1 :(得分:0)

使用switch - case没有问题。但是你必须使用:

scanf("%lf",&a);

因为a被声明为double。

对于采用printf()等可变参数的函数,类型为float的参数可以提升为double

但是,C不会提升指针,因为scanf()将指针作为参数,所以它不会被提升为指向double的指针。

答案 2 :(得分:0)

在声明时使用%d,而不是%f(在scanf中)和%f在printf()中,使用%lf。