⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 例7.7.txt

📁 《C++程序设计(谭浩强)》代码,均按章节分类
💻 TXT
字号:
例7.7 设有若干个人员的数据,其中有学生和教师。学生的数据中包括: 姓名、号码、性别、职业、年级。教师的数据包括: 姓名、号码、性别、职业、职务。可以看出,学生和教师所包含的数据是不同的。现要求把它们放在同一表格中,见图7.13。
如果job项为s(学生),则第5项为grade(年级)。即Li是3年级的。如果job项是t(教师),则第5项为position(职务)。Wang是prof(教授)。显然对第5项可以用共用体来处理(将class和position放在同一段内存中)。
要求输入人员的数据,然后再输出。为简化起见,只设两个人(一个学生、一个教师)。
程序如下: 
#include <iostream>
#include <string>
#include <iomanip>               //因为在输出流中使用了控制符setw
using namespace std;
struct
{ int num;
char name[10];
char sex;
char job;
union P                   //声明共用体类型
{ int grade;             //年级
char position[10];     //职务
}category;              //成员category 为共用体变量
}person[2];                //定义共用体数组person,含两个元素

int main( )
{ int i;
for(i=0;i<2;i++)                                        //输入两个学生的数据
{cin>>person[i].num>>person[i].name>>person[i].sex>>person[i].job;
if(person[i].job==′s′) cin>>person[i].category.grade; //若是学生则输入年级
else if (person[i].job==′t′) cin>>person[i].category.position;//若是教师则输入职务
}
cout<<endl<<″No.  Name   sex  job  grade/position″<<endl;
for(i=0;i<2;i++)
{if (person[i].job==′s′)
cout<<person[i].num<<setw(6)<<person[i].name<<″    ″<<person[i].sex
<<″    ″<<person[i].job<<setw(10)<<person[i].category.grade<<endl;
else
cout<<person[i].num<<setw(6)<<person[i].name<<″    ″<<person[i].sex
<<″    ″<<person[i].job<<setw(10)<<person[i].category.position<<endl;
}
return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -