第五天第一个问题

发布时间 2023-04-17 20:21:30作者: 序章0

问题描述: 编写一个程序,可以使用真实姓名、头衔、秘密姓名或成员偏好来列出成员。编写该程序是,请使用下面的结构:

struct bop{

  char fullname[strsize];//真实姓名

  char title[strsize];//头衔

  char bopname[strsize];//秘密姓名

  int preference;//成员偏好 0=真实名字,1=头衔,2=秘密姓名

};

该程序创建一个由上述结构组成的小型数组,并将其初始化为适当的值。另外,该程序使用一个循环,让用户在下面的选项中进行选择:

  a.display by name  b.display by title

  c.display by bopname   d.display by preference

  q.quit

注意,“display by preference”并不意味着显示成员的偏好,而是意味着根据成员的偏好来列出成员。例如,如果偏好号为1,则选择d将显示程序员的头衔。运行情况如下:

解决思路:

1.用cout语句打印选项给用户选择

2.创建一个循环体,只有读到用户输入q才会停止

3.循环体中建立一个char变量,读入用户输入到变量中去,如果是a则打印结构体数组中的真实姓名,b打印头衔,c打印秘密姓名,d如果偏好是0打印名字,1打印头衔,2打印秘密姓名

代码:

#include <iostream>
using namespace std;
const int strsize = 100;
struct bop{

char fullname[strsize];//真实姓名

char title[strsize];//头衔

char bopname[strsize];//秘密姓名

int preference;//成员偏好 0=真实名字,1=头衔,2=秘密姓名

};
bop c[5];
int main()
{
c[0] =
{
"姓名1",
"头衔1",
"秘密名字1",
0
};
c[1] =
{
"姓名2",
"头衔2",
"秘密名字2",
1
};
c[2] =
{
"姓名3",
"头衔3",
"秘密名字3",
2
};
c[3] =
{
"姓名4",
"头衔4",
"秘密名字4",
1
};
c[4] =
{
"姓名5",
"头衔5",
"秘密名字5",
2
};
char b;
cout << "BOP report" << endl;
cout << " a.display by name  b.display by title"<<endl;
cout << " c.display by bopname   d.display by preference" << endl;
cout << " q.quit"<<endl;
cout << "enter your choice:";
cin >> b;
while (1)
{
if (b == 'a')
{
for (int i = 0; i < 5; i++)
{
cout << c[i].fullname<<endl;
}
}
if (b == 'b')
{
for (int i = 0; i < 5; i++)
{
cout << c[i].title << endl;
}
}
if (b == 'c')
{
for (int i = 0; i < 5; i++)
{
cout << c[i].bopname << endl;
}
}
if (b == 'd')
{
for (int i = 0; i < 5; i++)
{
if (c[i].preference == 0)
{
cout << c[i].fullname << endl;
}
if (c[i].preference == 1)
{
cout << c[i].title << endl;
}
if (c[i].preference == 2)
{
cout << c[i].bopname << endl;
}
}
}
if (b == 'q')
break;
cout << "next choice:";
cin >> b;
}
cout << "Bye!";
return 0;
}

注:因书上题目中未明确结构体中的数据是输入还是直接初始化,这里就直接选择初始化了,改为用户输入也是很简单的,把结构体数组的空间变大,循环输入就可以。