实验09结构体实验报告
- 格式:doc
- 大小:179.50 KB
- 文档页数:8
一、实验目的1. 理解结构体的概念和作用。
2. 掌握结构体的定义、声明和使用方法。
3. 学会通过结构体实现复杂数据的组织和管理。
4. 提高编程实践能力。
二、实验环境1. 编程语言:C/C++2. 操作系统:Windows/Linux3. 编译器:GCC三、实验内容1. 定义一个学生结构体,包含姓名、年龄、性别、学号、成绩等信息。
2. 实现一个函数,用于创建学生结构体实例。
3. 实现一个函数,用于打印学生信息。
4. 实现一个函数,用于计算学生的平均成绩。
5. 实现一个函数,用于查找特定学号的学生信息。
四、实验步骤1. 定义学生结构体```c#include <stdio.h>typedef struct {char name[50];int age;char gender;int id;float score;} Student;```2. 创建学生结构体实例的函数```cStudent createStudent(char name, int age, char gender, int id, float score) {Student stu; = name;stu.age = age;stu.gender = gender;stu.id = id;stu.score = score;return stu;}```3. 打印学生信息的函数```cvoid printStudentInfo(Student stu) {printf("Name: %s\n", );printf("Age: %d\n", stu.age);printf("Gender: %c\n", stu.gender);printf("ID: %d\n", stu.id);printf("Score: %.2f\n", stu.score);}```4. 计算学生平均成绩的函数```cfloat calculateAverageScore(Student stu, int n) {float sum = 0;for (int i = 0; i < n; i++) {sum += stu[i].score;}return sum / n;}```5. 查找特定学号的学生信息的函数```cStudent findStudentById(Student stu, int n, int id) { for (int i = 0; i < n; i++) {if (stu[i].id == id) {return &stu[i];}}return NULL;}```五、实验结果1. 创建一个学生结构体实例```cStudent stu1 = createStudent("Alice", 20, 'F', 1001, 85.5); ```2. 打印学生信息```cprintStudentInfo(stu1);```输出结果:```Name: AliceAge: 20Gender: FID: 1001Score: 85.50```3. 计算平均成绩```cStudent stu2 = createStudent("Bob", 21, 'M', 1002, 90.0); Student stu3 = createStudent("Charlie", 22, 'M', 1003, 92.0); float averageScore = calculateAverageScore(&stu1, 3);printf("Average Score: %.2f\n", averageScore);```输出结果:```Average Score: 88.50```4. 查找特定学号的学生信息```cStudent stuFound = findStudentById(&stu1, 3, 1002); if (stuFound != NULL) {printStudentInfo(stuFound);} else {printf("Student with ID 1002 not found.\n");}```输出结果:```Name: BobAge: 21Gender: MID: 1002Score: 90.00```六、实验总结通过本次实验,我们学习了结构体的概念和作用,掌握了结构体的定义、声明和使用方法。
C语言程序设计A课内实验指导书实验九结构体一、实验目的1、了解和熟悉C语言结构体的概念2、了解和熟悉C语言结构体的定义3、了解和熟悉C语言结构体变量的声明和初始化4、了解和熟悉C语言结构体数组5、了解和熟悉C语言结构体指针6、了解和熟悉C语言结构体作为函数的参数二、实验要求1、正确使用结构体和函数来解决实际问题。
2、注意程序的书写格式,熟练掌握缩进格式的写法。
⏹实验后:提交手写实验报告(模板见附件),须包括以下四部分:实验题目,程序思路(必须画流程图)、执行结果以及总结(学到什么知识、遇到那些错误以及你是如何解决的?)提交程序(VS2010工程文件夹压缩)到教学平台(将执行结果作为注释添付到 C 源文件中)三、相关知识点1、结构体的概念和定义2、结构体变量的声明和初始化3、结构体数组和结构体指针4、结构体作为函数的参数四、实验内容【练习1】:有5个学生,每个学生的数据包括学号、姓名、3门课的成绩(百分制)。
定义表示至少包含上述学生信息的结构体,并用数组存放信息。
即最小包含:#define Length 16#define CourseNumber 3typedef struct student{long id; // 学号char name[Length]; // 姓名int score[CourseNumber]; // 成绩}STU;①定义Input函数,从键盘输入5个学生的数据,要求对输入成绩的合理性进行检查。
函数原型声明:void Input(STU [], int); 其中第二个参数(int型)为STU型的第一个数组参数的长度,余下同。
②定义SortByScore函数,根据学生的平均成绩排序。
函数原型声明:void SortByScore(STU [], int);③定义Output函数,输出5个学生的数据。
函数原型声明:void Output(STU [], int);④定义SortByName函数,根据学生姓名排序。
实验九参考程序实验9-1/*****************************************************************实验9.1**(1)为某商店的商品设计合适的结构体(PRODUCT)。
每一种商品包含编号(number)、* 名称(name)、价格(price)、折扣(discount)4项信息,根据表9—1,为这些信息选择合适的数据类型.*(2)建立2个函数,以实现对商品的操作。
input函数实现商品的输入;* display函数显示商品信息。
要求这2个函数都以商品的结构体(PRODUCT)指针为参数。
*(3)在主函数中为商品键盘定义一个结构体变量(keyboard),利用input函数实现键盘信息的输入;* 定义一个结构体数组(elec_device[3]),利用input函数实现冰箱、空调、电视信息的输入;* 最后利用display函数显示4种商品的信息。
**表9-1**编号名称价格折扣*1010 键盘89。
50 0。
85*1021 冰箱1024.00 0。
95*1022 空调2058.50 0.90*1023 电视3001.88 0。
95*****************************************************************/#include 〈stdio.h>typedef struct _PRODUCT{int iNumber;char strName[32];float fPrice;float fDiscount;}PRODUCT,*PPRODUCT;void input(PRODUCT *pProduct);void display(PPRODUCT pProduct);void main(){int i;PRODUCT kyeboard;PRODUCT elec_device[3];input(&kyeboard);for(i=0;i〈3;i++){input(&elec_device[i]);}display(&kyeboard);for(i=0;i<3;i++){display(&elec_device[i]);}}/******************************************************************函数名称:input()**参数:PRODUCT *pProduct -PRODUCT结构体指针,用来存放输入数据***返回值:无**说明:*该函数用来完成PRODUCT结构体数据的输入。
实验九结构体、共用体与枚举类型实验时间:年月日【实验目的】1、掌握结构体类型、共用体类型和结构体类型变量的定义方法;2、掌握结构体类型变量成员赋值和引用方法;3、学会使用结构体数组;4、掌握共用体和枚举类型数据的使用。
【实验内容】1、结构体类型的定义;2、结构体变量的定义、赋值与使用;3、结构体数组与结构体指针的定义与使用;4、共用体类型的定义,共用体变量的定义与使用;5、枚举类型的定义与使用;6、链表与动态内存分配;7、自定义类型的使用。
【实验步骤】一、在E或F盘上建立以自己的学号命名的文件夹。
二、上机验证与分析题1、写出程序ex9_1.c运行的结果。
/*文件名ex9_1.c*/#include <stdio.h>struct HAR{int x,y;struct HAR *p;}h[2];int main(){h[0].x=1;h[0].y=2;h[1].x=3;h[1].y=4;h[0].p=&h[1];h[1].p=h;printf("%d %d\n",(h[0].p)->x,(h[1].p)->y);return 0;}2、写出程序ex9_2.c运行的结果。
/*文件名ex9_2.c*/#include "stdio.h"void main(){int z;union data{int x;int y;}a;a.x=3;a.y=6;z=a.x+a.y;printf("z=%d\n",z);}3、阅读程序ex9_3.c,预测结果并上机验证。
/*文件名ex9_3.c*/#include <stdio.h>void main(){union data{int i;char ch;float f;}a,b,c;a.i=9;b=a;c=b;printf("b.i=%d,c.i=%d\n",b.i,c.i);}4、运行下列程序,写出结果/*文件名ex9_4.c*/#include <stdio.h>void main(){struct List{int data ;struct List *next;};struct List a[3]={1,&a[1],2,&a[2],3,&a[0]}, * p;p=&a[1] ;printf("%d\n",--p->data);printf("%d\n",p->next->data);printf("%d\n",p--->data);}三、编程题:1、试用结构体定义一个工厂职工的信息表,包含如下成员:工号、姓名、性别、年龄、参加工作日期、联系电话。
结构体实验总结结构体是一种用户自定义的数据类型,可以将不同类型的数据组合在一起,形成一个新的数据类型。
在编程中,结构体非常有用,因为它使得数据的组织和存储更加灵活,方便进行操作和管理。
在本次实验中,我对结构体的使用进行了实验,并总结以下内容。
首先,在实验中,我学会了如何定义和声明一个结构体。
结构体的定义使用关键字“struct”,之后是结构体的名称和一对花括号,花括号中是结构体的成员。
每个成员有一个类型和一个名称,中间用逗号隔开。
通过这种方式,我可以定义具有不同成员的结构体,并使用它们来组织和管理数据。
其次,在实验中,我深入理解了结构体的作用和优点。
结构体的主要作用是将相关的数据组合在一起,形成一个逻辑上的整体。
这样可以方便地对这些数据进行处理,比如传递给函数或者进行操作。
另外,结构体还可以通过使用指针的方式来传递,以提高程序的效率。
结构体的优点在于可以使程序的逻辑更加清晰,代码更加简洁,提高了程序的可读性和可维护性。
然后,在实验中,我学习了如何使用结构体的成员。
在使用结构体的成员时,可以使用“.”操作符来访问成员。
需要注意的是,访问结构体成员需要通过结构体的实例来进行,所以要先创建一个结构体的实例,然后使用“.”操作符来访问成员。
这样,通过访问结构体的成员,我可以实现对结构体中数据的操作和处理。
此外,在实验中,我还了解了结构体的嵌套和指向结构体的指针。
结构体的嵌套是指一个结构体中可以包含另一个结构体作为成员。
通过结构体的嵌套,可以实现更复杂的数据组织和管理。
指向结构体的指针是指指针变量可以指向一个结构体的实例,通过指针可以直接操作和修改结构体中的数据。
结构体的嵌套和指向结构体的指针使得结构体的使用更加灵活和强大。
最后,在实验中,我通过多个实例的练习,巩固了对结构体的理解和应用。
练习包括定义和声明结构体,创建结构体的实例,访问和修改结构体的成员,以及使用结构体的嵌套和指针。
通过这些练习,我掌握了结构体的使用技巧,能够灵活地运用结构体来组织和管理数据。
实验九、结构体程序设计一、实验目的1.掌握结构、结构数组、结构指针的定义及使用;2.掌握简单的链表的定义及使用;3.掌握共用体和枚举类型的定义及使用;4.掌握文件的简单的定义、打开、写、关闭等操作。
二、实验内容1.[题目内容]某考点建立一个考生人员情况登记表、表格内容如下:1)根据上表正确定义该表格内容要求的数据类型。
2)分别输入各成员项数据,并打印输出(为简便,假设有3个考生)编程序,然后上机调试运行程序。
2.[题目内容]某单位进行选举,有5位候选人:zhang、wang、li、zhao、liu。
编写一个统计每人得票数的程序。
要求每个人的信息使用一个结构体表示,5个人的信息使用结构体数组。
3.[题目内容]设张三20岁、李四22岁、王平23岁,编程输出3人中年龄最小者的姓名和年龄。
4.[题目内容]定义一个学生成绩结构体类型,包含“学号”、“姓名”、“性别”、“年龄”、“班级”、“英语”、“数学”、“物理”、“总分”、“名次”等信息。
编写6个函数分别用于:(1)使用结构体数组,输入全班10名学生的上述信息;(2)计算每一个学生的总分、平均分;(3)计算每一门课程的平均分;(4)查找成绩有不及格的学生信息;(5)按学生成绩总分降序排序;(6)输出全班学生的学号、总分及名次。
5.[题目内容]利用上一题的结构类型,创建包含10个结点的无序链表。
编写5个函数分别实现下述功能(参考前面第三部分内容):(1)显示链表;(2)添加结点;(3)删除结点;(4)计算每位学生的总分;(5)按英语成绩排序。
三、课后作业(写实验报告)1.学生成绩管理:有5个学生,每个学生的数据包括学号、班级、姓名、三门课成绩。
从键盘输入5个学生数据,要求打印出每个学生三门课的平均成绩,以及每门课程平均分、最高分学生数据(包括学号、班级、姓名、三门课成绩,平均分)。
(1)定义学生结构体。
(2)用一个函数实现5个学生数据的输入,用另一个函数负责求每个学生三门课程的平均成绩,再用一个函数求出平均分最高的学生并输出该学生的数据。
c语言程序设计—结构体—实验报告
实验报告
一、实验背景
随着计算机科学的发展,数据的处理和存储已经发生了巨大的变化,变得更加结构化和更有效率。
考虑到这一点,结构体在计算机程序设计中尤其重要。
因此,本实验的目的是练习使用C语言编程,设计并实现相应的结构体,来实现一定的功能。
二、实验目标
设计一个结构体struct book,包含书名、作者名、出版社、价格等字段,并实现以下功能:
(1)按照书名查找图书;
(2)将书籍信息以字符串格式输出;
(3)将书籍信息保存到文件中;
三、实验内容
1. 用C语言定义结构体struct book,包含书名字段name(char类型)、作者author(char类型)、出版社publisher(char类型)、价格price(float类型)等信息。
2. 创建一个函数findBook,输入参数为书名字符串,输出参数为书籍信息struct book。
该函数实现按照书名查找图书功能,若查找成功返回书籍信息,否则返回null。
四、实验结果
经过上述步骤,已经编写了相应的C语言程序实现了按照书名查找图书、将书籍信息以字符串格式输出、将书籍信息保存到文件中、从文件中读取书籍信息等功能。
五、总结
本实验中,使用C语言实现了结构体struct book的定义及四个功能的程序,理解并大致掌握了结构体的使用,学会用程序实现数据的存取。
因此,我们可以看到,结构体的使用可以使数据的存取更加有效率和简单,对于程序设计是很重要的一个概念。
实验9-1 结构体和共用体(1)1【实验目的】掌握结构体类型变量的定义和使用掌握结构体类型数组的概念和应用了解链表的概念和操作方法【实验要求】掌握结构体类型变量的定义和使用了解链表的概念和操作方法【实验环境】(1) Microsoft XP操作系统(2) Microsoft VC++ 6.0【实验内容】1、第几天/acmhome/problemdetail.do?&method=showdetail&id=1071描述:给定一个日期,输出这个日期是该年的第几天。
输入输入数据有多组,每组占一行,数据格式为YYYY-MM-DD组成,具体参见sample input ,另外,可以向你确保所有的输入数据是合法的。
输出:对于每组输入数据,输出一行,表示该日期是该年的第几天。
样例输入:2000-01-01样例输出:12、学生成绩/JudgeOnline/problem.php?id=1518题目描述现有有N个学生的数据记录,每个记录包括学号、姓名、三科成绩。
编写一个函数input,用来输入一个学生的数据记录。
编写一个函数print,打印一个学生的数据记录。
在主函数调用这两个函数,读取N条记录输入,再按要求输出。
N<100输入:学生数量N占一行每个学生的学号、姓名、三科成绩占一行,空格分开。
输出:每个学生的学号、姓名、三科成绩占一行,逗号分开。
样例输入2a100 zhblue 70 80 90b200 newsclan 90 85 75样例输出a100,zhblue,70,80,90b200,newsclan,90,85,753、平均分和最高分/JudgeOnline/problem.php?id=1519题目描述有N个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入N个学生的数据,要求打印出3门课的总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课成绩)输入:学生数量N占一行每个学生的学号、姓名、三科成绩占一行,空格分开。
一、实验目的1. 理解结构体的概念和作用。
2. 掌握结构体的定义、声明和初始化方法。
3. 熟悉结构体成员的访问和修改。
4. 学会结构体数组的定义、初始化和访问。
二、实验环境1. 操作系统:Windows 102. 编译器:Visual Studio 20193. 编程语言:C++三、实验内容1. 结构体的定义和声明2. 结构体的初始化3. 结构体成员的访问和修改4. 结构体数组的定义、初始化和访问四、实验步骤1. 结构体的定义和声明```cppstruct Student {char name[50];int age;float score;};```2. 结构体的初始化```cppStudent stu1 = {"张三", 20, 90.5};```3. 结构体成员的访问和修改```cpp// 访问cout << "姓名:" << << endl; cout << "年龄:" << stu1.age << endl; cout << "成绩:" << stu1.score << endl; // 修改stu1.age = 21;stu1.score = 95.5;```4. 结构体数组的定义、初始化和访问```cpp// 定义结构体数组Student stuArray[3];// 初始化结构体数组stuArray[0] = {"李四", 19, 85.5}; stuArray[1] = {"王五", 20, 92.0}; stuArray[2] = {"赵六", 21, 88.5};// 访问结构体数组cout << "第一个学生的姓名:" << stuArray[0].name << endl;cout << "第一个学生的年龄:" << stuArray[0].age << endl;cout << "第一个学生的成绩:" << stuArray[0].score << endl;```五、实验结果1. 定义了一个名为Student的结构体,包含姓名、年龄和成绩三个成员变量。