首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

关于switch选择结构解决方案

2012-02-27 
关于switch选择结构为什么下面这样不可仪呢?#includestdio.h#includestdlib.hint main(void){int a s

关于switch选择结构
为什么下面这样不可仪呢?
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
  int a ;
  scanf ("%d" , &a ) ;
  switch (a)
  {
  case >0 : printf("ok") ; break ;
  case <0 : printf("oh ,no") ; break ;
  default : ; 
  }
  system("pause") ;
  return 0 ;
}

请问case 后面只能跟确定的值, 不能跟判断式吗?
能的话该怎么改?谢谢

[解决办法]
switch (a>0)
case true
case false
[解决办法]
在case中肯定不能进行条件判断.
你用嵌套的if else 不就解决了吗?
[解决办法]

int main(void) 

int a ; 
int charge;
scanf ("%d" , &a ) ;
charge = a;
switch (charge>0) 

case (1) : printf("ok") ; break ; 
case (0) : printf("oh ,no") ; break ; 
default : ;

system("pause") ; 
return 0 ; 


用if-else多好,switch的优点不在这种简单的逻辑判断里,主要用在用于多分支选择语句中.
[解决办法]
case只能接确定的值
楼主那样的用if, else if, else
[解决办法]
只有ture and false 用if{} else{}是不是更简单
[解决办法]
case 只能和确定的值比较,不能比较条件。后面可接整形,字符型等等
[解决办法]
case (charge>0) : printf("ok") ; break ;
 case (charge <0) : printf("oh ,no") ; break ; 
case label does not reduce to an integer constant 应该是这个错误 !!
[解决办法]
printf("输入多项式%s 的项(共%d项):\n" , L , n ) ;
输不出是因为你的L是结构,而输出格式是字符串,当然不能打印出信息了.
[解决办法]
L不是C语言的内置类型,是你自己定义的,故不能直接用printf语句来输出!若是你用的是VC++的话,而可以考虑重载来输出!若用的是TC,则除了自己写隔函数外,实在没法!
[解决办法]
switch语句的格式为
switch(表达式)
{
case 常量表达式1: 语句1
case 常量表达式2: 语句2
^^^^^
case 常量表达式n: 语句n
default: 语句n+1
}

所以case只能加表达式,得到一个常量
如果要用判断式我想能这样改:

#include <stdio.h> 
#include <stdlib.h> 
int main(void) 

int a ; 
scanf ("%d" , &a ) ; 
if(a>0) 
a=0;
else
a=1;
switch (a) 

case 0 : printf("ok") ; break ; 
case 1 : printf("oh ,no") ; break ; 
default : ;

system("pause") ; 
return 0 ; 


[解决办法]
多项式名字??在你的程序里根本没有看到有任何字符串啊.
如果是结构成员,可以printf("输入多项式%s 的项(共%d项):\n" , L->name , n ) ;打印出来的.

[解决办法]

C/C++ code
#include <stdio.h> #include <stdlib.h> int main(void) {     int a ;     scanf ("%d", &a);    switch (a > 0)     {     case 1 :         printf("ok");        break ;     case 0 :        printf("oh ,no");        break ;     default :        break;      }         system("pause");    return 0; } 


[解决办法]

探讨
只有ture and false 用if{} else{}是不是更简单

[解决办法]
#include <stdio.h> 
#include <stdlib.h> 
int main(void) 

int a ; 
scanf ("%d" , &a ) ; 
switch (a>0) 

case true : printf("ok") ; break ; 
case false : printf("oh ,no") ; break ; 
default : ;

system("pause") ; 
return 0 ; 
}
[解决办法]
我记得CSND里有个关于switch 的文章 说在汇编的时候是如何解析的.....

你看一下就明白了
[解决办法]
引用楼主 dulvtianya 的帖子:
......
switch (a)
{
case >0 : printf("ok") ; break ;
case <0 : printf("oh ,no") ; break ;
default : ;
}
........
}


[解决办法]
使用下面的方法来解决10楼的问题,一定要给分哦

C/C++ code
#define showIndication(exp, n) {printf(("输入多项式%s 的项(共%d项):\n", ##exp, n);}
[解决办法]
不好意思,大意了,上面的code里printf后面多了一个括号~~~~
[解决办法]
printf("输入多项式%s 的项(共%d项):\n" ," L" , n ) ;
[解决办法]
switch 只是在多分支时 看起来简洁罢了
没必要把if else 封杀吧

热点排行