C语言实验5(结构体)

合集下载

结构体编程实验报告

结构体编程实验报告

一、实验目的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语言结构的实验报告

c语言结构的实验报告

c语言结构的实验报告C语言结构的实验报告引言:C语言是一种广泛应用于软件开发和嵌入式系统的高级编程语言。

其简洁、高效和灵活的特性使其成为许多程序员的首选。

本实验报告将介绍C语言结构的相关概念和实验结果,旨在帮助读者更好地理解和运用C语言。

一、基本概念1.1 结构的定义在C语言中,结构是一种自定义的数据类型,可以将不同类型的数据组合在一起,形成一个新的数据类型。

结构由多个成员组成,每个成员可以是不同的数据类型,如整型、字符型、浮点型等。

1.2 结构的声明在使用结构之前,需要先声明结构的类型。

声明结构的语法格式为:struct 结构名 {成员1; 成员2; ...};通过这种方式,我们可以定义一个结构类型,以便在程序中使用。

1.3 结构的访问通过结构名和成员运算符(.)可以访问结构的各个成员。

例如,如果有一个名为student的结构,其中包含学生的姓名和年龄两个成员,可以使用和student.age来访问这两个成员。

二、实验过程2.1 定义结构类型在本次实验中,我们以学生信息为例,定义了一个名为Student的结构类型,其中包含姓名(name)、年龄(age)和成绩(score)三个成员。

2.2 输入学生信息通过使用scanf函数,我们可以在程序中输入学生的姓名、年龄和成绩,并将其保存在定义的结构类型变量中。

2.3 输出学生信息使用printf函数,我们可以将学生的姓名、年龄和成绩从结构类型变量中提取出来,并在屏幕上显示出来。

2.4 结构的嵌套C语言中的结构还支持嵌套,即在一个结构中定义另一个结构。

例如,我们可以在Student结构中定义一个名为Address的结构,用于存储学生的地址信息。

三、实验结果与分析通过实验,我们可以发现结构在C语言中的重要性和灵活性。

通过定义结构类型,我们可以将不同类型的数据组合在一起,形成一个新的数据类型,更好地组织和管理数据。

结构的嵌套使得数据的层次结构更加清晰,提高了程序的可读性和可维护性。

c语言结构体实验报告

c语言结构体实验报告

实验目的(1) 掌握结构体的定义和使用方式;(2) 掌握结构体数组的使用方法;(3) 理解结构体指针作为函数参数的方法。

实验任务(1)编写程序:定义一个结构类型,可以存储一个学生的姓名、数学和计算机两门课的成绩,输入一个学生的姓名和两门课的成绩到结构体变量中,然后计算并输出其平均成绩及姓名。

(2)编写程序:定义一个结构类型, 可以存储一个学生的平时、实习、测验、期末成绩和总评成绩。

1)编程完成输入4个学生的平时、实习、测验和期末成绩。

封装成函数。

2)计算这4个学生的总评成绩,封装成函数。

其中平时、实习、测验和期末分别占10%、20%、20%、50%。

3)找到总评成绩最高的学生,封装成函数。

4)输出总评成绩最高的学生的成绩信息(平时、实习、测验、期末成绩和总评成绩)。

5)要求用结构体数组流程图见白纸源程序1.#include<stdio.h>struct student{int name[20];float a;float b;};int main(){struct student stu1;printf("请输入学生姓名、数学成绩、计算机成绩:\n");scanf("%s%f%f",&, &stu1.a, &stu1.b);float sum;sum = (stu1.a + stu1.b) / 2;printf("%s平均成绩为%f", , sum);return 0;}2.#include<stdio.h>struct student{float a;float b;float c;float d;float average;};int max(int a[4]){int i,t,m=a[0],max=0;for (i = 0; i < 4; i++){if (m < a[i]){a[i] = t;a[i] = m;m = t;max = i;}}return max;}int main(){int sum[4];int m,n;struct student stu[4];printf("请输入4个学生的平时、实习、测验、期末\n");int i;for (i = 0; i < 4; i++){scanf("%f%f%f%f", &stu[i].a, &stu[i].b, &stu[i].c, &stu[i].d);sum[i] = stu[i].average = stu[i].a*0.1 + stu[i].b*0.2 + stu[i].c*0.2 + stu[i].d*0.3;}m = max(sum);n = m + 1;printf("成绩最高的第%d个学生\n平时成绩为%f\n实习趁机为%f\n测验成绩为%f\n期末成绩为%f\n总评成绩为%f", n, stu[m].a, stu[m].b, stu[m].c, stu[m].d, stu[m].average);return 0;}运行结果实验总结基本掌握结构体的定义和使用方式;基本掌握结构体数组的使用方法;能理解结构体指针作为函数参数的方法。

