猿问

哪位大神帮忙看看(C语言枚举法)

#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;
}


儚三姩
浏览 1281回答 1
1回答

习惯受伤

我用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; }上一个效果图:
随时随地看视频慕课网APP
我要回答