如果将学生的百分制成绩分为5个等级:0-59分为不及格(E),60-69分为及格(D),70- 79分为一般(C),80-89分为良好(B),90-100分为优秀(A)。在实际中,学生的成绩在五个等级上的分布是不均匀的,假设其分布概率依次为:0.05, 0.14, 0.29, 0.36, 0.16。请采用 if...else 判断语句设计两个不同的函数实现百分制转换为五级分制,并验证。
要求:(1)判断语句的效率最高(二叉树带权路径长度最小,用这种思想编程,不是去生成二叉树);(2)判断语句的层数最小(二叉树的高度或深度最小)
int main()
{
cout<<"输入学生成绩"<<endl;
int grade;
cin >> grade;
cout << "选择判断模式(0:效率最高 1:层数最小)" << endl;
int a;
cin >> a;
switch (a)
{
case 0: //概率大的判断次数最少
if (grade >= 80 && grade <= 89)
cout << "学生成绩为B" << endl;
else
{
if (grade >= 70 && grade <= 79)
cout << "学生成绩为C" << endl;
else
{
if (grade >= 90)
cout << "学生成绩为A" << endl;
else
{
if (grade >= 60)
cout << "学生成绩为D" << endl;
else
cout << "学生成绩为E" << endl;
}
}
}
break;
case 1: //尽可能对分
if (grade >= 80)
{
if (grade >= 90)
cout << "学生成绩为A" << endl;
else
cout << "学生成绩为B" << endl;
}
else
{
if (grade >= 70)
cout << "学生成绩为C" << endl;
else
{
if (grade >= 60)
cout << "学生成绩为D" << endl;
else
cout << "学生成绩为E" << endl;
}
}
break;
}
return 0;
}