成绩划分-五等级问题

本文介绍了四种不同的方法将百分制分数转化为五个等级(A-E),分别是复杂if语句、简化if语句、if-switch组合以及使用elseif。每种方法的平均判断次数和代码示例都有所不同。
摘要由CSDN通过智能技术生成

题目:

将百分制分数划分为五个等级: A,B,C,D,E,

分别代表

90<=score<=100       grade=A
80<=score<=89          grade=B
70<=score<=79          grade=C
60<=score<=69          grade=D
score<60                     grade=E


有四种解法:

① if语句(复杂)   ② if语句(简单)  ③ if语句和Switch语句    ④else if用法

① if语句(复杂)

大意:外界给一个分数,计算机先判断是否大于0,接着开始从60逐级判断,比较复杂

平均判断次数(不算小于0和大于100的):(1+2+3+4+4)/5=2.8

流程图如下:

 代码如下:

#include<stdio.h>
int main()
{
	int score;
	char grade;
	printf("请输入你的成绩");
	scanf("%d", &score);
	while (score >= 0)
	{if (score < 60)
			grade = 'E';
		else
			if (score < 70)
				grade = 'D';
			else
				if (score < 80)
					grade = 'C';
				else
					if (score < 90)
						grade = 'B';
					else
						grade = 'A';
	printf("%dis%c", score, grade);
	printf("\n请输入下一名同学的成绩");
	scanf("%d", &score);
}
		printf("输入错误");
	return 0;
}

控制台结果:

② if语句(简单)

大意:输入一个分数后,从80开始判断,相较第一种的第二种更加简便一点

平均判断次数(不算小于0和大于100的):(3+3+2+2+2)/5=2.4

流程图如下:

代码如下:

#include<stdio.h>
int main()
{
	int score;
	char grade;
	printf("请输入你的成绩:");
	scanf("%d", &score);
	while (score >= 0)
	{
		if (score >= 0)
			if (score < 80)
				if (score < 70)
					if (score < 60)
						grade = 'E';
					else
						grade = 'D';
				else
					grade = 'C';
			else
				if (score < 90)
					grade = 'B';
				else
					grade = 'A';
					printf("%d is %c", score, grade);
	
		printf("请输入新的成绩:");
			scanf("%d", &score);
	}
	printf("输入错误");


	
	return 0;
}

控制台结果:

  

 ③ if语句和Switch语句 

大意:运用除法取商的整数,来划分等级

0 1 2 3 4 5    6   7  8   9  10

    E              D  C   B   A 

平均判断次数(不算小于0和大于100的):(1+2+3+4+5)/5=3

流程图如下:

以上两种流程图都可以 

代码如下:

#include <stdio.h>
int main()
{
	int score1, score2;
	char grade;
	printf("请输入你的成绩:");
	scanf("%d", &score1);
	score2 = score1 / 10;
	switch (score2)
	{
	case 0:
	case 1:
	case 2:
	case 3:
	case 4:
	case 5:grade = 'E'; break;
	case 6:grade = 'D'; break;
	case 7:grade = 'C'; break;
	case 8:grade = 'B'; break;
	case 9:
	case 10:grade = 'A'; break;
	default:printf("非法数据"); break;
	}
	printf("%d is %c", score1, grade);
	return 0;
}

控制台结果如下:(只能测试一组数据)

④else if 用法

代码如下:

#include<stdio.h>

	int main()
{
		int score;
		char grade;
		printf("请输入你的成绩:");
		scanf(" % d", &score);
		if (score < 0 || score>100)
		{
			printf("输入有误");

		}
		else if (score >= 90 && score <= 100)
		{
			grade = 'A';
		}
		else if (score >= 80)
		{
			grade = 'B';
		}
		else if (score >= 70)
		{
			grade = 'C';
		}
		else if (score >= 60)
		{
			grade = 'D';
		}
		else if (score >=0&& score <60)
		{
			grade = 'E';
		}
		printf("%d is %c", score, grade);
		return 0;
}

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值