A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 远人 于 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(条件):  条件有什么要求?比如:必须是整数?

评分

参与人数 1技术分 +1 收起 理由
黑妞~ + 1

查看全部评分

8 个回复

倒序浏览
注意:case 后面接的是常量表达式,不是条件。也就是说,case后面接的必须是明确的值,如:1、'a'、'A' - 'a'等等;不能接未确定的值或条件表达式,如:a、a || b等,这里的a和b是变量,值不确定。
回复 使用道具 举报
同学,你这里的switch(a) 中的a是int类型的,所以case 条件: 也要相应的是int 型的哦
回复 使用道具 举报

#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;
}
                         我也是初学者,一起加油!!兄弟
回复 使用道具 举报
switch在使用时必须谨慎。所写的任何switch语句都必须遵循以下规则:只能针对基本数据类型使用switch,这些类型包括int、char等。对于其他类型,则必须使用if语句。case标签必须是常量表达式(constantExpression),如42或者‘42’。
回复 使用道具 举报
lixiangzhou 发表于 2014-3-21 22:51
同学,你这里的switch(a) 中的a是int类型的,所以case 条件: 也要相应的是int 型的哦 ...

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

恩,不是太明白,但是很是很感谢你!
回复 使用道具 举报
远人 中级黑马 2014-3-22 13:02:36
8#
路默” 发表于 2014-3-21 23:01
#include

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

恩,加油,黑马兄弟!
回复 使用道具 举报
远人 发表于 2014-3-22 11:05
恩,不是太明白,但是很是很感谢你!

呵呵,大家一起学习
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马