更新时间:2019-05-10 15:47:24浏览次数:1+次
题目:
4.加入Benevolent Order of Programmer后,在BOP大会上,人们便可以通过加入者的真实姓名、头衔或秘密BOP姓名来了解他(她)。请编写一个程序,可以使用真实姓名、头衔、秘密姓名或成员偏好来列出成员。编写该程序时,请使用下面的结构:
// Benevolent Order of Programmers name structure
struct bop{
char fullname[strsize]; // real name
char title [strsize]; // job title
char bopname[strsize]; // secret BOP name
int preference; // 0=fullname, 1=title,2=bopname
};
该程序创建一个由上述结构组成的小型数组,并将其初始化为适当的值。另外,该程序使用一个循环,让用户在下面的选项中进行选择:
a. display by nameb. display by title注意,"display by preference" 并不意味着显示成员的偏好,而是意味着根据成员的偏好来列出成员。
c. display by bopname d. display by preference
q. quit
Benevolent Order of Programmers Report
a. display by name b. display by title
c. display by bopname d. 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!
答案: 书上无答案。
C++技术网辅导详解解答:
参考代码:
#include <iostream>
struct bop {
char fullname[50]; // real name
char title[50]; // job title
char bopname[50]; // secret BOP name
int preference; // 0=fullname, 1=title ,2=bopname
};
using namespace std;
int main()
{
struct bop arr_bop[5] = {
{"Wimp Macho","T-Wimp","Bop-Wimp",0},
{"Raki Rhodes","Junior Programmer","Bop-Raki",1},
{"Celia Laiter","T-Celia","MIPS",2},
{"Hoppy Hipman","Analyst Trainee","Bop-Hoppy",1},
{"Pat Hand","LOOPY","Bop-Pat",1 }
};
int ch;
cout << "a.display by name b.display by title\n";
cout << "c.display by bopname d.display by preference\n";
cout << "q.quit\nEnter your choice:";
while (ch = cin.get())
{
if (ch == '\n')continue;
switch (ch)
{
case 'a':
for (int i = 0; i < 5; i++)
{
cout << arr_bop[i].fullname << endl;
}
break;
case 'b':
for (int i = 0; i < 5; i++)
{
cout << arr_bop[i].title << endl;
}
break;
case 'c':
for (int i = 0; i < 5; i++)
{
cout << arr_bop[i].bopname << endl;
}
break;
case 'd':
for (int i = 0; i < 5; i++)
{
switch (arr_bop[i].preference)
{
case 0:
cout << arr_bop[i].fullname << endl;
break;
case 1:
cout << arr_bop[i].title << endl;
break;
case 2:
cout << arr_bop[i].bopname << endl;
break;
default:
break;
}
}
break;
case 'q':
cout << "Bye!\n";
exit(0);
default:
break;
}
cout << "Next choice:";
}
return 0;
}
这题在选择d上有点绕。选择d依然要显示所有成员的信息,只是显示的信息是根据每一个成员的偏好来显示成员显示的信息的。另外,在初始化合适的值又要确保输出的结果如示例那样,那么我们要根据输出的信息对初始化的内容进行还原。输入a输出了所有成员的名字,那么可以确定数组的长度和名称。输入d显示的内容各不相同,根据内容的性质,可以推断出每一个成员的偏好号。那么其他不会显示的内容则可以自行设定了。输入q的时候,如果我们想退出循环,靠一个break是不够的,所以我们使用exit函数来结束了程序。
本题涉及到两个循环的使用,还有两个switch的使用,还是将他们进行嵌套实现的。所以本题是比较综合的。但是解答的方法是一步步的去分析题目的信息,先将能够确定的信息先写出来,然后一步步就水到渠成了。
相关资讯