函数结构体实验报告

函数结构体实验报告

一、实验目的1. 理解结构体的概念及其在C语言中的应用。

2. 掌握结构体函数的设计与实现。

3. 通过实例加深对结构体在函数中的应用理解。

二、实验环境1. 操作系统:Windows 102. 编译器:Visual Studio 20193. 编程语言:C语言三、实验内容1. 结构体定义2. 结构体函数设计3. 结构体函数调用4. 结构体数组应用四、实验步骤1. 结构体定义```c#include <stdio.h>// 定义一个学生结构体struct Student {char name[50]; // 学生姓名int age; // 学生年龄float score; // 学生成绩};```2. 结构体函数设计```c// 函数声明void printStudent(struct Student stu); struct Student inputStudent();```3. 结构体函数实现```c// 打印学生信息void printStudent(struct Student stu) { printf("姓名:%s\n", );printf("年龄:%d\n", stu.age);printf("成绩:%.2f\n", stu.score); }// 输入学生信息struct Student inputStudent() {struct Student stu;printf("请输入学生姓名:");scanf("%s", );printf("请输入学生年龄:");scanf("%d", &stu.age);printf("请输入学生成绩:");scanf("%f", &stu.score); return stu;}```4. 结构体函数调用```cint main() {struct Student stu1, stu2; // 输入两个学生的信息stu1 = inputStudent();stu2 = inputStudent();// 打印两个学生的信息printStudent(stu1);printStudent(stu2);return 0;}```5. 结构体数组应用```c// 定义一个学生结构体数组struct Student stuArray[3];// 输入学生信息for (int i = 0; i < 3; i++) {stuArray[i] = inputStudent();}// 打印学生信息for (int i = 0; i < 3; i++) {printStudent(stuArray[i]);}```五、实验结果通过以上实验步骤,我们成功实现了以下功能:1. 定义了一个学生结构体,包含姓名、年龄和成绩三个字段。

实验5 指针与结构体

实验5 指针与结构体

注意:
1、请大家每次上机都要带上c教材及上机指导书。

2、请认真按照实验要求做好实验预习工作,编好相关程序,有目的的上机!
实验5 指针与结构体
实验预习理论基础知识:
1.int a[10] , i , *p ; p=a; 则p++; p指向谁?p+i指向谁?、*p++ 、*(++p) 、
(*p)++的作用分别是什么?
2.对int *p1 , (*p2)[3] , *p3[3] , a[4][3]; p1=a ; p2=a ; p3[0]=a ; p3[1]=a+1 ;
p3[2]=a+2 ; p3[3]=a+3 ; 请分别用p1、p2、p3和数组名a描述数组a的第i行第j列的元素。

3.字符指针变量与字符数组的区别
4.函数的指针的含意?如何定义一个指向函数的指针变量?
5.指向指针的指针的含意?如何定义指向指针的指针变量?
6.写出定义一个结构体类型的语法和结构体类型定义变量的方法。

(可举例实现)
实验目的:
1.实验指导书P247实验9目的与P248实验10的实验目的。

实验内容
教材习题:
1.实验指导书实验9第2题:请把函数的形参指针分别定义成int (*p)[3 ]实现函数。

(可不写主函数)2.实验指导书实验9第2题:请把函数的形参指针分别定义成int *p[3 ]实现函数。

(要写主函数)。

C语言结构体(Struct)详解及示例代码

