第七章用户自定义数据类型

来源:互联网 发布:sqlserver数据库 编辑:程序博客网 时间:2024/05/21 08:47
//p200//定义结构体变量 student1,student2,对student2初始化并把其值赋给student1,输出student1的各个成员#include <iostream>using namespace std;struct Date//声明结构体类型Date{int month;int day;int year;};struct Student//声明结构体类型Student{int num;char name[20];char sex;Date birthday;//声明 birthday为Date类型的成员float score;}student1,student2={10002,"Wang Li",'f',5,23,1992,89.5};int main(){student1=student2;//将student2各成员的值赋给student1的相应成员并输出cout<<student1.num<<endl;cout<<student1.name<<endl;cout<<student1.sex<<endl;cout<<student1.birthday.month<<'/'<<student1.birthday.day<<'/'<<student1.birthday.year<<endl;cout<<student1.score<<endl;return 0;}

运行结果:


//p202//结构体数组举例,对三个候选人进行投票统计#include <iostream>using namespace std;struct Person//声明结构体类型Person{char name[20];int count;};int main(){Person leader[3]={"Li",0,"Zhang",0,"Sun",0};//定义Person类型的数组,内容为3个候选人名单及票数int i,j;char leader_name[20];for(i=0;i<10;i++){cin>>leader_name;for(j=0;j<3;j++)if(strcmp(leader_name,leader[j].name)==0)//如果与某一候选人姓名相同,则给他加一票leader[j].count++;}cout<<endl;for(i=0;i<3;i++)cout<<leader[i].name<<":"<<leader[i].count<<endl;return 0;}
运行结果:


//p204//指向结构体变量的指针,定义指针变量p指向结构变量stu,通过指针变量输出各成员的值#include <iostream>#include <string>using namespace std;int main(){struct Student//声明结构体类型Student{int num;string name;char sex;float score;};Student stu;//定义Student类型的变量stuStudent *p=&stu;//定义p为指向Student类型数据的指针变量并指向stustu.num=10301;stu.name="Wang Fang";stu.sex='f';stu.score=89.5;cout<<stu.num<<" "<<stu.name<<" "<<stu.sex<<" "<<stu.score<<endl;cout<<(*p).num<<" "<<(*p).name<<" "<<(*p).sex<<" "<<(*p).score<<endl;return 0;}
运行结果:


//206//建立一个链表,由三个学生数据的结点组成,输出各结点中的数据#define NULL 0#include <iostream>using namespace std;struct student {int num;float score;struct student *next;};int main(){student a,b,c,*head,*p;a.num=31001;//对结点a的num和score成员赋值a.score=89.5;b.num=31003;//对b赋值b.score=90;c.num=31007;//对c赋值c.score=85;head=&a;//将结点a的的起始地址赋予头指针heada.next=&b;//将结点b的起始地址赋予a结点的next成员b.next=&c;//将结点c的起始地址赋予b结点的next成员c.next=NULL;//结点c的next成员不存放其他结点地址p=head;//使p指针指向a结点do{cout<<p->num<<" "<<p->score<<endl;//输出p指向结点的数据p=p->next;//使p指向下一个结点}while(p!=NULL);//输出完c结点后p的值为NULLreturn 0;}
运行结果:


//p208//用结构体变量作函数参数#include <iostream>#include <string>using namespace std;struct Student//声明结构体类型Student{int num;string name;float score[30];};int main(){void print(Student);//函数声明,形参类型为结构体StudentStudent stu;//定义结构体变量stu并对各变量赋值stu.num=12345;stu.name="Li Fang";stu.score[0]=67.5;stu.score[1]=89;stu.score[2]=78.5;print (stu);//调用print函数,实参为结构体类型,输出stu各成员的值return 0;}void print(Student stu)//定义print函数,形参为结构体类型{cout<<stu.num<<" "<<stu.name<<" "<<stu.score[0]<<" "<<stu.score[1]<<" "<<stu.score[2]<<endl;}
运行结果:


//p208//用指向结构体变量的指针作实参#include <iostream>#include <string>using namespace std;struct Student{int num;string name;float score[3];}stu={123456,"Li Fang",67.5,89,78.5};int main(){void print(Student *);//函数声明,形参为指向Student类型数据的指针变量Student *pt=&stu;//定义基类型为Student的指针变量pt,并指向stuprint(pt);//实参为指向结构体变量stu的指针变量return 0;}void print(Student *p)//定义函数,形参p是基类型为Student的指针变量{cout<<p->num<<" "<<p->name<<" "<<p->score[0]<<" "<<p->score[1]<<" "<<p->score[2]<<endl;}
运行结果:


//p209//用结构体变量的引用作函数参数#include <iostream>#include <string>using namespace std;struct Student{int num;string name;float score[3];}stu={12345,"Li Li",67.5,89,78.5};int main(){void print(Student &);//函数声明print(stu);//实参为结构体Student变量return 0;}void print(Student &stud)//函数定义形参为结构体Student变量的引用{cout<<stud.num<<" "<<stud.name<<" "<<stud.score[0]<<" "<<stud.score[1]<<" "<<stu.score[2]<<endl;}
运行结果:


//p211//用new和delete运算符进行动态分配和撤销存储空间#include <iostream>#include <string>using namespace std;struct Student//声明结构体类型Student{string name;int num;char sex;};int main(){Student *p;//定义指向结构体类型Student的数据的指针变量pp=new Student;//用new运算符开辟一个存放Student型数据的空间,把地址赋给pp->name="Wang Fang";//向结构体变量的成员赋值p->num=10123;p->sex='m';cout<<p->name<<endl;//输出各成员的值cout<<p->num<<endl;cout<<p->sex<<endl;delete p;//撤销该空间return 0;}
运行结果:


原创粉丝点击