读书人

关于switch选择结构解决方案

发布时间: 2012-02-27 10:00:22 作者: rapoo

关于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 封杀吧

读书人网 >C语言

热点推荐