| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2292 人关注过本帖, 1 人收藏
标题:switch多分支选择语句不支持关系、逻辑运算符吗?
只看楼主 加入收藏
YuriGagarin
Rank: 1
等 级:新手上路
帖 子:46
专家分:5
注 册:2008-2-22
结帖率:100%
收藏(1)
 问题点数:0 回复次数:8 
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 amp 分支 逻辑运算符 谭浩强 
2008-04-07 22:24
now
Rank: 1
来 自:广州
等 级:新手上路
帖 子:544
专家分:0
注 册:2007-11-9
收藏
得分:0 
switch(判断表达式)
{
case:常量表达式或常量;break;
。。。。
}

[[it] 本帖最后由 now 于 2008-4-7 22:32 编辑 [/it]]

GIS
Geographic Information System
你在哪里?——》你的坐标?
2008-04-07 22:29
雨中飞燕
Rank: 3Rank: 3
等 级:禁止访问
威 望:8
帖 子:2200
专家分:0
注 册:2007-8-9
收藏
得分:0 
LZ应该重新看看书中的switch的语法

" border="0" />
2008-04-07 22:35
meteor57
Rank: 1
来 自:银河系
等 级:新手上路
帖 子:267
专家分:0
注 册:2007-9-29
收藏
得分:0 
Constant expression required in funtion main
Duplicate case in function main
要求常量表达式

如果想要有switch()
可以用下面的这种形式就可以达到你题目的要求了.
switch(s/250)
{
case 0:......
caxe 1:......
......
}
2008-04-07 22:46
YuriGagarin
Rank: 1
等 级:新手上路
帖 子:46
专家分:5
注 册:2008-2-22
收藏
得分:0 
那么,求闰年这种程序是不是就不能用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写的,和谭的教材无关。
2008-04-08 14:16
张信哲
Rank: 1
等 级:新手上路
帖 子:139
专家分:0
注 册:2008-4-3
收藏
得分:0 
为什么要用switch 呢。一句话就可以了啊
2008-04-08 14:34
meteor57
Rank: 1
来 自:银河系
等 级:新手上路
帖 子:267
专家分:0
注 册:2007-9-29
收藏
得分:0 
也不是不能.用if比较好一点.如果不是要求,还是选最方便的一种吧.
if (year%4 == 0 && year%100 != 0 || year%400 == 0)
   leap =1;
else leap = 0;
2008-04-08 14:41
张信哲
Rank: 1
等 级:新手上路
帖 子:139
专家分:0
注 册:2008-4-3
收藏
得分:0 
恩,我觉得打得麻烦就没打,谢谢楼上帮打了,哈
2008-04-09 21:37
YuriGagarin
Rank: 1
等 级:新手上路
帖 子:46
专家分:5
注 册:2008-2-22
收藏
得分:0 
只是想着,一个程序自己可以用多种方式来尝试,就算是练练吧!!!
2008-04-09 22:21
快速回复:switch多分支选择语句不支持关系、逻辑运算符吗?
数据加载中...
 
   



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

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