switch可以装换成if 但if不一定能转换成switch
因为switch后面的括号里只能值整数,也就是int类型的参数,而if可以判断各种条件,..
if(operator=="+")
{
printf("\n %d %c %d=%d\n ",x,operator,y,x+y);
}
else if(operator=="+")
{
printf("\n %d %c %d=%d \n",x,operator,y,x-y);
}
else if(operator=="*")
{
printf("\n %d %c %d=%d \n ",x,operator,y,x*y);
}
else if(operator=="/")
{
printf("\n %d %c %d=%.2f \n ",x,operator,y,x*1.0/y);
}
else if(operator=="%")
{
printf("\n %d %c %d=%d \n",x,operator,y,x%y);
}
else
{
printf("\n invalid operator\n");
}
1 两者本质的区别是 if-else语句更适合于对区间(范围)的判断,而switch语句更适合于对离散值的判断
2 示例
判断65分到85分之间的学生有哪些适合用if-else语句,因为[65,85]是区间
而判断一个学生的班级是一班、二班还是三班适合用switch语句,因为一班、二班、三班是离散值
3 扩展
所有的switch语句都可以用if-else语句来替换(因为if-else语句只需对每个离散值分别做判断即可),而并不是所有的if-else语句都可以用switch语句来替换(因为区间里值的个数是无限的并且switch所接受的值只能是整型或枚举型,所以不能用case来一一列举)。
都是一样的。if全都能实现,而且也不会麻烦。
一点区别就是if()else if()……只能执行一个if里面的代码,但是switch不同,只要case中代码运行完,不遇到break;就继续按顺序执行下一个case中的代码。
D,SWITCH语句也可以嵌套
既然你定义的是double p,w,s,d,f;,那在scanf的时候不能用%f,而是应该用%lf,%f是用来接收float类型数据的。 也就是说你要么
double p,w,s,d,f;
printf("请输入单价,重量和距离:");
scanf("%lf,%lf,%lf",&p,&w,&s);
要么
float p,w,s,d,f;
printf("请输入单价,重量和距离:");
scanf("%f,%f,%f",&p,&w,&s);
#include
using namespace std;
int main(){
int k,d,r,m,n;
int y=1,c=2,z=3;
double s;
cout<<"请选择图形:1.圆形;2.长方形;3.正方形;"< cin>>k; if(k==y) { cout<<"请输入半径"< cin>>r; s=3.1415926*r*r; cout<<"圆形的面积为:"< } if(k==c) { cout<<"请输入长方形的长和宽"< cin>>m>>n; s=m*n; cout<<"长方形的面积为:"< } if(k==z) { cout<<"请输入正方形的边长"< cin>>d; s=d*d; cout<<"正方形的面积为:"< } return 0; } switch(s){ case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9: case 10: …… break; } 输入: 结果: 输入: 结果: if语句的 void main() { double i;double s; printf("input i="); scanf("%lf",&i); if(i<0) printf("Invaid input.\n"); else if(i<=10) s=i*0.1; else if(i<=20) s=1+(i-10)*0.075; else if(i<=40) s=1.75+(i-20)*0.05; else if(i<=60) s=2.75+(i-40)*0.03; else if(i<=100) s=3.35+(i-60)*0.015; else s=3.95+(i-100)*0.01; printf("%.2f\n",s); } switch语句的 void main() { int i;double s; printf("input i="); scanf("%d",&i); if(i<0) printf("Invaid input!\n"); switch(i/10) { case 0: s=i*0.1;break; case 1: s=1+(i-10)*0.075;break; case 2: case 3:s=1.75+(i-20)*0.05;break; case 4: case 5:s=2.75+(i-40)*0.03; break; case 6: case 7: case 8: case 9:s=3.35+(i-60)*0.015;break; default:s=3.95+(i-100)*0.01; } printf("%f\n",s); }
把这些If ( (s > 0) && (s <= 10) )换成switch语句
1.请将以下语句改写成switch语句
看题目,帮忙画流程图,分别用if语句和switch开关语句写出程序。另外说说我该怎样在黑板上讲解所写的程序
上一篇:毕业典礼上给班主任的感谢词
下一篇:关于鱼和花的成语