黑马程序员技术交流社区
标题: 与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
恩,这个有道理
作者: 远人 时间: 2014-3-22 11:05
恩,不是太明白,但是很是很感谢你!
作者: 远人 时间: 2014-3-22 13:02
恩,加油,黑马兄弟!
作者: 黑马IT男 时间: 2014-3-23 20:14
呵呵,大家一起学习
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |