#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 关注
- 1280 浏览
添加回答
举报
0/150
提交
取消