if else和switch case
if else和switch为选择结构语句,switch又称为多分支选择语句。
if else和switch哪个执行效率高?
if(判断语句)逐个进行判断,将满足条件的值输出,switch可以直接跳转到相应的case中,相当于存在一个case表,可以实现jump table。用花费空间资源来赢取时间,因此switch语句效率高,当选择分析较多时,效果更明显。但case后面只能跟常量(常量表达式),并不是任何时候 都适用,因此if else灵活性更高。
switch中的break?
break是switch中的循环结束语句,当跳转到相应的case中,直到遇到break或default程序将会结束,case代表的值都是不相同的,为了让一部分不同的case执行相同的结果,后面不写break就可以实现。
相关代码:
#include<stdio.h>
void main()
{
int c;
float grade;
printf("请输入一个百分制分数:\n");
scanf("%f",&grade);
printf("你的等级为:\n");
if(grade>90)
{
c=9;
}
else
{
c=grade/10;
}
switch(c)
{
case 0:
case 1:
case 2:
case 3:
case 4:
case 5: printf("'E'\n");break;
case 6: printf("'D'\n");break;
case 7: printf("'C'\n");break;
case 8: printf("'B'\n");break;
case 9: printf("'A'\n");break;
}
}
#include<stdio.h>
void main()
{
int t,f,a,b,c,d,e;
printf("请输入一个不多于五位的正整数:\n");
scanf("%d",&t);
printf("这个数为几位数:\n");
if(t>=10000)
{
f=5,a=t/10000,b=(t%10000)/1000,c=(t%1000)/100,d=(t%100)/10,e=t%10;
printf("这个数为%d位数\n",f);
printf("这个数的每一位分别为:\n%d\n%d\n%d\n%d\n%d\n",a,b,c,d,e);
printf("这个数的逆序为:\n%d\n%d\n%d\n%d\n%d\n",e,d,c,b,a);
}
else if(t<10000&&t>1000)
{
f=4,b=(t%10000)/1000,c=(t%1000)/100,d=(t%100)/10,e=t%10;
printf("这个数为%d位数\n",f);
printf("这个数的每一位分别为:\n%d\n%d\n%d\n%d\n",b,c,d,e);
printf("这个数的逆序为:\n%d\n%d\n%d\n%d\n",e,d,c,b);
}
else if(t<1000&&t>=100)
{
f=3,c=(t%1000)/100,d=(t%100)/10,e=t%10;
printf("这个数为%d位数\n",f);
printf("这个数的每一位分别为:\n%d\n%d\n%d\n",c,d,e);
printf("这个数的逆序为:\n%d\n%d\n%d\n",e,d,c);
}
else if(t<100&&t>=10)
{
f=2,d=(t%100)/10,e=t%10;
printf("这个数为%d位数\n",f);
printf("这个数的每一位分别为:\n%d\n%d\n",d,e);
printf("这个数的逆序为:\n%d\n%d\n",e,d);
}
else
{
f=1,e=t%10;
printf("这个数为%d位数\n",f);
printf("这个数的每一位分别为:\n%d\n",e);
printf("这个数的逆序为:\n%d\n",e);
}
}