#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...結(jié)束:");
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 回答
已采納

習(xí)慣受傷
TA貢獻(xiàn)885條經(jīng)驗(yàn) 獲得超1144個(gè)贊
我用VS2015調(diào)試的,這樣就OK:
#include<stdio.h> enum?human?{?fale,?male,?invalid?}; //把兩個(gè)方法命名一下,如果時(shí)fale將和上邊的枚舉沖突了,出錯(cuò)可能是這個(gè)問題。 void?isFale(void) { puts("女。"); } void?isMale(void) { puts("男。"); } enum?human?select(void) { int?tmp; do?{ printf("0...女,1...男,2...結(jié)束:\r\n"); //這里后邊我加了一個(gè)回車符,使得更加美觀一些。 scanf_s("%d",?&tmp); //這里是VC++的安全輸入函數(shù),用VS2015時(shí),如果用scanf將會(huì)收到一個(gè)警告,這不是主要問題 }?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; }
上一個(gè)效果圖:
- 1 回答
- 1 關(guān)注
- 1326 瀏覽
添加回答
舉報(bào)
0/150
提交
取消