重庆邮电大学:《C语言程序设计》课程PPT教学课件(讲稿)第十讲 结构体

8 结构体&共用体
8 结构体&共用体

11侧:输出下表 学号姓名性别数学英语计算机|c语言通信网平均分 101张三 80 98 86 90 88.8 102李四M8289 94 81 91 87.4 103 王五F927886 79 89 84.8 104何六M89 81 78 63 76 774 105周七F98 69 91 85 67 82 106 用什么 ·缺点 按行处理如何定义数据 类型呢? ?stu30]; 2
2 例1:输出下表 学号 姓名 性别 数学 英 语 计算机 C语言 通信网 平均分 101 张三 M 80 90 98 86 90 88.8 102 李四 M 82 89 94 81 91 87.4 103 王五 F 92 78 86 79 89 84.8 104 何六 M 89 81 78 63 76 77.4 105 周七 F 98 69 91 85 67 82 106 … … •用什么样的数据类 型存储?•缺点? •分配内存不集中,寻址效率不高 •对数组进行赋初值时,容易发生 错位 •结构显得比较零散,不容易管理 按行处理如何定义数据 类型呢? ? stu [30];

结构体类型 C语言没有为我们提供相应的数据类型, 但我们可以根据需要自己定义数据~结构类型 根据题意,我们定义如下的结构体的成员 struct !注意: struct student 是一个数据类型
3 结构体类型 ▪ C语言没有为我们提供相应的数据类型, 但我们可以根据需要自己定义数据类型。 ▪ 根据题意,我们定义如下的结构体类型: struct student {int num; char name[20]; char sex; float score[5]; float aver; }; •结构类型 的成员 !!!注意: struct student 是一个数据类型

结构体变量的定义 struct student stu[30] 含义:定义一个一维数组,有30个元素,其 数据类型为 struct student 为了方便后边的使用,我们可以用 typedef 为这个数据类型起个别名, typedef struct student STU STU和其它类型一样使用。 ???下列语句什么含义? STU a; STU stul[30]:
4 结构体变量的定义 ▪ struct student stu[30]; ▪ 含义:定义一个一维数组,有30个元素,其 数据类型为struct student ▪ 为了方便后边的使用,我们可以用typedef 为这个数据类型起个别名, ▪ typedef struct student STU; ▪ STU 和其它类型一样使用。 ◼ ???下列语句什么含义? STU a;STU stu1[30];

内存分配 n共30个数组元素,每个数组元素分配多 少字节? sh可用 sizeof(struct student)求得 stuo1o1张三M8090 98 86 90 88.8 stu1][102李四M828994 81 91 87.4 stu2]103王五F9278:6 79 89 84.8 su3]104何六M89 81 78 63 76 77 stu4105周七F|m1 85 67 82 106 那每个学生的学 号、姓名、∴又 如何表示呢?
5 内存分配 ▪ 共30个数组元素,每个数组元素分配多 少字节? ▪ 可用sizeof(struct student )求得. 101 张三 M 80 90 98 86 90 88.8 102 李四 M 82 89 94 81 91 87.4 103 王五 F 92 78 86 79 89 84.8 104 何六 M 89 81 78 63 76 77.4 105 周七 F 98 69 91 85 67 82 106 … … stu stu[0] stu[1] stu[2] stu[3] stu[4] …… •那每个学生的学 号、姓名、…又 如何表示呢?

引用结构体变量的成员 n结构体变」 注意区分: 结构体类型; 使用外 结构体变量; 中每 个成员结构体变量的成员 例 stu[i]. nul stu[]. name 翁都是变量,与它同类型变量同样使用
6 引用结构体变量的成员 ▪ 结构体变量的成员(member),也称元素 (element)或域(filed)。 ▪ 使用引用运算符 . 对结构类型变量stu[i]中每 个成员进行引用 ▪ 例: ▪ stu[i].num stu[i].name ▪ 它们都是变量,与其它同类型变量同样使用。 注意区分: •结构体类型; •结构体变量; •结构体变量的成员

例1的实现 算法 定义结构体类型 定义结构体变量 输入 输出
7 例1的实现 ▪ 算法 ▪ 定义结构体类型 ▪ 定义结构体变量 ▪ 输入 ▪ 输出

