程序设计导论 ——第15讲 结构与结构数组.

Slides:



Advertisements
Similar presentations
程序设计导论 结构与结构数组.
Advertisements

自 然 探 索 圓周美語 My name is.
大学实用教程 C语言.
資料結構與C++程式設計進階 資料結構概論 講師:林業峻 CSIE, NTU 6/ 7, 2010.
C语言程序设计 第十二章 位运算.
高级语言程序设计 主讲人:陈玉华.
第九章 结构体 主讲教师 :贾月乐 电话:
第10章 结构体与共用体 概述 结构体 共用体 枚举类型.
补充内容 结构体 概述 定义结构体类型和定义结构体变量 结构体变量的引用 结构体变量的初始化 指针与结构体 用typedef定义类型的别名.
If … else 選擇結構 P27.
C++语言程序设计 C++语言程序设计 第六章 指针和引用 第十一组 C++语言程序设计.
Chap 9 结构 9.1 构建手机通讯录 9.2 结构变量 9.3 结构数组 9.4 结构指针.
程序设计专题 第2讲 - 结构 刘新国.
STRUCTURE 授課:ANT 日期:2010/5/12.
自定义数据类型 潘荣江 山东大学计算机科学与技术学院
C++语言程序设计 C++语言程序设计 第四章 数组及自定义数据类型 C++语言程序设计.
第九章 结构体和共用体 结构体的定义 结构体的使用 共用体的定义 共用体的使用 主讲:李祥 时间:2015年10月.
计算概论 第十八讲 C语言高级编程 结构与习题课 北京大学信息学院.
C语言程序设计 李祥.
辅导课程六.
QQ: 李祥 QQ: 欢迎多种方式的学习交流,祝大家学有所成.
第五章 指针 5.1 指针的概念和定义 5.2 指针运算 5.3 指针和数组 5.4 字符串指针 5.5 指针数组 5.6 指向指针的指针
第7讲 结构体与共用体 7.1 结构体 7.2 共用体.
第二章 基本元素、类型和概念 七、输出函数printf 八、输入格式转换函数scanf.
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
第13章 结构体的应用 13.1 了解由用户构造的数据类型 13.2 结构体类型说明及结构体变量 13.3 结构体数组
第4章 顺序程序设计.
Struct結構 迴圈
第1章 概述 本章要点: C语言程序结构和特点 C语言程序的基本符号与关键字 C语言程序的编辑及运行 学习方法建议:
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
C语言复习3----结构体.
第十章 用户自定义数据类型 目录 学生信息管理系统的开发 结构体数据类型的概述 结构体变量的使用 结构体数组
1.3 C语言的语句和关键字 一、C语言的语句 与其它高级语言一样,C语言也是利用函数体中的可执行 语句,向计算机系统发出操作命令。按照语句功能或构成的不 同,可将C语言的语句分为五类。 goto, return.
OOP6 結構Struct 黃兆武.
浙江长征职业技术学院—计算机与信息技术系—相方莉制作
<编程达人入门课程> 本节内容 内存的使用 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群: ,
C语言程序设计 第一章 数据类型, 运算符与表达式 第二章 顺序程序设计 第三章 选择结构程序设计 第四章 循环控制 第五章 数组.
指標
Chap 5 函数 5.1 计算圆柱体积 5.2 使用函数编写程序 5.3 变量与函数.
C语言程序设计 李祥 QQ:
<编程达人入门课程> 本节内容 为什么要使用变量? 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ:
C++程式設計入門 變數與運算子 作者:黃建庭.
第九节 赋值运算符和赋值表达式.
第7章 程序的结构 四、生存期与存储属性 五、extern关键字与外部连接属性 六、static关键字与内部连接属性.
3.16 枚举算法及其程序实现 ——数组的作用.
第二章 类型、对象、运算符和表达式.
本节内容 结构体 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
C++语言程序设计 C++语言程序设计 第六章 指针和引用 第十一组 C++语言程序设计.
本节内容 指针类型.
本节内容 结构体.
本节内容 指针类型的使用 视频提供:昆山爱达人信息技术有限公司.
結構、檔案處理(Structure, File)
第十二章 位运算.
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
第14讲 结构体和共用体 计算机与通信工程学院.
第18讲 从C到C++ 计算机与通信工程学院.
C/C++基礎程式設計班 C語言入門、變數、基本處理與輸入輸出 講師:林業峻 CSIE, NTU 3/7, 2015.
第八章 结构体和共用体 结构体类型和结构体变量 结构体数组 结构体指针变量 共用体.
第9章 C++程序设计初步 9.1 C++的特点 9.2 最简单的C++程序 9.3 C++的输入输出 9.4 函数的重载
<编程达人入门课程> 本节内容 有符号数与无符号数 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ:
Chap 9 结构 9.1 构建学生信息库 9.2 计算学生平均成绩 9.3 学生成绩排序 9.4 修改学生成绩.
本节内容 指针类型 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
本节内容 this指针 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
安排座位.
C语言基础学习 从外行到入门.
第十二章 C与C C转入C++时不需改变的内容 12.2 C转入C++的一些与类无关的 新特性
C++语言程序设计 C++语言程序设计 第二章 基本数据类型与表达式 第十一组 C++语言程序设计.
Presentation transcript:

程序设计导论 ——第15讲 结构与结构数组

结构与结构数组 为什么要使用结构? 数组:其中的每一个元素都必须是相同类型的数据; 实际应用:常常需要将不同类型的数据放在一起,使处理起来更为直观方便。 例如:一个学生的信息,包括姓名、性别、出生年月日、身高和体重,如果能归在一起,对于统计个人信息会十分方便。 为此,引入结构体的概念

