C++Primer Plus第六章分支语句和逻辑运算编程练习6.11第4题用到switch,enum,结构体枚举等知识

学习项目:
4.加入 Benevolent Order ofProgrammer后,在 BOP 大会上,人们便可以通过加入者的真实姓名、头衔或秘密 BOP姓名来了解他(她)。
请编写一个程序,可以使用真实姓名、头衔、秘密姓名或成员偏好来列出成员。编写该程序时,请使用下面的结构:
//Benevolent Order of Programmers name structure
struct bop {
char fullname[strsize];//real name
char titlelstr[size];// job title
char bopnamelstr[size];//secret Bop name
int preference; //0=fullname,1=title,2=bopname
};
该程序创建一个由上述结构组成的小型数组,并将其初始化为适当的值。另外,该程序使用一个循环让用户在下面的选项中进行选择:
a.display by name b.display by title
c.display by bopname d.display by preference
q.quit

注意,“display by preference”并不意味着显示成员的偏好,而是意味着根据成员的偏好来列出成员。
例如,如果偏好号为1,则选择d将显示程序员的头衔。该程序的运行情况如下 :
Benevolent Order ofProgrammers Report
a.display by nameb.display by title
c.display by bopnamed.display by preference
q.quit
Enter your choice : a
Wimp Macho
Raki Rhodes
Celia Laiter
Hoppy Hipman
Pat Hand
Next choice : d
wimp Macho
Junior Programmer
MIPS
Analyst Trainee
LOOPY
Next choice : q
Bye !
这里由于翻译的原因,攒齐把d菜单改为如下的意思,起始我并没有理解他这句话的意思,

#pragma region 练习4.cpp
/*


*/
#if 1
#include <iostream>
#include<cctype>
#include <string.h>
const unsigned   strsize = 20;
const unsigned  size = 20;
enum pref_t
{
	FULLNAME,
	TITLE,
	BOPNAME
};
//Benevolent Order of Programmers name structure
struct bop {
	char fullname[strsize];	//真实姓名
	char titlelstr[size];	// 职称
	char bopnamelstr[size];	//乳名
	pref_t preference;			//偏好
};
int main()
{

	using namespace std;
	bop people[5] = {

		{"阳 阳","工程师","苹果",TITLE},
		{"小 汪","消防师","梨子",BOPNAME},
		{"刘 效力","注册师","杆子",FULLNAME},
		{"赵 效力","电子师","橙子",TITLE},
		{"忘 效力","攻防师","葡萄",BOPNAME}
	};
	cout << "a.display by name\t" << "b.display by title" << endl;
	cout << "c.display by bopname\t" << "b.display by preference" << endl;
	cout << "q.Quit" << endl;
	char ch;
	cout << "Enter your choice:";
	while (cin >> ch && ch != 'q')
	{

		switch (ch)
		{
		case 'a':
			for (int i = 0; i < 5; i++)
			{
				cout << people[i].fullname << endl;
			}
			break;
		case 'b':
			for (int i = 0; i < 5; i++)
			{
				cout << people[i].titlelstr << endl;
			}
			break;

		case 'c':
			for (int i = 0; i < 5; i++)
			{
				cout << people[i].bopnamelstr << endl;
			}
			break;

		case 'd':
			for (int i = 0; i < 5; i++)
			{
				cout << people[i].titlelstr << "\t" << people[i].fullname << endl;
			}
			break;
		default:
			break;
		}
		cout << "a.display by name\t" << "b.display by title" << endl;
		cout << "c.display by bopname\t" << "b.display by preference" << endl;
		cout << "q.Quit" << endl;

	}
	return 0;
}
#endif
#pragma endregion

这里,基本能满足项目题目要求,所以题目完成

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值