C语言程序设计 结构体和共用体(12.2.15)--实验9结构体数组作函数参数

合集下载

C语言程序设计教案 结构体与共用体

C语言程序设计教案  结构体与共用体

printf(“No.
name
sex
age\n”);
for(p=stu;p<stu+3;p++)
printf(“%5d%-20s%2c%4d\n”,p->num,p->name,
p->sex,p->age);}
三、用指针处理链表
链表是一种常见的数据结构,是动态地进行存储分配的一种结构。
用数组存放数据时,必须事先定义固定的长度。比如有的班级有
例 对候选人得票的统计程序。设有三个候选人,每次输入一个得 票的候选人的名字,要求最后输出各人得票结果。
程序如下: #include <stdio.h> struct person {char name[20];
int count; }leader[3]={“li”,0,“zhang”,0,“fun”,0}; main() {int i,j;char leader_name[20]; for(i=1;i<=10;i++) {scanf(“%s”, leader_name);
┄ char addr[30]; }; Struct student student[10];
2.结构体数组的初始化 其初始化和数组的初始化相似。 3.结构体数组的应用举例
结构体数组 和数值型数 组不同之处 在于每个数 组元素都是 一个结构体 类型的数据。
定义了一个 student,其 元素为 Struct student 类型 数据,数组中 有 10 个元素。
{ int month;
先声明一个
int day; int year; }
Struct date 类型,然后在 Struct

C程序设计第九章结构体与共用体

C程序设计第九章结构体与共用体

则p为结构指针变量,它可用来存放student型变 量的地址 x1 p name 令 p=&x1; sex age 则 p为x1的首地址. score addr 访问结构成员: pname 表示x1的姓名; pname 等价于 (*p).name
page
表示x1的年令; page
等价于 (*p).age
a structure is a collection of variables that are referenced under one name, providing a convenient means of keeping related information together. called aggregate data types because they consist of several different, yet logically connected, variables. also referred to as compound or conglomerate data types, for the same reason. user-defined types
9.5 结构体数组
结构体数组的定义
三种形式:
形式一: struct student 形式二: { int num; struct student 形式三: char name[20]; { int num; struct char sex; char name[20]; { int num; int sex; charage; }; char name[20]; int age; char sex; struct student stu[2]; }stu[2]; int age; }stu[2];

c语言结构体与共用体

c语言结构体与共用体

•{ • 成员表列 • }变量名表列; • 三、直接定义结构类型变量 • 其一般形式为: • struct • { • 成员表列 • }变量名表列; • 即不出现结构体名。
• 关于结构体类型,有几点要说明: • 1.类型与变量是不同的概念,不 要混同。对结构体变量来说,在定义时 一般先定义一个结构体类型,然后定义 变量为该类型。只能对变量赋值、存取 或运算,而不能对一个类型赋值、存取 或运算。在编译时,对类型是不分配空 间的,只对变量分配空间。 • 2.对结构体中的成员(即"域"), 可以单独使用,它的作用与地位相当于 普通变量。关于对成员的引用方法见$ 10.3。
• 花括弧内是该结构体中的各个成员(或 称分量),由它们组成一个结构体。例 如,上例中的n.sex等都是成 员。对各成员都应进行类型说明,即 • 类型标识符 成员名 • 也可以把“成员表列”称为“域表”。 每一个成员称为结构体中的一个域。成 员名定名规则与变量名同."结构体”这 个词是根据英文单词structure译出的。 许多C语言书把structure直译为“结 构”。作者认为译作“结构”会与一般 含义上的“结构”混淆(例如,数据结 构、程序结构)。
• 结构体变量的地址主要用于作函数参数, 传递结构体的地址。 • $10.4 结构体变量的初始化 • 过去许多C版本规定,只有当结构 体变量为全局变量或静态变量时,才能 进行初始化。不能对动态局部变量进行 初始化。新版本无此限制。 • 一、对外部存储类型的结构体变 量进行初始化。 • [例10.1] •
• struct student • {1ong int num; • char name[20」; • char sex; • char addr[20」; • }a={89031,li Lin, 'M’,"123beijing Road”};

C语言中的结构体和共用体(联合体)

C语言中的结构体和共用体(联合体)

C语言中的结构体和共用体(联合体)/c-pointer-array/在C 语言中,结构体(struct)是一个或多个变量的集合,这些变量可能为不同的类型,为了处理的方便而将这些变量组织在一个名字之下。

由于结构体将一组相关变量看作一个单元而不是各自独立的实体,因此结构体有助于组织复杂的数据,特别是在大型的程序中。

共用体(union),也称为联合体,是用于(在不同时刻)保存不同类型和长度的变量,它提供了一种方式,以在单块存储区中管理不同类型的数据。

今天,我们来介绍一下C 语言中结构体和共用体的相关概念和使用。

结构体 / struct结构体的定义声明一个结构体类型的一般形式为:struct 结构体名 {成员列表};其中,成员列表中对各成员都应进行类型声明,即:类型名成员名;例如,我们需要在程序中记录一个学生(student)的数据,包括学号(num)、姓名(name)、性别(sex)、年龄(age)、成绩(score)、地址(addr)等,如下图所示:如果要表示图中的数据结构,但C 语言并没有提供这种现成的数据类型,因此我们需要用定义一种结构体类型来表示。

truct student {int num;char name[20];char sex;int age;float score;char addr[30];};上述定义了一个新的结构体类型 struct student(注意,struct 是声明结构体类型时所必须使用的关键及,不能省略),它向编译系统声明,这是一个“结构体类型”,它包括 num、name、sex、age、score、addr 等不同类型的数据项。

应当说,这里的 struct student 是一个类型名,它与系统提供的标准类型(如 int、char、float、double 等)具有同样的作用,都可以用来定义变量的类型。

结构体变量前面只是声明了一个结构体类型,它相当于一个模型,但其中并无具体的数据,编译系统对其也不分配实际的内存单元。

C语言第9章结构体、共用体、枚举

C语言第9章结构体、共用体、枚举

结构体变量.成员
struct date { int year;
int month; int day;
“.”是成员运算符, 优先级最高
printf("%d,%d,%d",birth);
printf("%d,%d,%d",birth.year,
}; struct date birth;
birth.month,birth.day);
scanf("%f",&student2.score[2])7; 8
student2
结构变量的整体赋值 student3 = student2;
02 Zhang Zi Liang 88 78
student3
02 Zhang Zi Liang 88 78
湖南工业大学计算机与通信学院
例9-1学生的基本信息包括学号、姓名、3门成绩、平均分、总分。输入一 个学生的前3项基本信息,计算平均分和总分并输出。
湖南工业大学计算机与通信学院
9.1 问题的提出
又如,在学生信息管理系统中填 加个属性:是否是中共党员,如 果不是属性的值为0(int),如
果是属性的值为入党的时间 (char)。在某一时间,属性只有 一种值,而且数据类型不同,这 种情况用什么数据类型描述呢?
对于这种应用,C语言引入了共用体类型。
共用体是一种同一存储区域由不同类型变量共享的数据 类型,它提供—种方法能在同一存储区中操作不同类型 的数据,也就是说共用体采用的是覆盖存储技术,准许 不同类型数据互相覆盖。
基本数据类型并不能方便地解决所有问题
❖ 复合数据类型是基本数据类型迭代派生而来
典型的代表就是“结构”,数组、指针也可算作此类

C语言_实验九、结构体程序设计

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语言程序设计与数据结构》课件第09章结构体与共用体

《C语言程序设计与数据结构》课件第09章结构体与共用体

C语言程序设计与数据结构
C编译程序按照每个成员在结构体中声明的顺 序一一对应赋值,不可以跳过前面的成员直接给后 面的成员赋值,但是可以只给前面若干成员赋值, 后面没有赋值的成员由系统赋予默认值。
C语言程序设计与数据结构
3.结构体变量的引用 (1) 一般结构体变量的引用 一般结构体变量的引用是通过成员运算符“.”来实 现的,形式如下: 结构体变量名.成员名
学习重点: 结构体的概念; 结构体成员的引用。
C语言程序设计与数据结构
结构体概念的引入 (为什么需要结构体?)
C语言程序设计与数据结构
已经学习过的数据类型: 整形、实型、字符型 ,另外还有数组。 问题: 以上数据类型和数组是否完全满足编程需要? (例如:如何定义一个工人变量?)
C语言程序设计与数据结构
C语言程序设计与数据结构
上述五个数据项组成了工人的整体,这就是一 个结构体类型的数据,我们可以给这个数据命名为 worker,只要是worker类型的数据,都包括这五个 数据项。
C语言程序设计与数据结构
9.1 结构体类型的说明
C语言程序设计与数据结构
结构体类型是包含若干个相同或不同数据类型数 据项的集合,我们把这些数据项称之为结构体成员, 声明结构体类型的一般形式为: struct 结构体标识名 { 数据类型名1 结构体成员名表1; 数据类型名2 结构体成员名表2; ..... 数据类型名n 结构体成员名表n; };
C语言程序设计与数据结构
与同一类型的普通变量一样,结构体变量中的各个成 员也可以进行相应的各种运算,如: worker1.sex =„F‟; worker1. age++; worker1.salary=3000f;

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语言程序设计第9章结构体与共用体简明教程PPT课件

C语言程序设计第9章结构体与共用体简明教程PPT课件

//书名 //作者 //出版社 //价格
【例9.2】定义一个结构体类型struct student,描 述学生的基本信息,包含学号、姓名、性别和成绩
struct student { int num; //学号 char name[20]; //姓名 char sex; //性别, M-男,F-女 float score; //成绩 };
第9章
结构体与共用体
第9类型,但在实际问题中, 数据要复杂一些,往往具有不同的数据项和类型: 例如: 图书基本信息 用户自定义 学生基本信息 数据类型 球赛基本信息 ……
方法:创建结构体类型、共用体类型(或称为联合 体类型)和枚举类型
C语言程序设计 第9章 结构体与共用体 2
9.1 结构体类型
整 型
单精度型float
基本类型
实型(浮点型)
双精度型double
字符类型char
C 数 据 类 型
数组 构造类型
结构体struct 共用体union 枚举类型enum 指针类型
本章所介绍 空类型void 的数据类型
C语言程序设计
数据类型决定: 1. 数据占内存字节数 2. 数据取值范围 3. 其上可进行的操作
C语言程序设计
定义了结构体类型: struct book 定义了结构体变量: book1,book2;
第9章 结构体与共用体
14
• 方式三:
定义无名结构体类型的同时定义结构体变量
struct { 成员列表 } 变量名列表; struct { char name[40]; char author[100]; char publish[100]; float price; }book1,book2; 说明:第三种方法,由于没 有给出结构体类型标识符, 在实际应用中,此方法往往 是一次性的,适用于定义临 时的局部变量或者嵌套的结 构体成员变量。

《C语言程序设计》数组名作为函数的参数

《C语言程序设计》数组名作为函数的参数

《C语言程序设计》实验报告实验名称:数组名作为函数的参数系别: 计算机系专业:计算机科学与技术班级:五班姓名: 学号:实验日期:教师审批签字:实验8 数组名作为函数的参数⒈实验目的⑴掌握数组名作为函数参数的基本使用方式。

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

⒉实验内容或实验题目编程题目:(题目⑴、题目⑵为一组,题目⑶为一组。

每个同学每组都必须完成1题)要求:每道题目分别书写程序,试运行(如何输入,结果如何)。

题目⑴:编写函数实现将数组元素按从小到大的顺序排序,主函数从键盘输入10个整数存入数组,调用函数后输出数组的元素。

题目⑵:用数组名作为函数参数,编写一个比较两个字符串s和t大小的函数strcomp(s,t),要求s小于t时返回-1,s等于t•时返回0,s大于t时返回1。

在主函数中任意输入4个字符串,利用该函数求最小字符串。

题目⑶:输入6×6的数组,下面的各要求通过编写函数实现,要求用数组名作为函数参数:①求出对角线上各元素的和;②求出对角线上行、列下标均为偶数的各元素的积;③找出对角线上其值最大的元素和它在数组中的位置。

⒊算法说明(用文字或流程图说明。

)题目1:⒋程序清单题目⑴:#include <stdio.h>main(){int i,j,t,n=10,a[10];printf("Please enter ten numbers:\n"); for(i=0;i<n;i++){scanf("%d",&a[i]);}for(i=0;i<n-1;i++){for(j=i+1;j<n;j++)if(a[i] > a[j]){t = a[j];a[j] = a[i];a[i] = t;}}for(i=0;i<n;i++)printf("%d\n",a[i]);}题目⑶:#include <stdio.h>main(){int c,b,i,j,n=6,d=1,max,sum=0,a[6][6];for(i=0;i<n;i++){for(j=0;j<n;j++){scanf("%d",&a[i][j]);}}max=a[0][0];for(i=0;i<n;i++){for(j=0;j<n;j++){if(i==j||i+j==5)sum+=a[i][j];if((i==j||i+j==5) && i%2==0 && j%2==0)d*=a[i][j];if((i==j||i+j==5) && a[i][j]>max){max=a[i][j];b=i;c=j;}}}printf("和为%d\n积为%d\n",sum,d);printf("对角线上最大的元素为%d\n它在数组中的位置为a[%d][%d]\n",max,b,c);}⒌运行结果(包括原始数据、相应的运行结果和必要的说明。

C语言程序设计——结构体和共用体(完整版)

C语言程序设计——结构体和共用体(完整版)

printf(“name\tage\tjob\tclass/office\n”); for(i=0;i<PN;i++) {if(body[i].job==„s‟) printf(“%s\t%d\t%3c\t%d\n”,body[i].name, body[i].age,body[i].job,body[i].units.class); else printf(“%s\t%d\t%3c\t%s\n”,body[i].name, body[i].age,body[i].job,body[i].units.office); } }
birthday num name sex age month day year addr
§12.3结构体数组
结构体数组的每一个元素都是具有相同结构类型 的结构体变量。 例:struct student {int num; char name[20]; float score; }stu[3]; 其中,定义了一个结构体数组stu,共有3个元素, 每个元素都具有struct student的结构形式。
§12.6共用体
共用体(也称为联合)也是一种构造的数据类型。 共用体是将不同类型的数据组织在一起共同占用 同一段内存的一种构造数据类型。 例如,在校学生和教师都填写以下表格: 姓名 年龄 职业 单位 其中,职业分两类:教师和学生; 而单位一栏里,学生填写班级编号(整型类型), 教师填写某系某教研室(整型类型) 。
§12.7枚举数据类型
当某些变量仅由有限个数据值组成时,通常用枚 举类型来表示。 所谓枚举是指将变量的值一一列举出来,变量的 值只限于列举出来的值的范围内。如一周只有7天, 一年只有12个月等等。
注意:枚举类型是一种基本数据类型,而不是一 种构造类型。关键字为enum。

C语言结构体和共用体实验报告

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结构体数据的输入。

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进行内存释放。

实验9(1)掌握C语言环境下结构体和共用体类型变量的定义和使用方法

实验9(1)掌握C语言环境下结构体和共用体类型变量的定义和使用方法

掌握C语言环境下结构体和共用体类型变量的定义和使用方法实验目的:(1) 掌握C语言环境下结构体和共用体类型变量的定义和使用方法;(2) 掌握结构体类型数组的概念和使用;(3) 掌握指向结构体变量的指针变量、尤其是链表概念;实验内容:1.首先熟悉结构体类型变量的基本声明方法、结构体类型变量的内存分配原则、初始化和引用结构体变量及其成员变量的基本方法;然后掌握结构体变量的输入、输出方法。

(参见教材例10-1~10-5)2.基于结构体数组的应用实验。

(1) 有n个学生,每个学生的数据包括学好(num)、姓名(name[20])、性别(sex)、年龄(age),以及三门课程的成绩(score[3])。

要求:在main()函数中输入这些学生的这些数据,然后设计一个函数count()来计算每个学生的总分和平均分,最后,打印出所有数据信息(包含原来输入的学生原始数据信息和求解出来的新信息)。

(2)对第(1)题实验,求出其中成绩最好的人和成绩最差的人,并显示出来。

(假定成绩最好和最差的人都只有一个)(3)*如果假定成绩最好和最差的人的个数不一定唯一,程序应该如何修改才能完成求出所有最好和最差者,以及输出它们来。

3.*链表实验。

(1) 建立一个链表,每个结点包含:职工号、工资。

用malloc()函数开辟新结点,用free()函数回收不用的结点空间。

要求从键盘输入5个员工的数据信息(用create_list()),然后,用函数output_list()将它们一一打印出来,用free_list()将链表中的结点空间回收。

假设职工编号为1001,1005,1008,1010,1101。

注:malloc()和free()为系统函数。

create_list(),output_list(),free_list()为用户自定义函数。

(2)在(1)的基础上,新增一个函数inset_node()插入员工1006和1032的数据信息。

C语言程序设计实例教程第2版习题答案作者李红第9章结构体和共用体.doc

C语言程序设计实例教程第2版习题答案作者李红第9章结构体和共用体.doc

9.4课后习题9.4.1项目练习一.练习目的1.进一步巩固结构体类型和共用体类型的定义与引川2.进一步复习链表的建立过程3.进一步巩固枚举类型的定义与枚举元索的引用方法二.练习内容1.用结构体变量表示平面上的一个点(横坐标和纵坐标),输入两个点,求两点Z间的距离。

#include "stdio.h"include "math.h"struct pin{float x;float y;}a,b;main(){printfC*请输入a点的横纵坐标:“);scanf("%f%f"/&a.x,&a.y);printfC'Xn");printf("请输入b点的横纵坐标scanf(,,%f%f"/&b.x,&b.y);printf("\n n);printff"输出a、b 两点之间的距离是:%f",sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y)));getch();}2.16个同学围成一-圈,从笫1个人开始按1、2、3的顺序报号,凡报到3者退出圈子。

找出最后昭在圈子中的人原来的序号。

ttinclude "stdio.h"#include "stdlib.h"#define LEN sizeof(struct game)struct game{int num;struct game *next;};struct game *creat(){ struct game *head,*p;head=p=(struct game *) malloc(LEN);p->num=l;int i=2;while(i<=16){ p・>next=(struct game *) malloc(LEN);p->next-:>nu m=i;i++;p=p->n ext; }p->next=head; return(head);} struct game *delete(struct game *head) { struct game*pl=head,*p2=head,*x; int k=l;while(pl->next!=pl) {if(k==3) {x=pl; pl=pl->next;p2・>n ext=pl; free(x); x=NULL; k=0;} else {P2=pl; pl=pl->next;}pl->next=NULL;return(pl);}void print(struct game *head){ struct game *p;p=head;while(p!=NULL) {printf("%d\t",p->num);p=p->n ext;}printfCAn");}main(){ struct game *pt,*p;pt=creat();p=delete(pt);print(p);free(p);getch();}3.建立一个链表,每个结点包含的成员为:职工号、工资。

C语言程序设计PPT课件第12章 结构体和共用体

C语言程序设计PPT课件第12章 结构体和共用体

2/60
12.1从基本数据类型到抽象数据类型
二进制数——类型本不存在 – 内存里存的内容,你认为它是什么,它就
是什么
– 在早期的机器指令及汇编语言中,数据对
象均用二进制数表示,没有类型的概念
一般的CPU只支持两种类型 – 整数、浮点数
2020/2/21
3/60
12.1从基本数据类型到抽象数据类型
12
2020/2/21
21/60
12.2.7结构体所占内存的字节数
ch
f
ch
ch
f
ch12个字节
事实上,所有数据类型在内存中都是从偶数地址开始存放的
且结构所占的实际空间一般是按照机器字长对齐的
不同的编译器、平台,对齐方式会有变化
结构体变量的成员的存储对齐规则是与机器相关的
具有特定数据类型的数据项大小也是与机器相关的
25/60
12.4结构体指针的定义和初始化
如何定义指向结构体变量的指针?
pt STUDENT stu1; STUDENT *pt; pt = &stu1;
等价于
STUDENT *pt = &stu1;
stu1 成员1 成员2 成员3 成员4
在高级语言引入了基本数据类型 – 整型、浮点型、字符型等 – 不同语言会定义不同的基本类型 – 基本数据类型并不能方便地解决所有问题
有些语言(如PL/1)中试图规定较多的类型, 如数组、树、栈等,但实践证明不是个好办法
2020/2/21
4/60
12.1从基本数据类型到抽象数据类型
用户自己构造数据类型-复合数据类型 – 由基本数据类型迭代派生而来,表示复杂的数据对象
2020/2/21

C语言程序设计教程第9章 结构体共用体PPT课件

C语言程序设计教程第9章 结构体共用体PPT课件

2020/7/30
10
举例:
定义结构体: struct stu
{ char num[20]; char name[20]; char sex; float score;
}; 声明结构体变量: struct stu student1, student2;
2020/7/30
11
② 声明结构体类型的同时定义结构体 变量
第9章 结构体、共用体
9.1 结构体类型概述
9.2 结构体类型变量的定义和引用
9.3 结构体数组
9.4 结构体与指针
9.5 结构体与函数
9.6 链表的基本操作
9.7 共用体类型数据的定义和引用
9.9 位运算和位段
9.10 自定义类型(typedef)
9.11 常见错误及改正方法
2020/7/30
1
整体 概述
struct 结构体名 {
成员表列 }变量名表列;
如: struct stu { char num[20];
char name[20]; char sex; float score; } student1, student2
2020/7/30
12
③ 直接定义结构体类型变量
struct { 成员表列 }变量名表列; 这种定义方法没有出 现结构体名,只能定义 变量一次。
表中,通常包括学在生C语的言中学称号为结、构姓体类名型、性别、年
龄、姓成名绩、年家龄庭性地别址民等族项文目化。程度数组住只址能按电序话号组码 织多字符个数同组 类整型型的字数符据字,符显然整我型 们不字符能数用组 一长个整数型
2020/7/30
4
组来存放这一组数据。
9.1.1 结构体类型定义
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验9 结构体数组作函数参数
【实验任务】学生成绩管理系统V5.0
某班有最多不超过30人(具体人数由键盘输入)参加期末考试,考试科目为数学(MT)、英语(EN)和物理(PH)。

参考例12.7,定义结构体类型,用结构体数组作函数参数,编程实现如下菜单驱动的学生成绩管理系统:
(1)录入每个学生的学号、姓名和各科考试成绩;
(2)计算每门课程的总分和平均分;
(3)计算每个学生的总分和平均分;
(4)按每个学生的总分由高到低排出名次表;
(5)按每个学生的总分由低到高排出名次表;
(6)按学号由小到大排出成绩表;
(7)按姓名的字典顺序排出成绩表;
(8)按学号查询学生排名及其考试成绩;
(9)按姓名查询学生排名及其考试成绩;
(10)按优秀(90~100)、良好(80~89)、中等(70~79)、及格(60~69)、不及格(0~59)5个类别,对每门课程分别统计每个类别的人数以及所占的百分比;
(11)输出每个学生的学号、姓名、各科考试成绩,以及每门课程的总分和平均分。

要求程序运行后先显示如下菜单,并提示用户输入选项:
1.Append record
2.Caculate total and average score of every course
3.Caculate total and average score of every student
4.Sort in descending order by total score of every student
5.Sort in ascending order by total score of every student
6.Sort in ascending order by number
7.Sort in dictionary order by name
8.Search by number
9.Search by name
10.Statistic analysis for every course
11.List record
0.Exit
Please enter your choice:
然后,根据用户输入的选项执行相应的操作。


【思考】
动态单链结构数组编实现
(1)考例
参12.9~例12.11,用向表代替体,程上述程序。

础删记录插记录会动态链与结构数组(2)在(1)基上,增加“除”和“入”的功能,体表体的优
不同点和缺点。

【实验目的】
在实验“学生成绩管理系统V4.0”的基础上,通过增加任务要求,熟悉结构体类型、结构体数组作函数参数、模块化程序设计方法,体会应用结构体类型代替普通的数组类型实现数据库管理的优越性。

相关文档
最新文档