又见窄巷 发表于 2017-10-21 00:17:09

求看下c语言的问题

#include <stdio.h>

int main()
{
        int i;

        printf("请输入成绩:");
        scanf("%d", &i);

        switch (i)
        {
                case '0': printf("你的成绩在90分以上!\n"); break;
                case '1': printf("你的成绩在80~90分之间!\n"); break;
                case '2': printf("你的成绩在70~80分之间!\n"); break;
                case '3': printf("你的成绩在60~70分之间!\n"); break;
                case '4': printf("你的成绩在60分以下!\n"); break;
        }

        return 0;
}
c语言基础的问题
1.switch 后面的表达式。我看小甲鱼说如果结果为0则程序不能运行。那么,我开头设置整变量int i,那么第一个case后面的0能不能执行?
实际上我编译了,输入0、1、2、3都不能执行程序 问题出在哪里呢?

hywo125 发表于 2017-10-21 00:29:10

由于你输入的不是字符你的case 判断的是字符,你输入的只是int的整形,所以没有任何结果

又见窄巷 发表于 2017-10-21 00:33:13

hywo125 发表于 2017-10-21 00:29
由于你输入的不是字符你的case 判断的是字符,你输入的只是int的整形,所以没有任何结果

case 后面跟的不是常量值吗?必须是字符? 不能是整形?

hywo125 发表于 2017-10-21 00:37:28

又见窄巷 发表于 2017-10-21 00:33
case 后面跟的不是常量值吗?必须是字符? 不能是整形?

switch的条件支持char, int, short, long类型,不支持float,double。
布尔类型是从C99开始有关键字,即_Bool,VS 2010并不支持。

又见窄巷 发表于 2017-10-21 00:44:14

hywo125 发表于 2017-10-21 00:37
switch的条件支持char, int, short, long类型,不支持float,double。
布尔类型是从C99开始有关键字,即 ...

额,我输入的是int类型啊,可是没结果。。。。

hywo125 发表于 2017-10-21 00:45:03

又见窄巷 发表于 2017-10-21 00:44
额,我输入的是int类型啊,可是没结果。。。。

case '1'代表字符,    你要写 case 1:

又见窄巷 发表于 2017-10-21 01:02:00

hywo125 发表于 2017-10-21 00:45
case '1'代表字符,    你要写 case 1:

我竟让犯了这种低级错误,被您看出来了。。。。。非常感谢

hywo125 发表于 2017-10-21 01:09:30

又见窄巷 发表于 2017-10-21 01:02
我竟让犯了这种低级错误,被您看出来了。。。。。非常感谢

编程就是不断错误与改正的过程,,再说谁不是从新手过来的

又见窄巷 发表于 2017-10-21 01:25:21

hywo125 发表于 2017-10-21 01:09
编程就是不断错误与改正的过程,,再说谁不是从新手过来的

{:5_91:} 嗯嗯
页: [1]
查看完整版本: 求看下c语言的问题