请教,switch case 用法

wycdbg 2012-07-13 12:15:03
我这个习题代码里面使用switch case 标签却编译出来全部都有问题。难道switch只能和while()一起使用?求高人回答下。

#include <stdio.h>
int hs0(int *);
void hs1(void);
void hs2(void);

int main(void)
{
int sr;
while((scanf("%d", &sr)) != EOF)
{
printf("Please choose one of the following;\n"
"1)copy files" " " "2)move files\n"
"3)remove files"" ""4)quit\n");
hs0(&sr);
}

}

int hs0(int * a)
{
if(*a > 0 && *a < 5)
{
switch(*a)
case '1':
hs1();
break;
case '2':
hs2();
break;
case '3':
printf("Hello3\n");
break;
case '4':
printf("Hello4\n");
default : break;
}
else
printf("输入错误请对照菜单重新输入\n");
}

void hs1(void)
{
printf("功能成功\n");
}

void hs2(void)
{
printf("功能成功\n");
}

-------------------Configuration: c - Win32 Debug--------------------
Compiling...
c.c
D:\学习\code\c.c(26) : error C2043: illegal break
D:\学习\code\c.c(27) : error C2046: illegal case
D:\学习\code\c.c(29) : error C2043: illegal break
D:\学习\code\c.c(30) : error C2046: illegal case
D:\学习\code\c.c(32) : error C2043: illegal break
D:\学习\code\c.c(33) : error C2046: illegal case
D:\学习\code\c.c(35) : error C2047: illegal default
D:\学习\code\c.c(35) : error C2043: illegal break
Error executing cl.exe.

c.exe - 8 error(s), 0 warning(s)
...全文
126 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
wycdbg 2012-07-13
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

第一,你用switch的是一个整型变量,case上又是一个char,虽然可以转换,但是不建议使用。
第二,switch需要用一个大括号标志下范围的。所以你得加个括号。
C/C++ code

switch(*a)
{
case 1:
hs1();
break;
case 2:
……
[/Quote]
谢谢,加上大括号后可以使用了。谢谢,函数没有返回值是应为题目没有要求功能实现之类的。。所以就没有写。
W170532934 2012-07-13
  • 打赏
  • 举报
回复
第一,你用switch的是一个整型变量,case上又是一个char,虽然可以转换,但是不建议使用。
第二,switch需要用一个大括号标志下范围的。所以你得加个括号。

switch(*a)
{
case 1:
hs1();
break;
case 2:
hs2();
break;
case 3:
printf("Hello3\n");
break;
case 4:
printf("Hello4\n");
default : break;
}

第三,函数hs0没有返回值。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