#include<stdio.h>
enum human {fale,male,invalid};
void fale(void)
{
puts("女。");
}
void male(void)
{
puts("男。");
}
enum human select(void)
{
int tmp;
do{
printf("0...女,1...男,2...结束:");
scanf("%d",&tmp);
}while(tmp<fale||tmp>invalid);
return (enum human)tmp;
}
int main(void)
{
enum human selected;
do{
switch(selected=select())
{
case fale :fale();break;
case male :male();break;
}
}while(selected!=invalid);
return 0;
}
1 回答
已采纳
习惯受伤
TA贡献885条经验 获得超1144个赞
我用VS2015调试的,这样就OK:
#include<stdio.h>
enum human { fale, male, invalid };
//把两个方法命名一下,如果时fale将和上边的枚举冲突了,出错可能是这个问题。
void isFale(void)
{
puts("女。");
}
void isMale(void)
{
puts("男。");
}
enum human select(void)
{
int tmp;
do {
printf("0...女,1...男,2...结束:\r\n");
//这里后边我加了一个回车符,使得更加美观一些。
scanf_s("%d", &tmp);
//这里是VC++的安全输入函数,用VS2015时,如果用scanf将会收到一个警告,这不是主要问题
} while (tmp<fale || tmp>invalid);
return (enum human)tmp;
}
int main(void)
{
enum human selected;
do {
switch (selected = select())
{
case fale:isFale(); break;
case male:isMale(); break;
}
} while (selected != invalid);
return 0;
}上一个效果图:

- 1 回答
- 1 关注
- 1343 浏览
添加回答
举报
0/150
提交
取消
