| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4194 人关注过本帖
标题:又一个switch的用法问题……
取消只看楼主 加入收藏
独孤小梦
Rank: 1
等 级:新手上路
威 望:1
帖 子:338
专家分:0
注 册:2008-6-5
结帖率:80%
收藏
 问题点数:0 回复次数:2 
又一个switch的用法问题……
先谢谢看帖的朋友!问题如下:
我在做书上的一个习题……
题目为:给出100分制成绩,要求输出成绩等级‘A’‘B’‘C’‘D’‘E’。90分以上为A,80到89分为B…………
我这里写了个程序,还是switch问题,请各位帮忙看看!程序有什么错误!
有人说case后面只能是常量表达式,那么我这里可以吗?如果不可以,要怎么弄?
#include<stdio.h>
#define N 20
void main()
{
    int i,chengji[N];
    for(i=0;i<N;i++)
        scanf("%d",chengji[i]);   //*输入成绩*//
        fflush(stdin);           //*缓存清空*//
        for(i=0;i<N;i++)
        {
            switch(chengji[i])       //*开始判断*//
            {
            case (chengji[i]>=90): printf("成绩为:A级"); break;
            case (89>=chengji[i]>=80): printf("成绩为:B级"); break;
            case (79>=chengji[i]>=70): printf("成绩为:C级"); break;
            case (69>=chengji[i]>=60): printf("成绩为:D级"); break;
            case (chengji[i]<60): printf("成绩为:D级"); break;
            default:printf("输入错误\n");
            }
        }
}


这里错误为:
--------------------Configuration: b - Win32 Debug--------------------
Compiling...
b.cpp
C:\Documents and Settings\admin\桌面\c\b.cpp(13) : error C2051: case expression not constant
C:\Documents and Settings\admin\桌面\c\b.cpp(14) : warning C4804: '>=' : unsafe use of type 'bool' in operation
C:\Documents and Settings\admin\桌面\c\b.cpp(14) : error C2051: case expression not constant
C:\Documents and Settings\admin\桌面\c\b.cpp(15) : warning C4804: '>=' : unsafe use of type 'bool' in operation
C:\Documents and Settings\admin\桌面\c\b.cpp(15) : error C2051: case expression not constant
C:\Documents and Settings\admin\桌面\c\b.cpp(16) : warning C4804: '>=' : unsafe use of type 'bool' in operation
C:\Documents and Settings\admin\桌面\c\b.cpp(16) : error C2051: case expression not constant
C:\Documents and Settings\admin\桌面\c\b.cpp(17) : error C2051: case expression not constant
C:\Documents and Settings\admin\桌面\c\b.cpp(19) : warning C4065: switch statement contains 'default' but no 'case' labels
执行 cl.exe 时出错.

b.exe - 1 error(s), 0 warning(s)

也不知道那里错了……

[[it] 本帖最后由 独孤小梦 于 2008-7-25 00:38 编辑 [/it]]
搜索更多相关主题的帖子: switch 用法 
2008-07-25 00:35
独孤小梦
Rank: 1
等 级:新手上路
威 望:1
帖 子:338
专家分:0
注 册:2008-6-5
收藏
得分:0 
这个能编译出来,但是能不能不用IF啊?
#include<stdio.h>
#define N 20
void main()
{
    int i,chengji[N];
    for(i=0;i<N;i++)
        scanf("%d",chengji[i]);
    fflush(stdin);
    for(i=0;i<N;i++)
    {
        if (chengji[i]>=90) printf("成绩为:A级");
        if (89>=chengji[i]>=80) printf("成绩为:B级");
        if (79>=chengji[i]>=70) printf("成绩为:C级");
        if (69>=chengji[i]>=60) printf("成绩为:D级");
        if (chengji[i]<60) printf("成绩为:D级");
        else printf("输入错误\n");
    }
        
}
发现个问题,这个虽然能编译出来,但是不能用!

[[it] 本帖最后由 独孤小梦 于 2008-7-25 01:03 编辑 [/it]]

编程小菜
2008-07-25 00:52
独孤小梦
Rank: 1
等 级:新手上路
威 望:1
帖 子:338
专家分:0
注 册:2008-6-5
收藏
得分:0 
呵呵,8楼正确回答!
错误,一开始我使用变量,来搞,后来看看书,必须使用常量表达式!呵呵!
谢谢大家^

编程小菜
2008-07-25 14:43
快速回复:又一个switch的用法问题……
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016600 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved