c语言 switch函数

发布网友 发布时间:2022-04-19 15:19

我来回答

4个回答

热心网友 时间:2023-06-30 03:02

  1、switch函数定义:
  Switch函数计算一组表达式列表的值,然后返回与表达式列表中最先为 True 的表达式所相关的 Variant 数值或表达式。
  2、switch函数格式:
  Switch(expr-1, value-1[, expr-2, value-2 _ [, expr-n,value-n]])
  Switch 函数的语法有以下几个部分:
  expr:必要参数。要加以计算的 Variant表达式。
  value:必要参数。如果相关的表达式为 True,则返回此部分的数值或表达式。
  3、switch函数说明:
  Switch 函数的参数列表由多对表达式和数值组成。表达式是由左至右加以计算的,而数值则会在第一个相关的表达式为True 时返回。如果其中有部分不成对,则会产生一个运行错误。如果 expr-1 为 True则 Switch 返回 value-1,如果 expr-1 为False,但 expr-2 为 True,则 Switch 返回 value-2,以此类推。
  当没有一个表达式为 True,或者第一个为 True 的表达式的对应值为 Null时,Switch 会返回一个Null值。

热心网友 时间:2023-06-30 03:03

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
void action1( float s, float area)
{float a;float b; float c;
scanf("%f%f%f",&a,&b,&c);
s=(a+b+c)/2;
area=sqrt(s*(s-a)*(s-b)*(s-c));
printf("三角形的面积为:%f\n",area);
}
void action2(double x1,double x2)
{double a;double b;double c;
scanf("%lf%lf%lf",&a,&b,&c);
x1=(-b+sqrt(b*b-4*a*c))/(2*a);
x2=(-b-sqrt(b*b-4*a*c))/(2*a);
if(b*b-4*a*c>=0)
{
x1=x1; x2=x2;
}
else
{
x1=0;x2=0;
printf("无解\n");
}
printf("x1 x2值分别为:%lf%lf\n",x1,x2);
system("pausse");
}
int main(){

char ch;
ch=getchar();
float area,s;
double x1,x2;
switch(ch)
{
case'a':
case'A':action1(area,s);break;
case'b':
case'B':action2(x1,x2);break;
default:putchar('\a');
}
return 0;
}
1.简单说一下我暂时发现的问题,函数必须先定义再使用,所以把你的函数提前,主函数放后面,
2.调用不到的形参放函数里面,用几个调用几个.要不然会报错
3.虽然不知道你这函数是干什么用的,但我建议你在写程序是添加一些注释,或输出一些提示,这样别人才能看得懂

热心网友 时间:2023-06-30 03:03

switch可以解决,但不一定是最好的方法,因为switch函数的功能是多分支,它主要是方便3个以上的分支条件,避免使用if嵌套,
而从键盘输入三个数,并排序输出,这个不是三个分支条件,而是两两比较,和switch的基本功能并不符合

热心网友 时间:2023-06-30 03:05

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
void action1();
void action2();
int main(){
char ch;
ch=getchar();
switch(ch)
{
case'a':
case'A':action1(area,s);break;
case'b':
case'B':action2(x1,x2);break;
default:putchar('\a');
}
return 0;
}
void action1()
{
float a, b, c, s, area;
scanf("%f%f%f",&a,&b,&c);
s=(a+b+c)/2;
area=sqrt(s*(s-a)*(s-b)*(s-c));
printf("三角形的面积为:%f\n",area);
}
void action2()
{
double a, b, c, x1, x2;
scanf("%lf%lf%lf",&a,&b,&c);

x1=(-b+sqrt(b*b-4*a*c))/(2*a);
x2=(-b-sqrt(b*b-4*a*c))/(2*a);
if(b*b-4*a*c>=0)
{
x1=x1; x2=x2;
}
else
{
x1=0;x2=0;
printf("无解\n");
}
printf("x1 x2值分别为:%lf%lf\n",x1,x2);
system("pausse");
}追问还是有错啊

追答switch(ch)
{
case'a':
case'A':action1();break;
case'b':
case'B':action2();break;
default:putchar('\a');
}

声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com