实验09结构体实验报告
结构体编程实验报告
一、实验目的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函数,根据学生姓名排序。
C语言结构体和共用体实验报告
实验九参考程序实验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、试用结构体定义一个工厂职工的信息表,包含如下成员:工号、姓名、性别、年龄、参加工作日期、联系电话。
C语言实验报告9模板
宁夏师范学院数学与计算机科学学院
《高级语言程序设计》实验报告
实姓 名
专业、班级
12级数应(2)班
实验地点
指导教师
郑利珍
时间
一、实验目的及要求
1、熟悉结构体类型的概念和定义方法以及结构体变量的定义和引用。
2、掌握指向结构体变量的指针变量的概念和应用,特别是链表的概念和应用。
签名:郑利珍
日期:2013年月日
成绩
100
2、在上题中,按平均成绩由高到低排序后,输出每个学生的成绩,输出格式与上题相同。
注意:在排序中交换average成员的数据时,其他成员的数据也要作对应的交换。
四、分析与讨论
五、教师评语
1.按时完成实验;
2.实验内容和实验过程记录完整;
3.回答问题完整、正确;
4.有关于实验的心得;
5.实验报告的撰写认真、报告格式符合要求。
3、掌握运算符“。”和“-〉"的应用。
4、掌握共用体的概念和应用。
二、实验设备(环境)及要求
硬件:PC(P 以上,128M以上内存);
软件:Windows XP操作系统、Visual C++ 6.0。
三、实验内容、步骤及结果
1、有5个学生,每个学生的数据包括学号、姓名、3门课的成绩,用赋初值的方法输入5个学生的数据到结构体数组中,输出每个学生的3门课平均成绩(保留2位小数)。输出格式为:
结构体实验总结
结构体实验总结结构体是一种用户自定义的数据类型,可以将不同类型的数据组合在一起,形成一个新的数据类型。
在编程中,结构体非常有用,因为它使得数据的组织和存储更加灵活,方便进行操作和管理。
在本次实验中,我对结构体的使用进行了实验,并总结以下内容。
首先,在实验中,我学会了如何定义和声明一个结构体。
结构体的定义使用关键字“struct”,之后是结构体的名称和一对花括号,花括号中是结构体的成员。
每个成员有一个类型和一个名称,中间用逗号隔开。
通过这种方式,我可以定义具有不同成员的结构体,并使用它们来组织和管理数据。
其次,在实验中,我深入理解了结构体的作用和优点。
结构体的主要作用是将相关的数据组合在一起,形成一个逻辑上的整体。
这样可以方便地对这些数据进行处理,比如传递给函数或者进行操作。
另外,结构体还可以通过使用指针的方式来传递,以提高程序的效率。
结构体的优点在于可以使程序的逻辑更加清晰,代码更加简洁,提高了程序的可读性和可维护性。
然后,在实验中,我学习了如何使用结构体的成员。
在使用结构体的成员时,可以使用“.”操作符来访问成员。
需要注意的是,访问结构体成员需要通过结构体的实例来进行,所以要先创建一个结构体的实例,然后使用“.”操作符来访问成员。
这样,通过访问结构体的成员,我可以实现对结构体中数据的操作和处理。
此外,在实验中,我还了解了结构体的嵌套和指向结构体的指针。
结构体的嵌套是指一个结构体中可以包含另一个结构体作为成员。
通过结构体的嵌套,可以实现更复杂的数据组织和管理。
指向结构体的指针是指指针变量可以指向一个结构体的实例,通过指针可以直接操作和修改结构体中的数据。
结构体的嵌套和指向结构体的指针使得结构体的使用更加灵活和强大。
最后,在实验中,我通过多个实例的练习,巩固了对结构体的理解和应用。
练习包括定义和声明结构体,创建结构体的实例,访问和修改结构体的成员,以及使用结构体的嵌套和指针。
通过这些练习,我掌握了结构体的使用技巧,能够灵活地运用结构体来组织和管理数据。
C语言_实验九、结构体程序设计
实验九、结构体程序设计一、实验目的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语言程序设计—结构体—实验报告
实验报告
一、实验背景
随着计算机科学的发展,数据的处理和存储已经发生了巨大的变化,变得更加结构化和更有效率。
考虑到这一点,结构体在计算机程序设计中尤其重要。
因此,本实验的目的是练习使用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 结构体与共用体
实验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的结构体,包含姓名、年龄和成绩三个成员变量。
c语言结构体实验报告
c语言结构体实验报告实验目的:掌握C语言结构体的基本知识,能够使用结构体对多个变量进行分类管理。
实验内容:1.理解结构体的基本概念结构体是一种用户自定义的数据类型,它由多个不同类型的变量组成,每个变量称为结构体的成员。
2.定义结构体类型定义结构体类型需要使用struct关键字,格式如下:struct 结构体类型名{数据类型成员1;数据类型成员2;...};3.结构体变量的定义与初始化定义结构体变量时,可以像定义简单变量一样使用结构体类型名进行声明,然后使用“.”运算符来访问结构体成员。
结构体变量的初始化方式和普通变量一样,可以用赋值语句或者在定义时用大括号括起来的成员值列表进行初始化。
4.结构体作为函数参数结构体变量可以作为函数参数进行传递,当传递结构体变量时,实际上传递的是结构体变量的拷贝,因此函数在对结构体进行改变时不会影响原来的结构体变量。
5.结构体数组和普通数组一样,结构体数组也是一组相同类型的变量的集合,用于存储多个结构体变量。
在定义结构体数组时,可以使用类似普通数组的方式进行定义。
实验过程:我们按照上述内容进行C语言结构体的实验,具体过程如下:1.定义一个结构体类型,包括两个成员,分别为学生姓名和学生的成绩。
struct student{char name[20];float score;};2.定义并初始化一个学生结构体变量。
struct student s={"Tom",88.5};3.定义一个函数,用于输出学生的姓名和成绩。
void output(struct student s){printf("Name:%s Score:%.2f\n",,s.score);}4.定义一个结构体数组,用于存储多个学生的信息。
struct student stu[3]={{"Tom",88.5},{"Jerry",76},{"Tony",90}};5.调用output函数,输出学生的姓名和成绩。
C语言程序设计—结构体—实验报告
实验报告专业软件工程班级X 班学号_ XXXXXXXXX_ 姓名实验日期:201X年X月X日报告退发(订正、重做)课程C程序设计实验实验名称结构体一、实验目的二、实验环境(描述实验的软件、硬件环境)①软件环境:windows xp/win7等操作系统,Microsoft Visual C++ 6.0编译器;②硬件环境:PC机一台三、实验内容、步骤和结果分析题目一:#include <stdio.h>#include <stdlib.h>struct Stu{int num;char name[20];char sex;int age;float score[3];};void fun(struct Stu *stu, int i){float sum = stu->score[0] + stu->score[1] + stu->score[2], aeg = sum / 3.0;printf("\n第%d位学生的基本信息如下:\n\n", i);printf("学号:(%d)\t姓名:(%s)\t性别:(%c)\t年龄:(%d)\n\n", stu->num, stu->name, stu->sex, stu->age);printf("三科成绩:(%.2f,%.2f,%.2f)\n\n", stu->score[0], stu->score[1], stu->score[2]);printf("总成绩:(%.2f) 平均成绩:(%.2f)\n", sum, aeg);printf("\n+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n"); }int main(){int i, n;printf("The number of students is:");scanf("%d", &n);struct Stu *stu = (struct Stu *)calloc(n, sizeof(struct Stu));for (i = 0; i<n; i++){printf("请输入第%d位学生的基本信息:\n", i + 1);printf("学号:");scanf("%d", &(stu + i)->num);printf("姓名:");scanf("%s", (stu + i)->name);printf("性别:");scanf(" %c", &(stu + i)->sex);printf("年龄:");scanf("%d", &(stu + i)->age);printf("三科成绩:");scanf("%f%f%f", &(stu + i)->score[0], &(stu + i)->score[1], &(stu + i)->score[2]);putchar('\n');}printf("===================================================================\n");for (i = 0; i<n; i++){fun(stu + i, i + 1);}return 0;}题目二:计算每一个结构体的两个变量所表示的长度之和(单位:厘米)(1)分别定义公制METRIC(成员包括:米、厘米)和英制BRITISH(成员包括:英尺、英寸)两个结构体;(2)为每一个结构定义两个变量。
实验09结构体实验报告
实验09结构体实验报告1.学会结构体类型变量的定义和使⽤⽅法。
2.能够运⽤结构体数组编写程序。
3.学会结构体指针的定义使⽤⽅法。
4.能够运⽤结构体指针作函数参数编写程序。
⼆、实验环境(调试程序所使⽤的软硬件环境)软件环境:VC++6.0硬件环境:宏基Intel 奔4 主频2.8GHz,内存256MB三、实验内容、结果及分析1、题⽬1.建⽴⼀个有n(3源程序清单:(调试好的源程序代码)#include "stdafx.h"#include#include#includeusing namespace std;const int N=10;struct rem{String num;string name;double mark[3];double all;};int main (){int n,i,m;double max;rem loq[N];cout<<"请输⼊⼈数"<cin>>n;for(i=0;i{cout<<"请输⼊第"<cin>>loq[i].num>>loq[i].name>>loq[i].mark[0]>>loq[i].mark[1]>>loq[i].mark[2];}for(i=0;i{loq[i].all=loq[i].mark[0]+loq[i].mark[1]+loq[i].mark[2];}max=loq[0].all;for(i=0;i{if(loq[i].all>max){max=loq[i].all;m=i;}}cout<<"总分最⾼的学⽣为"<<<"总分为"<return 0;}主要标识符说明:(源程序中主要标识符含义说明)声明结构体类型rem,包括学号(string类型)、姓名(string类型)、成绩(双精度型)、总成绩(双精度类型)struct rem{String num;string name;double mark[3];double all;};rem loq[N] 定义结构体类型rem变量loqint n,i,m;定义三个整型变量n代表⼈数,i代表循环变量,m⾼成绩的学⽣成绩的⾓标double max,双精度型,最⼤成绩;实验结果:(程序运⾏结果)实验中遇到的问题及解决的⽅法M应付初值2、题⽬2.通讯录排序。
程序设计基础实验报告-结构体的应用
实验五:结构体的应用1. 实验目的与要求(1)学会结构体类型的声明与结构体变量与数组的定义;(2)理结构体指针作函数参数的参数传递原理;(3)理解利用链表组织数据的原理以及会链表的基本操作。
2. 实验内容(1)定义简单的结构体及相应变量的练习;(2)运用所定义的类型及变量编写简单的程序;(3)结构体与数组程序设计练习;(4)结构体与函数以及结构体与指针的应用练习;(5)链表的建立、插入、删除、输出等基本操作。
问题1:维护零件数据库链表1. 问题陈述设计一个程序用来维护仓库存储的零件信息的数据库,该数据库采用链表存储零件信息,包括零件的编号、名称及现有数量。
程序应支持下列操作:添加新零件编号、名称和初始的现货数量。
如果零件已经在数据库中,或者数据库已满,那么程序必须显示出错信息。
给定零件编号,显示出零件的名称和当前的现货数量。
如果零件编号不在数据库中,那么程序必须显示出错信息。
给定零件编号,改变现有的零件数量。
如果零件编号不在数据库中,那么程序必须显示出错信息。
显示列出数据库中全部信息的表格。
必须按照零件编号从小到大的顺序显示。
终止程序的运行。
2. 输入、输出描述输入:插入、搜索、更新、显示和退出等操作命令输出:对应操作命令的执行结果。
3. 演算示例整个程序采用以菜单方式驱动:当用户输入命令i 、s 、u 、p 、q 时分别执行插入、搜索、更新、显示和退出操作。
其中一种可能的执行结果:Enter operation code: iEnter part number: 528Enter part name: Disk driveEnter quantity on hand: 10Enter operation code: sEnter part number: 528Part name: Disk driveQuantity on hand: 10Enter operation code: sEnter part number: 914Part not found.Enter operation code: iEnter part number: 914Enter part name: Printer cableEnter quantity on hand: 5Enter operation code: uEnter part number: 528Enter change in quantity on hand: -2Enter operation code: sEnter part number: 528Part name: Disk driveQuantity on hand: 8Enter operation code: pPart Number Part Name Quantity on Hand528 Disk drive 8914 Printer cable 5Enter operation code: q4. 算法设计程序使用一个链表维护零件信息数据库,在此基础上实现插入、搜索、更新、显示和退出等操作。
大一上期C语言实验报告9 结构体与共用体
成都工业学院·计算机工程学院《C语言程序设计基础》实验报告1.实验目的(1)掌握结构体类型变量的定义和使用;(2)掌握结构体类型数组的概念和使用;(3)掌握链表的概念,初步学会对链表进行操作;(4)掌握共用体的概念和使用。
2.实验内容(1)输入某天的日期,计算该天在给定年份中是第几天。
要求1.定义包含年,月,日信息的结构体类型。
2.利用scanf函数输入年,月,日的值。
3.输出日期以及该日期是给定年份中的第几天。
4.需要对闰年做判定。
(2)在一个结构体数组中,存有三个人的姓名和年龄,输出三人中年龄居中者的姓名和年龄。
要求1.三个人的数据采用直接初始化方式赋值。
2.利用结构体指针实现处理过程。
(3)输入6名学生的学号,姓名和三门课程的成绩,三门课程的名称:(programming,database,network),存入到一个结构体数组中;编写aveScore()函数,其功能是计算学生三门课程的平均成绩,并存到结构体数组中;在主函数中输入学生信息,调用aveScore()函数,并输出学生的姓名和平均分信息。
要求:1.定义结构体类型,包括long snum,char name[],int score[],float ave变量,分别表示学生的学号,姓名,成绩数组和平均分。
2.在主函数中输入学生的学号,姓名,和三门课成绩。
3.调用aveScore()函数,计算学生的平均成绩,存入到结构体函数的ave 变量中。
4.在主函数中输出每个学生姓名和平均分信息。
3.源程序4.运行结果(1)输入某天的日期,计算该天在给定年份中是第几天(2)输出三人中年龄居中者的姓名和年龄(3)记录6个学生3门成绩,并计算平均值5.出现问题及解决办法(1)在输出三人中年龄居中者的姓名和年龄时直接将指针定义成int *p,造成错误解决方法:将指针定义成结构体指针struct student *t;类型(2)在输出三人中年龄居中者的姓名和年龄时未将指针t初始化造成输出错误解决方法:将指针t指向结构体数组p,添加语句:t=p;(3)在讲结构体数组进行排序时出现错误,错误原因是因为中间变量temp为结构体外部的变量,不能访问结构体内部成员解决方法:将temp定义为struct date temp;(4)在对学生姓名和成绩进行录入时,先使用直接访问结构体元素的方式总是出现错误,未找到原因for (i=0;i<6;i++){scanf("%ld&s%d%d%d",&s [i].num,&s [i].name,&s [i].pro,&s[i].data,&s [i].net);}解决方法:定义一个结构体指针,采用指针的方式访问结构体元素for (p=s;p<s+6;p++){scanf("%ld%s%d%d%d",&(p->num),&(p->name),&(p->pro),&(p->data) ,&(p->net));}(5)一些数据在输出时不便与观看,就是用\t和\n等lai控制输出数据的美观性6.实验心得通过练习,了解了结构体变量的基本定义和基础的使用方式,还学会了对结构体类型数组的初始化、基本的输入和输出,但对结构体类型数组内部元素的访问还未完全弄懂,还需要加强练习。
实验报告结构体【精选】
实验报告第 1 页专业__软件工程__ 班级软工1班学号_1230120130xx _ 姓名xx实验日期:2013年11 月1 日报告退发(订正、重做)课程c语言实验设计实验名称结构体一、实验目的(1)掌握一维数组的基本操作;(2)掌握二维数组的基本操作;二、实验环境(描述实验的软件、硬件环境)安装有Microsoft VC++6.0的PC机三、实验内容、步骤和结果分析(列出实验内容,阐明实验步骤及中间的结果或现象、最终结果和现象,对这些结果和现象进行分析,若出现误差也予以分析误差原因)题目一、有n个学生,每个学生的数据包括学号(num)、姓名(name)、性别(sex)、年龄(age)、三门课的成绩(score[3])。
要求从键盘上输入这n个学生的数据,然后调用一个函数来计算每个学生的总分和平均分然后打印所有数据。
(1)源码#include "stdafx.h"#include<stdio.h>#include<string.h>#include<stdlib.h>struct student{long int num;char name[20];char sex;int age;float score[3];};float sum(struct student a){float s=0;int i;for(i=0;i<3;i++)s = s+ a.score[i];return s;}float aver(struct student a){return sum(a)/3;}int main(){int i,j,n;printf("请分配内存空间n = ");scanf("%d",&n);struct student *a=(struct student *)malloc(n*sizeof(student));for(i=0;;i++){printf("请输入第%d位学生的基本信息:(学号=0结束输入)\n",i+1);printf("学号:");scanf("%d",&a[i].num);if(a[i].num==0)break;fflush(stdin);printf("姓名:");gets(a[i].name);printf("性别:");scanf("%c",&a[i].sex);printf("年龄:");scanf("%d",&a[i].age);printf("三科成绩:");scanf("%f%f%f",&a[i].score[0],&a[i].score[1],&a[i].score[2]);printf("\n");}printf("===============================================================\n") ;for(j=0;j<i;j++){printf("学号:<%d>\t姓名<%s>\t性别<%c>\t年龄<%d>\n",a[j].num,a[j].name,a[j].sex,a[j].age);printf("三科成绩:<%.2f, %.2f, %.2f>\n",a[j].score[0],a[j].score[j],a[j].score[2]);printf("总成绩<%.2f> 平均成绩<%.2f>\n",aver(a[j]),sum(a[j]));printf("***************************************************************\n");}free(a);return 0;}(2)运行结果截图题目二、分别定义公制METRIC(成员包括:米、厘米)和英制BRITISH(成员包括:英尺、英寸)两个结构体。
实验9 结构体
实验9 结构体实验9-结构体实验9结构的使用【实验目的】1:掌握结构类型的定义。
2:掌握结构体类型变量的定义,赋值及初始化。
3:掌握结构体类型变量成员的访问。
[调试]1、定义一个学生student结构体类型,其中包含4个成员:姓名、性别、数学成绩、英语成绩。
输输入五名学生类型的相关信息,并分别输出数学和英语成绩最高的学生的所有信息。
要求:按枚举类型定义性别,输出为男性或女性。
提示:structstudent{字符*名称;朗诺;双重数学;双重英语;}s1[5];参考教科书p70页上的例子,找出最大算法。
假设得分最高的是第一个学生。
2定义一个日期结构体变量,要求输入年,月,日,程序能计算本日在本年中是第几天?注意闰年问题。
提示:结构日期{intyear;intmonth;intday;}日期1;cin>>日期1。
月switch(date1.month){案例1:sumd=date1。
白天打破案例2:sumd=date1。
第31天;打破案例3:sumd=date1。
第59天;打破案例4:sumd=date1。
第90天;打破案例5:sumd=date1。
日+120;打破;……。
case12:sumd=date1.day+334;break;}if(((date1.year%4==0sumd=sumd+1;&&date1.year0!=0)||date1.year@0==0)&&日期1。
月份>=3)【思考与练习】1.指出以下程序中的错误并予以纠正。
2下面程序的运行结果是优先于++。
软工1201_2012011288_宋壮_实验九_实验报告
1结构体1.1实验目的●掌握结构体的概念和使用●掌握结构体数组的概念和使用。
●使用malloc和free等动态申请和释放内存1.2上机内容1.有三个学生,每个学生信息包括姓名、年龄、专业、班级、高等数学成绩、英语成绩、程序设计基础成绩等,编写一个程序,实现这三个学生信息的输入与输出,使用结构体数组实现。
源代码如下:#include<stdio.h>void main(){struct student{char name[20];int age;char major[20];char grade[20];int math ;int english;int C;}stu[3];int i;for(i=0;i<3;i++)scanf("%s%d%s%s%d%d%d",stu[i].name,&stu[i].age,stu[i].major, stu[i].grade,&stu[i].math,&stu[i].english,&stu[i].C);for(i=0;i<3;i++)printf("%s%d%s%s%d%d%d\n",stu[i].name,stu[i].age,stu[i].majo r,stu[i].grade,stu[i].math,stu[i].english,stu[i].C);}截图如下:心得体会:在编这道题时我明白了字符串再输入的时候不用加‘&’这个符号,还有我会了用循环来写结构体。
2.改写上面程序,但学生的人数由用户输入获得,使用链表实现。
源代码如下:#include<stdio.h>#include<string.h>struct student{char name[20];int age;char major[20];char grade[20];int math ;int english;int C;struct student *next;};void main(){ struct student a,b,c,*head,*p;strcpy(,"songzhuang");a.age=18;strcpy(a.major,"ruanjian gongcheng");strcpy(a.grade,"ruangong1201");a.math=100;a.english =100;a.C=100;strcpy(,"songzhuang");b.age=18;strcpy(b.major,"ruanjian gongcheng");strcpy(b.grade,"ruangong1201");b.math=100;b.english =100;b.C=100;strcpy(,"songzhuang");c.age=18;strcpy(c.major,"ruanjiang ongcheng");strcpy(c.grade,"ruangong1201");c.math=100;c.english= 100;c.C=100;head=&a;a.next=&b;b.next=&c;c.next=NULL;p=head;do{printf("%s %d %s %s %d %d %d\n",p->name,p->age,p ->major,p->grade,p->math,p->english,p->C);p=p->next;}while(p!=NULL);}截图如下:心得体会:在编这道题时,遇到了好大的问题,‘p=p->next;’这里p我把它写成大写的了,还有要注意输入字符窜要用strcpy。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
const int N=10;
struct rem
{
Stringnum;
string name;
double mark[3];
double all;
};
int main ()
{
int n,i,m;
double max;
rem loq[N];
cout<<"请输入人数"<<endl;
{
i=1;
}
else
i=0;
for(j=0;j<p->month;j++)
{
n=n+b[i][j];
}
n=n+p->day;
return n;
}
主要标识符说明:(源程序中主要标识符含义说明)
声明结构体类型nian,包括年(整型)、月份(整型)、天(整型)
struct nian
{
int year;
int month;
2、题目
2.通讯录排序。建立一个通讯录的结构记录,包括姓名、生日、电话号码。输入n(n<10)个朋友的信息,再按他们的姓名从大到小的顺序依次输出其信息。
源程序清单:(调试好的源程序代码)
#include "stdafx.h"
#include <iostream>
#include <string>
#include <cstring>
四、实验体会(心得、收获)
此次实验我们学习了如何运用结构体来解决一些问题。学会结构体类型变量的定义和使用方法。并且运用结构体数组来进行编程。注意结构体的嵌套使用。并且学会使用带结构指针的参数的函数。在定义变量时要注意附初值,在定义指针时要注意初始化。
cin>>a.month ;
cout<<"请输入第几日"<<endl;
cin>>a.day;
n=find(p);
cout<<"你输入的日期为"<<a.year <<"/"<<a.month<<"/"<<a.day<<endl;
cout<<"是"<<a.year<<"年的第"<<n<<"天"<<endl;
int day;
};
int find(nian *p);
定义一个函数,其参数为结构指针。用于算出输入的日期是第多少天
struct nian a={1,1,1};定义结构nian类型的变指向a
int n;整型,天数
实验结果:(程序运行结果)
实验中遇到的问题及解决的方法
struct corre
{
string name;
date bir;
string tel;
};
corre a[N]定义结构体corre类型数组a[]
int n,i,j;定义三个整型变量n为人数,i,j均为循环变量
string m;string型变量m用于交两个人的姓名
实验结果:(程序运行结果)
实验中遇到的问题及解决的方法
cout<<"请输入电话"<<endl;
cin>>a[i].tel;
}
for(i=0;i<n-1;i++)
{
for(j=0;j<n-1-i;j++)
{
if(a[j].name<a[j+1].name)
{
m=a[j].name;
a[j].name=a[j+1].name;
a[j+1].name=m;
}
for(i=0;i<n;i++)
{
loq[i].all=loq[i].mark[0]+loq[i].mark[1]+loq[i].mark[2];
}
max=loq[0].all;
for(i=0;i<n;i++)
{
if(loq[i].all>max)
{
max=loq[i].all;
m=i;
}
}
cout<<"总分最高的学生为"<<loq[m].name
return 0;
}
int find(nian *p)
{
int n=0,i,j,b[2][13]={0,31,28,31,30,31,30,31,31,30,31,30,31,
0,31,29,31,30,31,30,31,31,30,31,30,31};
if((p->year%4==0&&p->year%100!=0)||p->year%400==0)
1、题目1.建立一个有n(3<n≤10)个学生成绩的结构记录,包括学号、姓名和3门课程的成绩,输出总分最高的学生的姓名和总分。
源程序清单:(调试好的源程序代码)
#include "stdafx.h"
#include <iostream>
#include <string>
#include <cstring>
string m;
cout<<"请输入人数"<<endl;
cin>>n;
for(i=0;i<n;i++)
{
cout<<"请输入第"<<i+1<<"个人的姓名"<<endl;
cin>>a[i].name;
cout<<"输入生日"<<endl;
cin>>a[i].bir.year>>a[i].bir.month>>a[i].bir.day;
cin>>n;
for(i=0;i<n;i++)
{
cout<<"请输入第"<<i+1<<"名同学的学号、姓名和第一二三门课程的成绩"<<endl;
cin>>loq[i].num>>loq[i].name
>>loq[i].mark[0]
>>loq[i].mark[1]
>>loq[i].mark[2];
}
<<"总分为"<<loq[m].all<<endl;
return 0;
}
主要标识符说明:(源程序中主要标识符含义说明)
声明结构体类型rem,包括学号(string类型)、姓名(string类型)、成绩(双精度型)、总成绩(双精度类型)
struct rem
{
Stringnum;
string name;
}
return 0;
}
主要标识符说明:(源程序中主要标识符含义说明)
声明结构体类型date,包括年份(整型)、月份(整型)、天(整型)
struct date
{
int year;
int month;
int day;
};
声明结构体类型corre,包括姓名(string型)、生日(date结构类型型)、电话号码(string型)
struct nian
{
int year;
int month;
int day;
};
int find(nian *p);
int main ()
{
struct nian a={1,1,1};
nian *p=&a;
int n;
cout<<"请输入年份"<<endl;
cin>>a.year;
cout<<"请输入月份"<<endl;
一、实验目的
1.学会结构体类型变量的定义和使用方法。
2.能够运用结构体数组编写程序。
3.学会结构体指针的定义使用方法。
4.能够运用结构体指针作函数参数编写程序。
二、实验环境
(调试程序所使用的软硬件环境)
软件环境:VC++6.0
硬件环境:宏基Intel奔4主频2.8GHz,内存256MB
三、实验内容、结果及分析
3、题目
3.编写程序,输入一个日期(年、月、日),计算并输出该日是该年中的第几天。要求编写函数计算某日是该年中的第几天,用结构指针作为函数参数,注意闰年问题。
源程序清单:(调试好的源程序代码)
#include "stdafx.h"
#include <iostream>
using namespace std;
}
}
cout<<"姓名"<<'\t'<<"生日"<<'\t'<<"电话"<<endl;
for(i=0;i<n;i++)