C语言结构体(Struct)详解及示例代码

C语⾔结构体(Struct)详解及⽰例代码前⾯的教程中我们讲解了数组(Array),它是⼀组具有相同类型的数据的集合。

但在实际的编程过程中,我们往往还需要⼀组类型不同的数据,例如对于学⽣信息登记表,姓名为字符串,学号为整数,年龄为整数,所在的学习⼩组为字符,成绩为⼩数,因为数据类型不同,显然不能⽤⼀个数组来存放。

在C语⾔中,可以使⽤结构体(Struct)来存放⼀组不同类型的数据。

结构体的定义形式为:struct 结构体名{结构体所包含的变量或数组};结构体是⼀种集合,它⾥⾯包含了多个变量或数组,它们的类型可以相同,也可以不同,每个这样的变量或数组都称为结构体的成员(Member)。

请看下⾯的⼀个例⼦:struct stu{char *name; //姓名int num; //学号int age; //年龄char group; //所在学习⼩组float score; //成绩};stu 为结构体名,它包含了 5 个成员,分别是 name、num、age、group、score。

结构体成员的定义⽅式与变量和数组的定义⽅式相同,只是不能初始化。

注意⼤括号后⾯的分号;不能少,这是⼀条完整的语句。

结构体也是⼀种数据类型,它由程序员⾃⼰定义,可以包含多个其他类型的数据。

像 int、float、char 等是由C语⾔本⾝提供的数据类型,不能再进⾏分拆,我们称之为基本数据类型;⽽结构体可以包含多个基本类型的数据,也可以包含其他的结构体,我们将它称为复杂数据类型或构造数据类型。

结构体变量既然结构体是⼀种数据类型,那么就可以⽤它来定义变量。

例如:struct stu stu1, stu2;定义了两个变量 stu1 和 stu2,它们都是 stu 类型,都由 5 个成员组成。

注意关键字struct不能少。

stu 就像⼀个“模板”,定义出来的变量都具有相同的性质。

也可以将结构体⽐作“图纸”,将结构体变量⽐作“零件”,根据同⼀张图纸⽣产出来的零件的特性都是⼀样的。

c语言程序设计—结构体—实验报告

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的定义及四个功能的程序,理解并大致掌握了结构体的使用,学会用程序实现数据的存取。

因此,我们可以看到,结构体的使用可以使数据的存取更加有效率和简单,对于程序设计是很重要的一个概念。

实验报告_结构体

实验报告_结构体

一、实验目的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实验目的1、掌握结构体类型变量的定义和使用;2、掌握结构体类型变量数组的概念和使用;3、掌握链表的概念,初步学会对链表进行操作;4、掌握共用体的概念和使用。

2实验内容1)在一个结构体数组中存入三个人的姓名及年龄,输出三者中年龄居中者的姓名及年龄。

要求:1、三个人的数据采用直接初始化的方式赋值;2、利用结构体指针实现处理过程。

3算法描述流程图4源程序#include<stdio.h>main(){struct students{char name[10];int age;} stu[3]={{"Jack",17},{"Anne",16},{"Tom",19}},stu1[3];struct students *stu2=&stu[0],*t=&stu1[0];int i,j,k;for(i=0;i<2;i++){k=i;for(j=i+1;j<3;j++){if(((stu2+j)->age)<((stu2+k)->age))k=j;}*t=*(stu2+k);*(stu2+k)=*(stu2+i);*(stu2+i)=*t;}printf("三人中年龄居中者姓名:%s,年龄:%d\n",stu[1].name,stu[1].age); }5测试数据{"Jack",17},{"Anne",16},{"Tom",19}6运行结果7出现问题及解决方法;实验中,引用结构体数组出现错误,忘记写{},指针的初始化忘记写*,这些问题都是些低级错误,不应该犯的,在循环中,i的初始化错误。

以后应更加仔细,多注意细节问题,很多时候细节是决定事情的关键。

8实验心得在本次试验中,我通过学习和实践,对结构体类型变量的定义和使用以及链表的概念有了更清楚的理解,初步学会了对链表进行操作,掌握了结构体类型变量数组以及共用体的使用。

