Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 在开关箱中获取用户输入_C_Switch Statement - Fatal编程技术网

C 在开关箱中获取用户输入

C 在开关箱中获取用户输入,c,switch-statement,C,Switch Statement,我们可以在开关箱中输入吗? 在这里,如果我按原样运行代码,它会要求输入值“a”,但返回的区域为0。 但是,如果在声明时或在switch case之外的任何位置定义'a'的值,它将返回正确的值 double a, area; switch(ch) { case 1: printf("equilateral triangle \n"); printf("value of side \n"); scanf("%f",&a);

我们可以在开关箱中输入吗? 在这里,如果我按原样运行代码,它会要求输入值“a”,但返回的区域为0。 但是,如果在声明时或在switch case之外的任何位置定义'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;

}    

是的,你可以。您得到了错误的结果,因为您对
double
使用了错误的说明符。改用
%lf
(在
scanf
中)


查看正在运行的代码。

使用
开关
-
案例
没有问题。但是,您必须使用:

scanf("%lf",&a);
因为
a
被声明为双精度

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


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

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

什么是
ch
?请提供包含上述开关语句的函数的签名。您提供的代码中没有返回语句;整体情况有点不清楚。你的问题相当模糊。您是否使用
scanf
获取
ch
的值?
ch
a
char
还是
int
?如果使用
scanf
将值输入
ch
,则在
开关
语句中应该有一个字符,例如
大小写“e”:/*等边三角形*/