C 在开关箱中获取用户输入
我们可以在开关箱中输入吗? 在这里,如果我按原样运行代码,它会要求输入值“a”,但返回的区域为0。 但是,如果在声明时或在switch case之外的任何位置定义'a'的值,它将返回正确的值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);
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
achar
还是int
?如果使用scanf
将值输入ch
,则在开关
语句中应该有一个字符,例如大小写“e”:/*等边三角形*/
。