C语言程序设计实验结构体与共用体

C语言程序设计实验结构体与共用体

实验8:结构体与共用体一、实验目的1.掌握结构体类型变量的定义和使用;2.掌握共用体的概念与使用。

二、实验内容编写程序,实现如下功能:1.定义结构体变量,用它表示考生的学号、姓名(用英文表示)以及语文、数学、外语成绩。

输入两个考生的信息和各门课成绩并比较(按总分进行高低排序;当总分相同时,依次按语、数、外的顺序排序)。

2.设有一个教师与学生通用的表格,数据项包括:姓名、年龄、职业和单位,其中“职业”一项可分为“教师”和“学生”两类;对“单位”一项,教师填入“系部名称”(用字符类型表示),学生填入“班级编号”(用整型量表示)。

编程输入人员数据,再以表格输出。

三、实验结果记录第1题上机调试后的最终代码及上机调试结果(截图):程序代码运行结果1.总分不同2.总分相同的情况2.1总分完全相同2.2总分相同但语文成绩不同2.3总分相同、语文成绩相同但数学成绩不同第2题上机调试后的最终代码及上机调试结果(截图):程序代码运行结果1.正确输入2.错误输入四、实验小结:经过此次实验,我熟悉掌握了结构体的定义和使用,同时也掌握了共用体的使用。

对于程序1,基本思路是通过结构体定义变量,采用if-else语句嵌套,当总分相同且语文数学成绩均相同时就不必再进行一轮的if语句判断,因为此时两考生的英语成绩一定相同。

对于程序2,在结构体中定义了共用体,可对不同职业进行不同单位的划分。

基本思路是用malloc函数进行动态内存分配,确定要输入的样本数量,再进行数据的输入,在单位数据的输入时需要判断输入对象是学生还是老师,此时要用strcmp函数进行比较判断,输入结束后打印表格,用转义字符\t让表格更加美观,最后通过free进行内存释放。

C语言实验指导5--结构体编程

C语言实验指导5--结构体编程

《C语言程序设计》实验指导书软工2010级2班m a oS W U实验环境Windows,Visual C++实验目录实验五结构体编程实验目的1.掌握结构体类型变量的定义和使用。

2.掌握结构体类型数组的概念和使用。

3.掌握结构体指针及链表的概念,初步学会对链表进行操作,学会在函数之间传送链表的方法。

4.掌握共用体的概念与使用。

实验内容1、结构体类型的变量及数组(略,大家自行练习)struct student{char name[8];long num;int score;};大家可用该结构类型定义变量及数组。

2、结构体链表(1)下面的程序不完整,请将其完善。

head是头指针,tail是尾指针,p和q都是临时指针。

程序有两部分,其一是建立链表并输入数据,其二是输出链表中的数据并回收内存。

#include<stdio.h>#include<malloc.h>#include<string.h>struct student{char name[8];long num;int score;struct student *next;};void main(){int count=0;char tempname[8];/*临时存放刚刚输入的学生名字*/struct student *head,*tail,*p,*q;while(1){ /* 建立链表并输入数据*/printf("请输入第%d个学生的姓名、学号、成绩。

姓名为#则退出\n",count+1);scanf("%s",tempname);if(strcmp(tempname,"#")==0) break;p=malloc(sizeof(struct student));strcpy(p->name,tempname);scanf("%ld",&p->num);scanf("%d",&p->score);if(count==0) ;/*如果是第一个结点*/else{ ; ;}/*如果不是第一个结点*/count++;}p->next=NULL;/*链表建立完成*/printf("***********************\n");/* 下面输出链表数据并回收内存*/printf("%10s%10s%10s\n","姓名","学号","成绩");p=head;if(count!=0)while(p!=NULL){printf("%10s%10ld%10d\n",p->name,p->num,p->score);q= ;;free(q);}return;}(2)改写上面的程序。

C语言上机实验5-12

C语言上机实验5-12

17.5实验5循环结构程序设计1.实验目的(1)熟悉掌握用while语句、do…while语句和for语句实现循环的方法。

