问题描述: 编写一个程序,可以使用真实姓名、头衔、秘密姓名或成员偏好来列出成员。编写该程序是,请使用下面的结构:
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;
}
注:因书上题目中未明确结构体中的数据是输入还是直接初始化,这里就直接选择初始化了,改为用户输入也是很简单的,把结构体数组的空间变大,循环输入就可以。
标签:char,第一个,int,头衔,问题,preference,姓名,第五天,cout From: https://www.cnblogs.com/czfznb/p/17327275.html