数据结构与算法--树(1)

如果将学生的百分制成绩分为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;
}

上一篇:C语言趣味编程:模拟账号密码登录


下一篇:kruskal模板