(2)掌握在程序设计中循环的方法实现一些常用的算法(如穷举、迭代、递推等)。

(3)进一步学习调试程序。

2.实验内容编程并上机调试运行(1)输入一行字符、分别统计出其中的英文字母、空格、数字和其他字符的个数(本题是教材第5章第4题)在得到正确结果后,请修改程序使之能分别统计大小写字母、空格、数字和其他字符的个数。

(2)输出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其个位数字立方和等于该数本身。

例如,153是一个水仙花数,因为153=1³+5³+3³(本题是教材第五章第8题)。

(3)猴子吃桃问题。

猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。

第二天早上又将剩下的桃子吃掉一半,又多吃了一个,以后每天早上都吃了前一天剩下的一半零一个。

到第10天早上想再吃,只剩一个桃子了。

求第一天共摘了多少桃子(本题是教材第五章第12题)。

再得到正确结果后,修改题目,改为猴子每天吃了前一天剩下的一半后,再吃两个。

请修改程序并运行,检查结果是否正确。

(4)用牛顿迭代法求方程2X³=4x²+3x-6=0在1.5附近的根(本题是教材第五章第13题,学过高等数学的读者可选做此题)。

再得到正确结果后,请修改程序所设的X初始值由1.5改为100,1000,1000,再运行,观察结果,分析不同的x初值对结果有什么影响,为什么?修改程序,使之能输出迭代的次数和每次迭代的结果,分析不同的x初始值对迭代的次数有无影响。

3.预习内容预习教材第5章。

17.6实验6数组1.实验目的(1)掌握一维数组和二维数组的定义、赋值和输入输出的方法。

(2)掌握字符数组和字符串函数的使用。

(3)掌握与数组有关的算法(特别是排序算法)。

2.实验内容编程序并上机调试运行。

C语言结构体的作用定义使用方法以及实例

C语言结构体的作用定义使用方法以及实例

C语言结构体的作用定义使用方法以及实例C语言结构体是一种用户自定义的数据类型,用于将不同类型的数据组合在一起形成一个新的数据类型。

它可以将具有相关性的数据集合在一起,便于组织和管理数据。

结构体在C语言中的应用广泛,它可以用来表示实体对象、数据记录、数据表和复杂数据结构等。

结构体的定义:结构体的定义需要使用关键字struct,并在其后紧跟结构体的名称,如下所示:```struct 结构体名称成员1的类型成员1的名称;成员2的类型成员2的名称;...成员n的类型成员n的名称;};```其中,成员可以是C语言中的任意数据类型,包括基本数据类型(如int、float)和自定义的数据类型(如数组、指针、其他结构体)。

结构体的使用方法:1.声明结构体变量:声明结构体变量需要在结构体定义后,用结构体名称来声明一个变量,如下所示:```struct 结构体名称变量名;```2.使用成员变量:通过结构体变量名和成员名,可以访问结构体中的成员变量,如下所示:```变量名.成员名;```3.初始化结构体变量:结构体变量可以在声明时进行初始化,也可以在声明后通过成员名来逐个赋值,如下所示:```struct 结构体名称变量名 = {成员1的初始值,成员2的初始值,...,成员n的初始值};```结构体的实例:下面以一个学生信息管理系统为例,说明结构体的使用。

```c#include <stdio.h>#include <string.h>//定义学生结构体struct studentchar name[20];int age;char sex[10];float score;};int mai//声明学生结构体变量struct student stu;//初始化学生信息strcpy(, "张三"); stu.age = 18;strcpy(stu.sex, "男"); stu.score = 90.5;//输出学生信息printf("姓名:%s\n", );printf("年龄:%d\n", stu.age);printf("性别:%s\n", stu.sex);printf("成绩:%.1f\n", stu.score);return 0;```在上述代码中,首先定义了一个名为student的结构体,它包含了姓名、年龄、性别和成绩等成员变量。

c语言结构体实验报告

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语言程序设计—结构体—实验报告

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)为每一个结构定义两个变量。

结构体实验报告

结构体实验报告

