![]() |
#2
jiarujian2008-11-15 23:07
没人回,不小心自己研究出来了
#include<iostream.h>
union num{ //共用体定义手机号码和寝室号码 char phonenum[9]; char bedroomnum[8]; }; enum attribute{ //枚举类型定义老师和学生 teacher,student }; struct message{ //结构体定义姓名,属性,联系方式 char name[20]; attribute ts; num phone; }; message input(message m1) //定义一个message类型的input用来输入的函数 { cout<<"输入姓名,身份,联系方式"<<endl; cin>>m1.name; int i; cin>>i; //由于枚举类型不能直接输入,所以用条件语句根据条件分别输入 if(i==0) { m1.ts=teacher; //0代表老师 cin>>m1.phone.phonenum; } else { m1.ts=student; //其他数据代表学生 cin>>m1.phone.bedroomnum; } return m1; //返回m1的值 } void output(message m1) //定义一个无返回值类型的output函数用于输出 { if(m1.ts==0) //同样根据利用条件语句根据不同条件输出不同内容 cout<<m1.name<<'\t'<<"老师"<<'\t'<<m1.phone.phonenum<<endl; else cout<<m1.name<<'\t'<<"学生"<<'\t'<<m1.phone.bedroomnum<<endl; } void main() { message note[5]; //定义一个message结构体类型的note数组 for(int i=0;i<5;i++) //循环输入内容,引用自定义函数input note[i]=input(note[i]); cout<<"姓名"<<'\t'<<"身份(老师输入0,学生输入1)"<<'\t'<<"联系方式"<<endl; for(i=0;i<5;i++) output(note[i]); cout<<"输入你所要查询内容的信息(姓名)"<<endl; char find[20]; //定义字符串数组 cin>>find; //输入 for(i=0;i<5;i++) //利用循环来查找 { if(find[0]==note[i].name[0]) //如果满足首个字符相同即可输出内容(有点偷懒的嫌疑!!) output(note[i]); } } |
在 c++中如何查询的问题!
某个实验室有老师和学生,现在需要一个通讯录,包括三项:姓名、属性(老师/学生)、联系方式(电话或宿舍号),老师有电话,学生只有宿舍号。
编写函数实现:通讯录的一条信息的输入,所有信息的输出显示、根据姓名查询某个人的信息并显示。
编写主程序实现:定义通讯录数组(长度小于100),输入5个人的信息、查询一个人的信息、输出5个人的信息。
分析提示:这是一个结构体、共用体、枚举类型的综合应用题。关于每个人的属性,只有两种情况(老师或学生),适合用枚举类型;关于电话和宿舍号,对于每个人,只有二者之一,适合用共用体类型。而每个人的信息,包含三项,适合用结构体类型。
下面是我根据问题只是弄出来输入和输出了!如何查询啊!?
希望高手们帮我看看!对了!麻烦再帮我加上注释吧!我怕我看不懂!
#include<iostream.h>
struct message{
char name[20];
char attribute[10];
char num[9];
};
union num{
char phonenum[9];
char bedroomnum[8];
};
enum attribute{
teacher,student
};
message input(message m1)
{
cout<<"输入姓名,身份,联系方式"<<endl;
cin>>m1.name>>m1.attribute>>m1.num;
return m1;
}
void output(message m1)
{
cout<<m1.name<<'\t'<<m1.attribute<<'\t'<<m1.num<<endl;
}
void main()
{
message note[5];
for(int i=0;i<5;i++)
note[i]=input(note[i]);
cout<<"姓名"<<'\t'<<"身份"<<'\t'<<"联系方式"<<endl;
for(i=0;i<5;i++)
output(note[i]);
}