Quantcast
Channel: CSDN博客推荐文章
Viewing all articles
Browse latest Browse all 35570

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

$
0
0
//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类型的变量stu
	Student *p=&stu;//定义p为指向Student类型数据的指针变量并指向stu
	stu.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的的起始地址赋予头指针head
	a.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的值为NULL
	return 0;
}
运行结果:


//p208
//用结构体变量作函数参数
#include <iostream>
#include <string>
using namespace std;
struct Student//声明结构体类型Student
{
	int num;
	string name;
	float score[30];
};
int main()
{
	void print(Student);//函数声明,形参类型为结构体Student
	Student 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,并指向stu
	print(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的数据的指针变量p
	p=new Student;//用new运算符开辟一个存放Student型数据的空间,把地址赋给p
	p->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;
}
运行结果:


作者:kuangxiaoguo0123 发表于2013-5-1 16:22:05 原文链接
阅读:44 评论:0 查看评论

Viewing all articles
Browse latest Browse all 35570

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>