这题将百分制划分成五个等级:A,B,C,D,E
grade>=90 | A |
80<=grade<=89 | B |
70<=grade<=79 | C |
60<=grade<=69 | D |
0<=grade<=59 | E |
每个分数段有10个数,可以得到grade/10,假设grade=97,grade/10=9可以判断grade在A级
其他分数段也是如此。
注意:如果grade是int型的话,那么上例就是grad/10=9,如果是float型则是9.7
但是无论是float还是int最终结果不影响判断分数段
就这题我有三种写法:
①用if语句判断
②用if和Switch语句
③运用三目运算符
方法一:
#define _CRT_SECURE_NO_WARNINGS 1
//防止visual studio2013以上版本scanf报错,vc6.0环境可忽略
#include<stdio.h>
int main()
{
int grades;
char a;//a表示等级
printf("请输入您的成绩\n");
printf("温馨提示:请输入0-100以内的分数\n");
scanf("%d", &grades);
if (grades >= 90&&grades<=100) a = 'A';
else if (grades >= 80) a = 'B';
else if (grades >= 70) a = 'C';
else if (grades >= 60) a = 'D';
else if(grades>=0) a = 'E';
printf("您的成绩等级为%c加油!\n", a);
}
方法二:
#define _CRT_SECURE_NO_WARNINGS 1
//防止visual studio2013以上版本scanf报错,vc6.0环境可忽略
#include<stdio.h>
int main()
{
float grades;
int g;
printf("请输入您的分数\n");
printf("温馨提示:分数范围在0-100内哦!\n");
scanf("%f", &grades);
g = grades / 10;
switch (g) {
case 10:
case 9:printf("您的成绩等级为A再接再厉喲!\n"); break;
case 8:printf("您的成绩等级为B加油哦!\n"); break;
case 7:printf("您的成绩等级为C加油哦!\n"); break;
case 6:printf("您的成绩等级为D加油哦!\n"); break;
case 5:
case 4:
case 3:
case 2:
case 1:
case 0:printf("您的成绩等级为E要努力哦!\n"); break;
default:printf("对不起您输入的分数不在0-100内!");
}
}
方法三:
#define _CRT_SECURE_NO_WARNINGS 1
//防止visual studio2013以上版本scanf报错,vc6.0环境可忽略
#include<stdio.h>
int main()
{
int grade;
char a;
printf("请输入您的分数\n");
printf("温馨提示:分数范围在0-100内哦!\n");
scanf("%d", &grade);
(grade >= 90 && grade <= 100) ? a = 'A' :
(grade >= 80) ? a = 'B' :
(grade >= 70) ? a = 'C' :
(grade >= 60) ? a = 'D' :
(grade >= 0) ? a = 'E' :
if (grade < 0 || grade>100)
{
printf("您所输入的分数超过范围\n");
}
printf("您的分数为%c级加油哦!\n", a);
}
三种方法各有优劣,凭自己的喜好,但代码尽量简洁规范