C语言程序设计实验报告实验七结构体程序设计班级学号姓名一、实验目的(1)掌握结构体类型的概念、定义和使用;(2)掌握结构体数组、结构体指针的定义和使用;二、实验内容1、输入5位同学的一组信息,包括学号、姓名、数学成绩、计算机成绩,求得每位同学的平均分和总分,然后按照总分从高到低排序。

程序代码:#include <stdio.h>#include <stdlib.h>#define STU_NUM 5struct student{char stu_id[20];char name[20];float score[2];float total;float aver;};void SortScore(student *stu,int n){student stud;for(int i = 0; i < n-1; i++)for(int j = i+1 ; j < n; j++){if(stu[i].total < stu[j].total){stud = stu[i];stu[i] = stu[j];stu[j] = stud;}}}int main( ){student stu[STU_NUM];for(int i = 0; i<STU_NUM; i++){printf("请输入第%d个学生的学号:",i+1);scanf("%s",&stu[i].stu_id);printf("请输入第%d个学生的姓名:",i+1);scanf("%s",&stu[i].name);printf("输入第%d个学生的数学成绩:",i+1);scanf("%f",&stu[i].score[0]);printf("输入第%d个学生的计算机成绩:",i+1);scanf("%f",&stu[i].score[1]);stu[i].total = stu[i].score[0]+stu[i].score[1]; stu[i].aver = stu[i].total/2;}printf("\n");SortScore(stu,STU_NUM);for(i = 0 ; i < STU_NUM; i++){printf("学号:%s\t",stu[i].stu_id);printf("姓名:%s\t",stu[i].name);printf("数学:%f\t",stu[i].score[0]);printf("计算机:%f\t",stu[i].score[2]);printf("平均成绩:%f\t",stu[i].aver);printf("总分:%f\t",stu[i].total);printf("\n\n");}return 0;}运行结果:2.定义一个结构体变量(包括年、月、日)。

C语言实验5(结构体)

C语言实验5(结构体)

实验五结构体一、实验目的1.掌握结构体类型变量的定义和使用。

2.掌握结构体类型数组的概念和使用。

二、实验内容编写一个程序实现下面的功能:A.建立一个数组用于存储学生的学号、姓名和三门课程的成绩和平均成绩B.输入学号后输出该学生的学号、姓名和三门课程的成绩C.输入学号后删除该学生的数据D.插入学生的数据E.输出平均成绩在80分及以上的记录F.退出要求用循环语句实现B--E的多次操作三、实验具体实验程序代码(要有注释)、测试结果(最好截图)和实验总结1、实验代码//科目:C语言实验结构体//题目:A. 建立一个数组用于存储学生的学号、姓名和三门课程的成绩和平均成绩// B. 输入学号后输出该学生的学号、姓名和三门课程的成绩//作者:武叶//语言:C语言//创作时间:2012年4月12日#include"stdio.h"#include"string.h"struct student{int num;char name[20];float yingyu;float shuxue;float cc;float avg;};struct student stud[100];int main(){int i,j,n;int k=1;printf("输入有N个学生数:");scanf("%d",&n);printf("学号姓名英语数学c++\n");for(i=0;i<n;i++){scanf("%d%s%f%f%f",&stud[i].num,&stud[i].name,&stud[i].yingyu,&stud[i].shuxue,&st ud[i].cc);stud[i].avg=(stud[i].yingyu+stud[i].shuxue+stud[i].cc)/3;}for(i=0;i<n;i++){printf("输入你要查询的学号:");scanf("%d",&k);if(k==stud[i].num){printf("---------------------------\n");printf("-----你要查询的学生信息----\n");printf(" 学号姓名英语数学C++ \n");printf("%d\t%s\t%f\t%f\t%f\n",stud[i].num,stud[i].name,stud[i].yingyu,stud[i].shuxue,stud[i].cc);printf("---------------------------\n");printf("***输入你要删除的学号信息***");scanf("%d",&k);printf("***输入你要插入的数据:***\n");scanf("%d\t%s\t%f\t%f\t%f",&stud[i].num,&stud[i].name,&stud[i].yingyu,&stud[i].s huxue,&stud[i].cc);}for(j=0;j<n;j++){if(stud[j].avg>=80){printf("####输出平均分在80分以上的同学:####\n");printf(" 学号姓名英语数学C++ \n");printf("%d\t%s\t%f\t%f\t%f\n",stud[j].num,stud[j].name,stud[j].yingyu,stud[j].shuxue,stud[j].cc);printf("###################################\n");}}}return 0;}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语言结构体实验报告

