黑马程序员技术交流社区

标题: 与if else同样的一个练习题,用switch方法,疑问? [打印本页]

作者: 远人    时间: 2014-3-21 21:00
标题: 与if else同样的一个练习题,用switch方法,疑问?
本帖最后由 远人 于 2014-3-22 13:02 编辑

#include <stdio.h>

int main(int argc, const char * argv[])
{

    //1、提示用户输入整数
    printf("输入一个整数:");

    //2、输入接受整数
    int a;
    scanf("%d",&a);

    //3、判断输出分数的等级

    switch (a) {
        case (a <= 100 && a >= 90):
        {
            printf("A\n",a);
            break;
        case (a >= 80):
            {
            printf("B\n",a);
            break;
            }
        case (a >= 70):
            {
            printf("C\n",a);
            break;
            }
        case (a >= 60):
            {
            printf("D\n",a);
            break;
            }
        case (a < 60 && a >= 0):
            {
            printf("C\n",a);
            break;
            }
        }
        default:
            printf("这个数不在范围内!");
            break;
    }
    return 0;
}


老师讲的方法是将输入数scare/10,然后如 case 4:输出条件。
在开始听老师讲解之前,这是我自己的做法,结果输出出错。给出的错误提示是:“表达不是一个整数常数表达式        参数未使用的数据格式的字符串”。
想问,这里的case(条件):  条件有什么要求?比如:必须是整数?
作者: 周宇华    时间: 2014-3-21 22:01
注意:case 后面接的是常量表达式,不是条件。也就是说,case后面接的必须是明确的值,如:1、'a'、'A' - 'a'等等;不能接未确定的值或条件表达式,如:a、a || b等,这里的a和b是变量,值不确定。
作者: lixiangzhou    时间: 2014-3-21 22:51
同学,你这里的switch(a) 中的a是int类型的,所以case 条件: 也要相应的是int 型的哦
作者: 路默”    时间: 2014-3-21 23:01

#include <stdio.h>

int main(int argc, const char * argv[])
{

    //1、提示用户输入整数
    printf("输入一个整数:");

    //2、输入接受整数
    int a;
    scanf("%d",&a);

    //3、判断输出分数的等级
if(a>100||a<o){return 0;}
    switch (a/10) {    <--用switch需变量转换的,条件表达式放在switch后面的小括号中
        case 10 :
        case   9 :        <--case后面接的是定量
        {
            printf("A\n");
            break;
        case  8 :
            {
            printf("B\n");
            break;
            }
        case  7 :
            {
            printf("C\n");
            break;
            }
        case  6 :
            {
            printf("D\n");
            break;
            }
      
        default:
            printf("E\n");
            break;
    }
    return 0;
}
                         我也是初学者,一起加油!!兄弟
作者: 黑马IT男    时间: 2014-3-22 10:58
switch在使用时必须谨慎。所写的任何switch语句都必须遵循以下规则:只能针对基本数据类型使用switch,这些类型包括int、char等。对于其他类型,则必须使用if语句。case标签必须是常量表达式(constantExpression),如42或者‘42’。
作者: 远人    时间: 2014-3-22 11:01
lixiangzhou 发表于 2014-3-21 22:51
同学,你这里的switch(a) 中的a是int类型的,所以case 条件: 也要相应的是int 型的哦 ...

恩,这个有道理
作者: 远人    时间: 2014-3-22 11:05
黑马IT男 发表于 2014-3-22 10:58
switch在使用时必须谨慎。所写的任何switch语句都必须遵循以下规则:只能针对基本数据类型使用switch,这些 ...

恩,不是太明白,但是很是很感谢你!
作者: 远人    时间: 2014-3-22 13:02
路默” 发表于 2014-3-21 23:01
#include

int main(int argc, const char * argv[])

恩,加油,黑马兄弟!
作者: 黑马IT男    时间: 2014-3-23 20:14
远人 发表于 2014-3-22 11:05
恩,不是太明白,但是很是很感谢你!

呵呵,大家一起学习




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2