例1(1) #include struct student [int num:/学号 char name[20]:姓名* char sex;/性别:m-男,f-女刘 float score[5]:成绩* float aver;/平均分* :/*定义结构体类型 struct studen↑,一般都定义为全局可用 的数据类型*/ pede struct student STU/为数据类型起别名*/ void maino t int i,j: float sum STU stul3o];供定义结构体变量*
8 例1 (1) #include struct student {int num; /* 学号 */ char name[20]; /* 姓名 */ char sex; /* 性别:m-男,f-女 */ float score[5]; /* 成绩 */ float aver; /* 平均分 */ }; /* 定义结构体类型 struct student ,一般都定义为全局可用 的数据类型*/ typedef struct student STU;/*为数据类型起别名*/ void main() { int i,j; float sum; STU stu[30];/* 定义结构体变量 */

例1(2) for(i=0;i<30:i++)/输入每个学生的信息*/ [printf please input the number n: ) scan If %od, &stu[]. num): getchar printf please input the name \n scanf(%5", stu[i] name): getchar printf f or m(female or mail)?\n:): scanf( %c", &stu[i]. sex) printf( please input 5 scores: \n forj=0<5:j+)输入5门课的成绩* scanf(%f",&stu[i]. scoreLjD) sum=0:/下边计算5门课的平均分,并存放在相应成员变量中 for(=0j<5小*+ sum+=stu[]. score[]: stu[i]. aver=sum/5; printf("num\tname\t\t sex c1 c2 c3 c4 c5 aver \n") for(i=O<30:++)/*输出学生基本信息 pntf(‰ts%%3.0%0%3.0%3.0%3.0%4.1fn stu[i]. num, stu[i] name, stu[i]. sex, stu[i]. score[1, stu[i]. score[21 stu[i]. score[3], stu[i]. score[4], stu[i]. score[5], stu[i]. average)
9 例1 (2) for(i=0;i<30;i++) /* 输入每个学生的信息 */ {printf(“please input the number\n:”); scanf(“%d”,&stu[i].num);getchar(); printf(“please input the name\n:”); scanf(“%s”, stu[i].name);getchar(); printf(“f or m(female or mail)?\n:”); scanf(“%c”,&stu[i].sex); printf(“please input 5 scores:\n:”); for(j=0;j<5;j++) /*输入5门课的成绩*/ scanf(“%f”,&stu[i].score[j]); sum=0; /*下边计算5门课的平均分,并存放在相应成员变量中*/ for(j=0;j<5;j++) sum+=stu[i].score[j]; stu[i].aver=sum/5; } printf("num\tname\t\t sex c1 c2 c3 c4 c5 aver\n"); for(i=0;i<30;i++) /* 输出学生基本信息 */ {printf("%d\t%s\t %c %3.0f %3.0f %3.0f %3.0f %3.0f %4.1f\n", stu[i].num, stu[i].name, stu[i].sex, stu[i].score[1], stu[i].score[2], stu[i].score[3], stu[i].score[4], stu[i].score[5], stu[i].average); }

输入写成函数 void工npu( sTU al, int n) int i, J float sum for(i=O<n;i+-)/输入每个学生的信息* (printfcplease input the number \n: ) scan &stu[i]. num): getchar printf please input the name \n: ScO tut] name) 2: getchar printfCf or m(female or mail)?\n:"): scar nfsc, &stu[i]. sex) lease input 5 scores: \ or(=05:)/输入5门课的成绩* sum0:下边计算5课的平均芬,并存放在相应成员变量中 for(j=o: j<NUMOFCOURSE j++) sum+=stu[i]. score stu[i]. aver=sum/ NUMOFCOURSE: 10
10 输入写成函数 void Input( STU a[],int n) { int i,j; float sum; for(i=0;i<n;i++) /* 输入每个学生的信息 */ {printf(“please input the number\n:”); scanf(“%d”,&stu[i].num);getchar(); printf(“please input the name\n:”); scanf(“%s”, stu[i].name);getchar(); printf(“f or m(female or mail)?\n:”); scanf(“%c”,&stu[i].sex); printf(“please input 5 scores:\n:”); for(j=0;j<5;j++) /*输入5门课的成绩*/ scanf(“%f”,&stu[i].score[j]); sum=0; /*下边计算5门课的平均分,并存放在相应成员变量中 */ for(j=0;j<NUMOFCOURSE;j++) sum+=stu[i].score[j]; stu[i].aver=sum/ NUMOFCOURSE; } }
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 重庆邮电大学:《C语言程序设计》课程PPT教学课件(讲稿)第八讲 结构体.ppt
- 重庆邮电大学:《C语言程序设计》课程PPT教学课件(讲稿)第七讲 指针与数组.ppt
- 重庆邮电大学:《C语言程序设计》课程PPT教学课件(讲稿)第六讲 数组.ppt
- 重庆邮电大学:《C语言程序设计》课程PPT教学课件(讲稿)第五讲 多函数程序设计.ppt
- 重庆邮电大学:《C语言程序设计》课程PPT教学课件(讲稿)第四讲 循环结构程序设计.ppt
- 重庆邮电大学:《C语言程序设计》课程PPT教学课件(讲稿)第三讲 选择结构程序设计.ppt
- 重庆邮电大学:《C语言程序设计》课程PPT教学课件(讲稿)第二讲 顺序程序设计.ppt
- 重庆邮电大学:《C语言程序设计》课程PPT教学课件(讲稿)第1讲 C语言概述(主讲:谢竞博).ppt
- 湖南理工学院:《办公自动化实用技术》第8章 激光打印机(刘怀金).ppt
- 湖南理工学院:《办公自动化实用技术》第7章 喷墨打印机(刘怀金).ppt
- 湖南理工学院:《办公自动化实用技术》第7章 Word 2003其他实用操作(刘怀金).ppt
- 湖南理工学院:《办公自动化实用技术》第6章 针式打印机(刘怀金).ppt
- 湖南理工学院:《办公自动化实用技术》第6章 Word 2003的图文混编(刘怀金).ppt
- 湖南理工学院:《办公自动化实用技术》第5章 Word 2003的表格制作(刘怀金).ppt
- 湖南理工学院:《办公自动化实用技术》第4章 Word 2003的基本操作(刘怀金).ppt
- 湖南理工学院:《办公自动化实用技术》第3章 办公中的文字和表格处理(刘怀金).ppt
- 湖南理工学院:《办公自动化实用技术》第2章 办公设备使用与维护(3/3).ppt
- 湖南理工学院:《办公自动化实用技术》第2章 办公设备使用与维护(2/3).ppt
- 湖南理工学院:《办公自动化实用技术》第2章 办公设备使用与维护(1/3).ppt
- 湖南理工学院:《办公自动化实用技术》第1章 办公自动化的基础知识(刘怀金).ppt
- 重庆邮电大学:《C语言程序设计》课程PPT教学课件(讲稿)第九讲 文件.ppt
- 重庆邮电大学:《C语言程序设计》课程教学大纲 The C Language Programming Design.doc
- 重庆邮电大学:《C语言程序设计》课程作业2 根据订票的张数和月份决定优惠折扣.doc
- 重庆邮电大学:《C语言程序设计》课程作业4 循环结构程序设计.doc
- 重庆邮电大学:《C语言程序设计》课程作业讲评.doc
- 网络信息安全教育认证培训(PPT讲稿)网络安全技术.ppt
- 河北工业大学:《离散数学》课程PPT教学课件(讲稿)第三章 集合的概念及其表示法.ppt
- 河北工业大学:《离散数学》课程PPT教学课件(讲稿)第四章 函数的概念.ppt
- 河北工业大学:《离散数学》课程PPT教学课件(讲稿)第五章 代数系统.ppt
- 河北工业大学:《离散数学》课程PPT教学课件(讲稿)第一章 概述 Discrete Mathematics(主讲:郭永芳).ppt
- 河北工业大学:《离散数学》课程PPT教学课件(讲稿)第二章 谓词逻辑.ppt
- 河北工业大学:《离散数学》课程PPT教学课件(讲稿)第七章 图.ppt
- 《Matlab讲解》教学资料:Matlab初步(讲稿)之一.doc
- 《Matlab讲解》教学资料:普兰廷卡的模态形而上学.doc
- 《Matlab讲解》教学资料:用Matlab解微分方程.doc
- 《Matlab讲解》教学资料:用Matlab求解非线性规划.doc
- 《Matlab讲解》教学资料:用Matlab作最小二乘曲线拟合.doc
- 《Matlab讲解》教学资料:调用 Matlab 软件初步.doc
- 《Matlab讲解》教学资料:调用 Matlab 软件.doc
- 《Matlab讲解》教学资料:Matlab初步(讲稿)之二.doc