关于switch选择结构解决方案
关于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)
{
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; }