又一个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]]