解题基础:

scanf("输入模式",地址列表);//输入语句及其格式。注:地址列表一定要加取地址符号&,如:&a,&b


switch(表达式){

    case  常量值1:

        若干语句1

        break;//可省略

    case  常量值2:

        若干语句2

        break;//可省略

    ......

    case  常量值n:

        若干语句n

        break;//可省略

    default://可省略

        若干语句

}//开关语句及其格式,若表达式的值等于某个常量值,则进行某常量值相对应的语句,若没遇到break,则接着运行下一个常量值后面的语句,直到遇到break为止,若表达式的值不等于某个常量值,则执行default后面的若干语句,default可省略(不执行语句)


思路:因为定义a的是一个整型变量int,所以a/10的值也是一个int型变量(整数)(注:C语言的取整不是四舍五入,是直接舍去小数),所以当90<a<100时,a/10=9,当80<a<90时,a/10=8,当70<a<80时,a/10=9,当60<a<70时,a/10=6,所以可以直接用switch函数(当然if也行,不过比较麻烦)


答案

#include<stdio.h>
int main(){
	int a;
	scanf("%d",&a); 
	switch(a/10){
		case 10:
		case 9:
			putchar('A');
			break;
		case 8:
			putchar('B');
			break;
		case 7:
			putchar('C');
			break;
		case 6:
			putchar('D');
			break;
		default:
			putchar('E');		
	}
}

ps:当a/10=10时,因为常量值后面的若干语句中没有break,则接着运行下一个常量值(case  9)后面的若干语句,直到遇到break为止

程序结束return 0;不可省。

点赞(80)
 

0.0分

161 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 253 条评论

uq_89689520521 1年前 回复TA
@无敌萝卜饼 因为你最后一个else否定的是全部的if语句,你只需要再加一个条件判断语句即可int main() {     int x;     scanf("%d",&x);     if(x>=60) 	{ 	 	if(x>=90&&x<=100)     printf("A");     if(x>=80&&x<=89)     printf("B");     if(x>=70&&x<=79)     printf("C");     if(x>=60&&x<=69) 	printf("D"); 	}     else 	printf("E");     return 0; }
无敌萝卜饼 1年前 回复TA
#include<stdio.h>
int main()
{
    int x;
    scanf("%d",&x);
    if(x>=90&&x<=100)
    printf("A");
    if(x>=80&&x<=89)
    printf("B");
    if(x>=70&&x<=79)
    printf("C");
    if(x>=60&&x<=69)
    printf("D");
    else
    printf("E");
    return 0;
}  weishenme90yishangshuchu AE
ekm 1年前 回复TA
#include <stdio.h>
int main()
{
	int score = 0;
	scanf("%d", &score);
	char level = 'E';

	if (score < 60)
	{
		printf("%c", level);
	}
	else
	{
		int compare = 60;
		for (compare = 60; compare <= 100; compare = compare + 10)
		{
			level--;
			if (compare <= score && compare + 10 >score)
			{
				printf("%c", level);
			}
		}
	}
	return 0;
}这个我在我自己的VS编译器上写没有出现任何问题啊,怎么到了这就是错的了?
juanxincai 1年前 回复TA
@拂尘 输入取的d值,switch语句没加{  }
拂尘 1年前 回复TA
#include<stdio.h>
int main()
{
    int c;
    scanf("%d",&d);
    switch(c/10)
    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;
    return 0;
}这个为啥编译错误?大佬捞捞┭┮﹏┭┮
小张 1年前 回复TA
@九三 @dotcpp0673833 对的
jccchao 1年前 回复TA
哈哈我是笨b,没想到用除法
稳稳当当 1年前 回复TA
int a;
    scanf("%d",&a);
    switch(a/10)
    {
        case 10:
        case 9:
        putchar('A');
        break;
        case 8:
        putchar('B');
        break;
        case 7:
        putchar('C');
        break;
        case 6:
        putchar('D');
        break;
        default:
        putchar('E');
        
    }
uq_27648537331 1年前 回复TA
@郝十三 第一点,你区间漏了100分和69分,第二点,错误输出了“请输入分数:”这几个字
uq_96643382197 1年前 回复TA
@郝十三 输出格式错了,不要前面那个请输入