为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C
儚三姩 2017-02-19 17:03:33
#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;
}

上一个效果图:

//img1.sycdn.imooc.com//58a988d300011ff104070251.jpg

查看完整回答
1 反对 回复 2017-02-19
  • 1 回答
  • 1 关注
  • 1280 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信