用Java中的Switch语句编写出成绩的等级划分!
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用Java中的Switch语句编写出成绩的等级划分!相关的知识,希望对你有一定的参考价值。
成绩要分优(90到100分)良(80到90分)中(70到80分)差(0到60分)!谢谢啦!
将成绩分为几个等级,且每个等级都有一个标记符,然后使用switch case来匹配标记符分别来判断,即可实现。示例:
switch(表达式)
case 常量表达式1:
//执行语句1;
break;
case 常量表达式2:
//执行语句2;
break;
default:
//执行语句;
break;
1.default就是如果没有符合的case就执行它,default并不是必须的.
2.case后的语句可以不用大括号.
3.switch语句的判断条件可以接受int,byte,char,short,枚举,不能接受其他类型.
4.一旦case匹配,就会顺序执行后面的程序代码,而不管后面的case是否匹配,直到遇见break,利用这一特性可以让好几个case执行统一语句.
5.切记不要忘记写break; 参考技术A public static void main(String[] args)
Scanner scanner=new Scanner(System.in);
System.out.println("请输入分数");
int score=scanner.nextInt();
switch (score/10)
case 9:
System.out.println("优");break;
case 8:
System.out.println("良");break;
case 7:
System.out.println("中");break;
default:
System.out.println("差");
break;
参考技术B 不知道用C语言编写的可不可以用,你试试,不能用也可以参考。
#include
main()
int g;
printf("请输入一个成绩:");scaf("%d",&g);
printf("g=%d:",g);
switch(g/10)
case 10:
case 9:printf("优");break;
case 8:printf("良");break;
case 7:printf("中");break;
case 6:printf("及格");break;
default:printf("差");
参考技术C 我所知道的switch是做不到的。因为switch的特性决定他的判断是用一种配对式的方法。还是用if吧少年。。 参考技术D 同楼上,switch匹配一个数字而不是一个数字段
C语言及程序设计项目1-26-2&3&5:成绩等级 & 分段函数求值switch语句版 & 个人所得税计算器switch语句版
switch语句常用于解决多分支、分段问题,该语句的关键就在于将具体问题中的分段、分支条件转化为常量constant。
首先,一定要理解switch语句是如何执行的:
项目1-26-2:成绩等级
1 /* 成绩等级(switch).cpp: 2 问题描述:给出一百分制成绩,要求输出成绩等级’A’,’B’,’C’,’D’,’E’。90分以上为’A’,80-89分为’B’,70-79分为’C’,60-69分为’D’,60分以下为’E’。 3 */ 4 5 #include "stdafx.h" 6 7 int main() 8 { 9 int dgrade, dgrade_10; 10 11 printf("Input the number form of the grade.\\n"); 12 scanf_s("%d", &dgrade); 13 14 //dgrade_10 = dgrade/10; 15 16 switch (dgrade/10) 17 { 18 case 0: 19 case 1: 20 case 2: 21 case 3: 22 case 4: 23 case 5: printf("grade E"); break; 24 25 case 6: printf("grade D"); break; 26 27 case 7: printf("grade C"); break; 28 29 case 8: printf("grade B"); break; 30 31 case 9: printf("grade A"); break; 32 33 case 10: printf("grade A"); break; 34 35 default:printf("invalid value");break; 36 } 37 38 return 0; 39 }
程序中,利用了整型数据运算的特性(舍去小数部分),每一个分数段通过运算转化为一个特定的常数;
项目1-26-3:分段函数求值switch语句版
通过运算转化的方案:
1 #include <stdio.h> 2 #include <math.h> 3 int main ( ) 4 { 5 int x, a; 6 double y; 7 scanf("%d", &x); 8 a = x/2; //注意是整数相除 9 if (a<0) 10 a=0; //这样,x<0时,a值也是0 11 switch(a) 12 { 13 case 0: //即x<2时 14 y=x; 15 break; 16 case 1: 17 case 2://a为1、2,对应x>=2 && x<6时 18 y=x*x+1; 19 break; 20 case 3: 21 case 4://a为3、4,对应x>=6 && x<10时 22 y=sqrt(x+1); 23 break; 24 default://如果走到这一分支,对应的是x>=10的所有情况 25 y=1.0/(x+1); 26 } 27 printf("%f\\n", y); 28 return 0; 29 }
利用逻辑运算的方案(更优):
#include "stdafx.h" #include <math.h> int main() { int x, t; scanf_s("%d", &x); t = (x < 2) + (x < 6) + (x < 10); switch (t) { case 3: printf("%d", x); break; case 2: printf("%d", x*x +1); break; case 1: printf("%lf", sqrt(x+1)); break; case 0: printf("%lf", 1.0/(1+x)); break; default:break; } return 0; }
很显然第二个方案普适性更高,而第一个方案只适合特殊情形(分段较均匀、有规律)
项目1-26-5:个人所得税计算器switch语句版
利用if-else语句转化的方案:
1 #include <stdio.h> 2 int main ( ) 3 { 4 double dSalary,dTax=0,dNetIncome=0; //请欣符合匈牙利命名法的变量名 5 double dValue; //在模板基础上加一个变量,表示超出起征点的收入 6 double dRate, dOffset; //分别表示税率和速算扣除数 7 int iStep; //用于确定交税的“档次” 8 printf("请输入您本月的收入总额(元):"); 9 scanf("%lf", &dSalary); 10 // 下面求解应缴个人所和税dTax和税后收入dNetIncome 11 dValue = dSalary - 3500; //在起征点基础上考虑纳税 12 if(dValue <= 0.0) 13 dTax = 0.0; //不需要交税 14 else 15 { 16 //这一组if语句确定交税的档次 17 if(dValue <= 1500) 18 iStep = 1; 19 else if(dValue <= 4500) 20 iStep = 2; 21 else if(dValue <= 9000) 22 iStep = 3; 23 else if(dValue <= 35000) 24 iStep = 4; 25 else if(dValue <= 55000) 26 iStep = 5; 27 else if(dValue <= 80000) 28 iStep = 6; 29 else 30 iStep = 7; 31 32 33 //根据确定的档次,得到税率和速算扣除数 34 switch(iStep) 35 { 36 case 1: 37 dRate = 0.03, dOffset = 0.0; 38 break; 39 case 2: 40 dRate = 0.1, dOffset = 105.0; 41 break; 42 case 3: 43 dRate = 0.2, dOffset = 555.0; 44 break; 45 case 4: 46 dRate = 0.25, dOffset = 1005.0; 47 break; 48 case 5: 49 dRate = 0.3, dOffset = 2755.0; 50 break; 51 case 6: 52 dRate = 0.35, dOffset = 5505.0; 53 break; 54 case 7: 55 dRate = 0.45, dOffset = 13505.0; 56 } 57 dTax = dValue * dRate - dOffset; //计算所得税,体会将“确定参数”与“计算”分开的好处:思路更明晰,不易在计算公式上犯大错 58 } 59 dNetIncome = dSalary-dTax; //计算税后收入 60 printf("您本月应缴个人所和税 %.2lf 元,税后收入是 %.2lf 元。\\n", dTax, dNetIncome); 61 printf("依法纳税,共享繁荣。谢谢使用!\\n"); 62 return 0; 63 }
利用逻辑运算的方案:
1 #include "stdafx.h" 2 3 4 int main() 5 { 6 double dSalary, dTax = 0, dNetIncome = 0; 7 printf("请输入您本月的收入总额(元):"); 8 scanf_s("%lf", &dSalary); 9 10 double dover, tax_rate, quick_deduction; 11 int x; 12 13 dover = (dSalary - 3500)/100; 14 15 x = (dover < 15) + (dover < 45) + (dover < 90) + (dover < 350) + (dover < 550) + (dover < 800); 16 17 if (dSalary <= 3500) 18 { 19 printf("您本月应缴个人所和税 0 元。\\n"); 20 printf("依法纳税,共享繁荣。谢谢使用!\\n"); 21 return 0; 22 } 23 else 24 { 25 switch (x) 26 { 27 case 6: tax_rate = 0.03, quick_deduction = 0; break; 28 29 case 5: tax_rate = 0.1, quick_deduction = 105; break; 30 31 case 4: tax_rate = 0.2, quick_deduction = 555; break; 32 33 case 3: tax_rate = 0.25, quick_deduction = 1005; break; 34 35 case 2: tax_rate = 0.3, quick_deduction = 2755; break; 36 37 case 1: tax_rate = 0.35, quick_deduction = 5505; break; 38 39 case 0: tax_rate = 0.45, quick_deduction = 13505; break; 40 41 default: 42 break; 43 } 44 45 dTax = (dSalary - 3500) * tax_rate - quick_deduction; 46 dNetIncome = dSalary - dTax; 47 48 printf("您本月应缴个人所和税 %.2lf 元,税后收入是 %.2lf 元。\\n", dTax, dNetIncome); 49 printf("依法纳税,共享繁荣。谢谢使用!\\n"); 50 } 51 52 return 0; 53 }
利用if-else 语句转化更为通用,但是要说cleanness,还是逻辑运算转化的方案最优。
=
以上是关于用Java中的Switch语句编写出成绩的等级划分!的主要内容,如果未能解决你的问题,请参考以下文章
php语言编写switch判断成绩代码。分别输出优秀、良好、中等、及格和不及格。
php语言编写switch判断成绩代码。分别输出优秀、良好、中等、及格和不及格。