1. 结构体类型的定义 结构体可以用来表示一组不同类型的数据。尽管这些数据的类型不同,但却有内在的联系,比如学生的个人信息有如下5项: 姓名,汉语拼音,最多20个字符; 性别,M / F 生日,19841107(年月日) 身高,1.74(m) 体重,51.5(kg)

结构体类型的定义(2) 可以定义一个名为student的结构体,将5项信息包容在一起,构成学生的个人信息 struct student //名为student的结构类型 { char name[20]; //姓名 char sex; //性别 unsigned long birthday; //生日 float height; //身高 float weight; //体重 };

定义结构体类型的格式 struct 是结构体类型的标志,结构体名student是编程者自己选定的。 { 类型名 1 成员名 1; 类型名 2 成员名 2; . . . 类型名 n 成员名 n; } ; struct 是结构体类型的标志,结构体名student是编程者自己选定的。 大括号所括起来的5条语句是结构体中5个成员的定义。 结构体定义之后一定要跟一个“;”号。

2. 结构体变量的定义和引用 //********************************** //* 程 序 名:5-5.CPP * //* 作 者:wuwh * //* 编制时间:2002年11月20日 * //* 主要功能:学生个人信息 *

#include <stdio.h> struct student //定义结构 { char name[20]; //姓名 char sex; //性别 unsigned long birthday; //生日 float height; //身高 float weight; //体重 };

int main() // 主函数 { struct student my; // 定义my为student类的数组 printf( "输入自己的数据\n" ); // 提示信息 printf( "姓名(汉语拼音)\n" ); // 显示提示 printf( "性别:M/F\n" ); printf( "生日(年月日)\n" ); printf( "身高(米)\n" ); printf( "体重(kg)\n\n" );

scanf( "%s\n", my.name); scanf( "%c", &my.sex ); // 依次输入个人信息 scanf( "%s\n", my.name); scanf( "%c", &my.sex ); scanf( "%d", &my.birthday ); scanf( "%f", &my.height ); scanf( "%f", &my.weight );

// 依次输出个人信息 printf( "%s\n", my.name ); printf( "%c\n", my.sex ); printf( "%d\n", my.birthday ); printf( "%f\n", my.height ); printf( "%f\n", my.weight ); return 0; }

说明 struct student //此处为结构类型定义 struct student my; 定义类型不会分配内存空间 { char name[20]; //姓名 char sex; //性别 unsigned long birthday; //生日 float height; //身高 float weight; //体重 }; //结构变量my的定义,系统会为my分配内存空间 struct student my;

变量 my (my为变量的符号地址) my.name my.sex my.birthday my.height my.weight & my ( 变量的内存地址)

点操作符 “.”:用于对结构体变量的成员的引用 如: printf( “%s\n”, my.name) ; 这里 “ . ” 读作 “的”

3. 结构体变量的初始化 方法一:定义和初始化同时完成 struct person { char name[10]; per.name = “Liming”; per.birthday = 19821209; per.placeofbirth = “Beijing”; struct person { char name[10]; unsigned long birthday; char placeofbirth[20]; } per = { “Li ming”, 19821209, “Beijing”};

方法二:分开完成 struct person { char name[10]; unsigned long birthday; char piaceofbirth[20]; }; struct person per = {“Li ming”, 19821209, “Beijing”};

4. 结构数组 结构也可以构成数组,即每个数组元素是一个结构; 当然,要求这一类数组的全部元素都应该是同一类结构; 例如:同宿舍4名同学的数据,构成一个有4个元素的结构数组。

student Room [ 4 ] = { }; {“Li li”, ‘M’, 19840318, 1.82, 65.0 }, {“Mi mi”, ‘M’, 19830918, 1.75, 58.0 }, {“He lei”, ‘M’, 19841209, 1.83, 67.1 }, {“Ge li”, ‘M’, 19840101, 1.70, 59.0 } };

name name name name sex sex sex sex birthday birthday birthday birthday height height height height weight weight weight weigh 下标0 下标1 下标2 下标3 Room

Room[ 0 ] “Li li”, ‘M’, 19840318, 1.82, 65.0 Room[ 1 ] “Mi mi”, ‘M’, 19830918,1.75, 58.0 Room[ 2 ] “He lei”, ‘M’, 19841209, 1.83, 67.1 Room[ 3 ] “Ge li”, ‘M’, 19840101, 1.70, 59.0

//********************************** //* 程 序 名:5_6.cpp * //* 作 者:wuwh * //* 编制时间:2002年11月21日 * //* 主要功能:结构数组排序 * #include <stdio.h> struct student //名为student的结构类型 { char name[20]; //姓名 char sex; //性别 unsigned long birthday; //生日 float height; //身高 float weight; //体重 }; struct student Room [ 4 ] = { //定义全局student结构数组,并初始化 {“Li li”, ‘M’, 19840318, 1.82, 65.0 }, {“Mi mi”, ‘M’, 19830918, 1.75, 58.0 }, {“He lei”, ‘M’, 19841209, 1.83, 67.1 }, {“Ge li”, ‘M’, 19840101, 1.70, 59.0 }

int main() { struct student q; //结构变量q,用于交换时保存中间结果 int i = 0 ; int j =0; //按照年龄排序 for ( j = 0; j < 3; j = j+1 ) for ( i = 0; i < 3 – j ; i = i +1 ) if (Room[ i ].birthday > Room[i+1].birthday) q= Room[ i ]; //交换,结构变量赋值 Room[ i ]=Room[ i+1]; Room[ i+1]= q; } for( i = 0; i < 4; i = i + 1 ) //输出排序后的结果 printf( "%s\n", Room[i].name ); printf( "%c\n", Room[i].sex ); printf( "%d\n", Room[i].birthday ); printf( "%f\n", Room[i].height ); printf( "%f\n", Room[i].weight ); return 0;