switch多分支选择语句不支持关系、逻辑运算符吗?
#include <stdio.h>void main()
{
float p,w,d,f;
int s;
printf("Please input p,w,s:");
scanf("%f,%f,%d",&p,&w,&s);
switch (s)
{
case (s<250): d=0; break;
case (s >= 250 && s < 500): d=2; break;
case (s >= 500 && s < 1000): d=5; break;
case (s >= 1000 && s < 2000): d=8; break;
case (s >= 2000 && s < 3000): d=10; break;
default: d=15;
}
f=p*w*s*(1-d/100.0);
printf("freight=%15.4f\n",f);
}
这是根据谭浩强《C程序设计》(第三版)P110例5.7改写的程序,例题中的程序也是用switch写的。(如果需要,下次再补原程序吧!)
运行后报错,有以下2个提示:
Constant expression required in funtion main
Duplicate case in function main
难道说,[bo]case后面只能是常量一类的表达式,还是我在其它方面出现了纰漏[/bo]??
还望各位多多指教!!
----------------解决方案--------------------------------------------------------
switch(判断表达式)
{
case:常量表达式或常量;break;
。。。。
}
[[it] 本帖最后由 now 于 2008-4-7 22:32 编辑 [/it]]
----------------解决方案--------------------------------------------------------
LZ应该重新看看书中的switch的语法
----------------解决方案--------------------------------------------------------
Constant expression required in funtion main
Duplicate case in function main
要求常量表达式
如果想要有switch()
可以用下面的这种形式就可以达到你题目的要求了.
switch(s/250)
{
case 0:......
caxe 1:......
......
}
----------------解决方案--------------------------------------------------------
那么,求闰年这种程序是不是就不能用switch写了??
#include <stdio.h>void main()
{
int year,leap;
scanf("%d",&year);
switch (year)
{
case (year == (year%4 != 0)): leap=0;
case (year == (year%100 != 0)): leap=1;
case (year == (year%400 != 0)): leap=0;
default: leap=1;
}
if (leap)
printf("%d is",year);
else
printf("%d is not",year);
printf(" a leap year.\n");
}
我是用switch写的,和谭的教材无关。
----------------解决方案--------------------------------------------------------
为什么要用switch 呢。一句话就可以了啊
----------------解决方案--------------------------------------------------------
也不是不能.用if比较好一点.如果不是要求,还是选最方便的一种吧.
if (year%4 == 0 && year%100 != 0 || year%400 == 0)
leap =1;
else leap = 0;
----------------解决方案--------------------------------------------------------
恩,我觉得打得麻烦就没打,谢谢楼上帮打了,哈
----------------解决方案--------------------------------------------------------
只是想着,一个程序自己可以用多种方式来尝试,就算是练练吧!!!
----------------解决方案--------------------------------------------------------