C语言结构体实验报告

《高级语言程序设计》实验报告实验序号:8 实验项目名称:结构体int i;for(i = 0; i<= number; i++){Stu[i] = (stu[i].score[0]+ stu[i].score[1]+stu[i].score[2])/3.0}}③求平均分最高的学生int averagescore(student stu[], int number){int k = 0;//查找最高平均分并记录在数组中的下标值for( int i = 0; i<= number; i++){………}return k; //返回最高平均分数组元素的下标}【测试数据】自己设计一组测试数据。

运行结果截图:【思考与扩展】如果这样定义结构体typedef struct Student{int num;//学号char name[20];//姓名注意字节长度char classname[20];//班级float score[3];//三门课程成绩float aver_score; //平均分} STU,* pSTU;说明如下三条语句的含义:student stu1;STU stu2;pSTU pstu;2.采用结构体数组编写程序,定义一个含职工姓名、工作年限、工资总额的结构体类型,初始化5名职工的信息,最后再对工作年限超过30年的职工加100元工资,然后分别输出工资变化之前和之后的所有职工的信息。

运行结果截图3.定义一个结构体变量(包括年、月、日)。

计算某年某月某日是本年中第几天?注意闰年问题。

运行结果截图:四、分析与讨论对上机实践结果进行分析,上机的心得体会。

成绩五、教师评语签名:日期:附源程序清单:1. #include<stdio.h>struct student{int num;char name[20];char classname[20];float score[3];float aver_score;}stu[5];void input(){int i;for(i=1;i<6;i++){ printf("第%d个同学",i);printf("请输入学号名字班级三门课程成绩:\n");scanf("%d %s %s %f %f %f",&stu[i].num,stu[i].name,stu[i].classname,&stu[i].score[1],&stu [i].score[2],&stu[i].score[3]);}};void averagescore(){for(i=1;i<=5;i++)stu[i].aver_score=((stu[i].score[1]+stu[i].score[2]+stu[i].score[3])/3);printf("平均成绩:");for(i=1;i<6;i++)printf("第%d个同学的平均成绩%f:\n",i,stu[i].aver_score);printf("\n");};void max(){int i,k=0;float temp=stu[1].aver_score;for(i=2;i<=5;i++)if(stu[i].aver_score>temp) {temp=stu[i] .aver_score;k=i;};printf("成绩最好的同学:\n");printf("%d %s %s %4.2f %4.2f %4.2f %4.2f\n",stu[k].num,stu[k].name,stu[k].classname,stu[k].score[1],stu[k].score[2],stu[k].score[3],stu[k].aver _score);};void main(){input();averagescore();max();}2.#include <stdio.h>struct worker{char name[20];int workyear;float salary;}work[5];void input(){int i;for(i=1;i<=5;i++){printf("第%d个工人:",i);printf("请输入名字工作年限工资总额:\n");scanf("%s %d %f",&work[i].name,&work[i].workyear,&work[i].salary);};void main( ){int i;input();printf("初始化5名职工的信息:\n");for(i=1;i<=5;i++)printf("%s %d %f \n",work[i].name,work[i].workyear,work[i].salary);for(i=1;i<=5;i++)if(work[i].workyear>30) work[i].salary+=100;printf("最后5名职工的信息工:\n");for(i=1;i<=5;i++)printf("%s %d %f \n",work[i].name,work[i].workyear,work[i].salary);}3.#include <stdio.h>struct years{int year;int month;int date;}ye;int data[12]={31,28,31,30,31,30,31,31,30,31,30,31};void main( ){ int i,sum=0;int leap=0;printf("请输入改天的年月日:\n");scanf("%d %d %d",&ye.year,&ye.month,&ye.date);if(((ye.year%4)==0)&&((ye.year%100)!=0)) leap=1;if(((ye.year%4)==0)&&((ye.year%400)==0)) leap=1;if(leap=1) data[1]=29;for(i=0;i<(ye.month-1);i++){sum+=data[i];}sum+=ye.date;printf("\nit is the %d day.\n",sum); }。

C语言结构体

C语言结构体
printf("student name :%s\n",student_info[t].name);
printf("student sex :%c\n",student_info[t].sex);
printf("student class :%d\n",student_info[t].class);
printf("score of sum :%6.2f\n",student_info[t].sum);
printf("score of ave :%6.2f\n",student_info[t].ave);
}
}
printf("\n\n");
}
实验步骤(续)
遗留问题与说明
备注:
年月日
{case 1:
enter();
break;
case 2:
delete();
break;
case 3:
list();
break;
case 4:
exit(0);
}
}
getch();
return 0;
}
void init_list()
{register int t;
for(t=0;t<MAX;++t)
student_info[t].num[0]='\0';
scanf("%f",&c);student_info[slot].maths=c;
getchar();
student_info[slot].sum=a+b+c;
student_info[slot].ave=student_info[slot].sum/3;
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验五结构体
一、实验目的
1.掌握结构体类型变量的定义和使用。

2.掌握结构体类型数组的概念和使用。

二、实验内容
编写一个程序实现下面的功能:
A.建立一个数组用于存储学生的学号、姓名和三门课程的成绩和平均成绩
B.输入学号后输出该学生的学号、姓名和三门课程的成绩
C.输入学号后删除该学生的数据
D.插入学生的数据
E.输出平均成绩在80分及以上的记录
F.退出
要求用循环语句实现B--E的多次操作
三、实验具体实验程序代码(要有注释)、测试结果(最好截图)和实验总结
1、实验代码
建立一个数组用于存储学生的学号、姓名和三门课程的成绩和平均成绩
输入学号后输出该学生的学号、姓名和三门课程的成绩
um,&stud[i].name,&stud[i].yingyu,&stud[i].shuxue,&stud[i].cc);
stud[i].avg=(stud[i].yingyu+stud[i].shuxue+stud[i].cc)/3;
}
for(i=0;i<n;i++)
{
printf("输入你要查询的学号:");
scanf("%d",&k);
if(k==stud[i].num)
{
printf("---------------------------\n");
printf("-----你要查询的学生信息----\n");
printf(" 学号姓名英语数学C++ \n");
printf("%d\t%s\t%f\t%f\t%f
\n",stud[i].num,stud[i].name,stud[i].yingyu,stud[i].shuxue,stud[i].cc);
printf("---------------------------\n");
printf("***输入你要删除的学号信息***");
scanf("%d",&k);
printf("***输入你要插入的数据:***\n");
scanf("%d\t%s\t%f\t%f\t%f",&stud[i].num,&stud[i].name,&stud[i].yingyu,&stud[i].shuxu e,&stud[i].cc);
}
for(j=0;j<n;j++)
{
if(stud[j].avg>=80)
{
printf("####输出平均分在80分以上的同学:####\n");
printf(" 学号姓名英语数学C++ \n");
printf("%d\t%s\t%f\t%f\t%f
\n",stud[j].num,stud[j].name,stud[j].yingyu,stud[j].shuxue,stud[j].cc);
printf("###################################\n");
}
}
}
return 0;
}
2、运行结果截图
总结:
对于数组的引用,分为数组元素和数组本身的引用。

对于数组元素的引用,其实质为简单变量的引用。

对于数组本身的引用实质是数组首地址的引用。

1.先声明结构体类型再定义变量名
如上面已经定义了一个结构体类型struct student,可以用它来定义变量。

如:
struct student student1,student2;
2.在声明类型的同时定义变量
一般形式:
struct 结构体名称
{
成员列表
}变量名列表;
答销网真情提供:::
文章出处:
&tid=1523&page=1&extra=#pid2387。

相关文档
最新文档