C语言实现评判成绩等级

C语言实现评判成绩等级,第1张

# include 

int main()
{
	float grade;

	scanf("%f", &grade);

	if (grade > 100)
		printf("Illegal input!\n");
	else if (grade >= 90 && grade <= 100)
		printf("A\n");
	else if (grade >= 80 && grade < 90)
		printf("B\n");
	else if (grade >= 70 && grade < 80)
		printf("C\n");
	else if (grade >= 60 && grade < 70)
		printf("D\n");
	else if (grade >= 0 && grade < 60)
		printf("You have failed the exam!\n");
	else
		printf("Illegal input!\n");

	return 0;
}

初学时的错误:
else if (grade >= 90 && grade <= 100)写成else if (90 <= grade <= 100)。由于受到数学不等式的影响,没有考虑到计算机语言的逻辑,所以犯了这样的错误。
分析原因可知,90 <= grade <= 100中有两个相同的关系运算符,所以它们优先级也是相同的,于是整个语句会先执行左边的90 <= grade,但不管我们输入的grade是否在90之间,90 <= grade表达式的值要么是0要么是1,当开始执行右边时,整个表达式已经变为0 <= 1001 <= 100。毋庸置疑,这两个表达式的值永远是1,也就意味着整个表达式90 <= grade <= 100的值永远是1。所以,无论我们输入的值是多少,都会执行printf("A\n");语句。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1352932.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-14
下一篇2022-06-14

发表评论

登录后才能评论

评论列表(0条)

    保存