资源描述:
《实验8复杂数据类型》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验8复杂数据类型(一)、实验目的1.掌握结构体、结构体类型的数组、指向结构体数据的指针的定义及使用方法。2.了解共用体数据类型、枚举数据类型的定义及使用方法。(二)、知识提示1.结构体变量成员的引用方法是:变量名.成员名,结构体变量成员的使用方法和单个变量一样。不能将结构体变量作为一个整体进行输入或输出,一般都是对其成员变量逐个操作。2.指向结构体变量的指针定义的一般形式为:struct结构体类型名*指针变量名;3.通过指向结构体变量的指针引用结构体成员的一般形式为:(*结构体指针变量).成员名或结构体指针变量->成员名4.不
2、能利用初始化给共用体变量赋值。在给共用体变量赋值时,最新的成员有效,其它成员的值将被覆盖。5.枚举元素作为常量是有值的,C语言编译按定义时的顺序使它们的值为0,1,2…。(三)、实验内容【题目1】改正下列程序中的错误,使之具有如下功能:输出结构体变量的学号、姓名及年龄。#includeintmain(){struct{charnum[7];charname[20];intage;}student;student={"200901","zhangsan",20};printf("%s,%s,%d",stude
3、nt);}答案#includeintmain(){struct{charnum[7];charname[20];intage;}student={"200901","zhangsan",20};printf("%s,%s,%d",student.num,student.name,student.age);}【题目2】阅读下列程序,写出预习结果。然后上机验证。#includeintmain(){unionstu/*定义共用体类型*/{intnum;floatscore;char*name;}
4、student;student.num=1010;student.score=80;student.name="zhangsan";printf("%f",student.score);return0;}答案0.000000【题目3】阅读下列程序,写出预习结果。然后上机验证。#includeintmain(){enumweekday{sun,mon,tue,wed,thu,fri,sat}d1,d2,d3;d1=sun;d2=mon;d3=tue;printf("%d,%d,%d",d1,d2,d3);re
5、turn0;}答案:【题目4】将以下程序补充完整,实现:输出数组中三个学生的姓名。#includestructstudent/*定义结构体类型*/{intnum;charname[20];intage;};intmain(){structstudent*p;structstudentstud[3]={{"200801","zhang",20},{"200802","li",21},{"200803","wang",19}};for(____;p6、_);return0;}答案#includestructstudent/*定义结构体类型*/{intnum;charname[20];intage;};intmain(){structstudent*p;structstudentstud[3]={{200801,"zhang",20},{200802,"li",21},{200803,"wang",19}};for(p=stud;pname);printf("%s",(*p).name);ret
7、urn0;}【题目5】编程实现:有10个学生,每个学生的数据包括学号、姓名和三门课的成绩。从键盘输入10个学生的相关信息,计算并且输出每个学生三门课的平均成绩,以及平均分最高的学生的所有信息(包括学号、姓名、三门课的成绩和平均分数)。提示:用循环语句求出每个学生的平均分,然后再从这10个平均分中求出最高分,并记录该同学的元素下标,最后按要求输出结果。#include#defineN10structStudent{intnum;charname[20];floatscore[3];floataver;};intm
8、ain(){voidinput(structStudentstu[]);structStudentmax(structStudentstu[]);voidprint(structStudentstu);structStudentstu[N],*p=stu;inp