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