第四章数组和结构体
更新时间:2023-09-13 18:24:02 阅读量: 教学研究 文档下载
第1章 数组和结构体
本章目标掌握数组定义的规则。
掌握数组的初始化方法及数组元素的引用。 掌握有关数组的基本算法。 掌握字符串处理函数的应用。 掌握结构体定义和使用的规则
学会使用VC++6.0开发环境中的Debug调试功能:单步执行、设置断点、观察变量值。
授 课 内 容 4.1 数组4.2 字符型数组和字符串处
理库函数 4.3 结构体类型
4.4 数组和结构体4.5 构体嵌套 程序设计举例调试技术
4.1、数组 迄今为止,我们使用的都是属于基本类型(整
型、字符型、实型)的数据,c语言还提供了构造类型的数据,它们有:数组类型、结构体类型、共用体类型。构造类型数据是由基本类型数据按一定规则组成的,因此有的书称它们为“导出类型”。 问题的引出:
实际应用的程序设计中,只用几个变量的情况是极少的;更多的情况是处理大批量的相同类型或不同类型的数据。
相同类型数据举例:统计交大15,000学生英语4级统考成绩; 不同类型数据举例:管理交大15,000学生学籍信息记录,包括:姓名、学号、出生日期、班级、各科成绩等。 用什么样的数据结构来描述这类应用更简洁?一维数组
例如:intarray[10];1
常用于处理大批量数据; 数据特点:存在内在联系;
数组——具有相同数据类型的变量集合; 这些变量都有相同名字,但下标不同; 称这些变量为数组元素;
只有一个下标——一维数组; 有两个下标——二维数组。
一维数组定义 数组是具有一定顺序关系的若干变量的
集合体,组成数据的变量称为该数组的元素变量,简称元素。 一维数组的定义方式为: 例如: int a[10]; 它表示数组名为a,此数组有10个元素。 说明:
(1) 数组名定名规则和变量名相同,遵循标识符定名规则。
(2) 数组名后是用方括弧括起来的常量表达式,不能用圆括弧, 下面用法不对:int a(10);
(3)方括弧括中的下标表示元素在数组中的位置。C语言的下标从0, 必须是整型变量或常量。
(4) 编译系统处理数组说明语句时,为它在内存中分配一定的存储 空间,数组在内存中存储时,是按下标递增的顺序连续存储各 元素的值的。
一维数组的初始化(1) 在定义数组时对数组元素赋
以初值。例如:
int a[10]={0,1,2,3,4,5,6,7,8,9}; (2) 可以只给一部分元素赋值。例如: int a[10]={0,1,2,3,4};
定义a数组有10个元素,但花括弧内只提供5个初值,这表示只给前面5个元素赋初值,后5个元素值为0。
(3) 如果想使一个数组中全部元素值为0,可以写成 int a[10]={0,0,0,0,0,0,0,0,0,0}; 不能写成 int a[10]={0*10};
这是与FORTRAN语言不同的,不能给数组整体赋初值。
(4) 在对全部数组元素赋初值时,可以不指定数组长度。例如: int a[5]={1,2,3,4,5};
可以写成 int a[]={1,2,3,4,5};
在第二种写法中,花括弧中有5个数,系统就会据此自动定义a数组的长度为5。 A[0]A[1]A[2]A[3]A[4]2
例:int A[5]; 在内存存储如图 数组的首地址是数组名A
数组的首地址也是第一个元素的地址&A[0]
C语言中,数组的整体不能参加数据处理,参加处理的只能是数组中的元素变量。所以要对数组进行初始化。 例如:int data[5]={,4,,8,};赋值如图
例4-1题目:给一维数组x输入10个整数,找出x数组中的最大
数和最小数。 算法分析:
1、假设数组中第1个元素最大,令xmax=a[0] 2、将a[i](0<= i < n)与max进行比较, 若a[i] < xmax ,i=i+1,再执行2 否则,令xmax=a[i],i=i+1,再执行2 3、循环结束,求出最大元素并输出max。
#include
{ int array[7];
cout<<\ for(int i=0; i<7; i++) cin>>array[i]; int big = array[0];
for(int j=0; j<7; j=j+1) if(array[j]>big) big = array[j]; cout<<\ return 0; }
输入输出2 1 7 3 12 4 9max=12二维数组定义格式:
<类型> <数组名>[<常量表达式1>][<常量表达式2>];3
例如,三个学生四门课程成绩数据如下: 85 87 93 88 86 90 95 89 78 91 82 95
利用二维数组存放这些数据更能表现数据之间相互联系的特征。每一行数据表示该学生的各门课程的成绩,而每一列数据表示该门课程各学生的成绩。该数组定义为: int matrix[3][4];
二维数组存储结构逻辑结构:
二维数组恰似一张表格(或矩阵)。数组元素中的第一个下标值表示该元素在表格中的行号,第二个下标为列号。 M[3][3]具有如下逻辑结构:
M[0][0] M[0][1] M[0][2] M[1][0] M[1][1] M[1][2] M[2][0] M[2][1] M[2][2]
存贮结构: 二维数组在内存中按一维数组存放、占据一片连续的存贮单元;是“按行顺序”在内存中分配存贮单元。M数组在内存中排列如下: m00m01 m02 m10 m11 m12 m20 m21 m22
二维数组初始化 1.按照二维数组元素的物理存储次序给所有
或部分数组元素提供数据值
int score[3][4]={ 85,87,93,88,86,90,95,89,78,91,82,95}; //给数组stu_score每个元素都提供初值 float matrix[2][3]={ 1.0,3.0};
//仅为数组matrix的前2个元素提供初值 2.以行结构方式提供各数据值
int score[3][4]={ {85,87,93,88}, {86,90,95,89},
{78,91,82,95} }; 4.2 字符型数组
和字符串处理库函数字符串用双引号括起来,例
如,”abc”;
用字符型数组存放字符串,存放时,在有效字符后自动加’\\0’; 称’\\0’为空值,是字符串结束标志; 有效字符的个数称为字符串长度。
例如,”abc”的长度为3,但占4个字节 (’\\0’占一位) 。
字符型数组的定义和初始化char weekday [7]={ \
4
char weekday [7]= \字符串的输入与输出 char name[20]; cin>>name;
cin.get(name, n);
//第一个是字符数组变量,第二个指定向这个变量//中读入几个字符 cout< 4-2 字符串的输入与输出#include char name1[20], name2[20]; cout<<\input a name with blank(within 19 characters): \ cin.get(name1, 20); cout<<\ cin>>name2; cout<<\function get, the name storing in the variable is: \ cout<<\<<, the name storing in the variable is: \ return 0; } 字符串处理库函数需要添加#include 字符串拷贝; strcat(): 字符串连接; strchr(): 在字符串中查找字符; strcmp(): 字符串比较; strlen(): 求字符串长度; strlwr(): 将字符串中的大写字母转换为小写字母; strrev(): 反转字符串; strstr(): 在字符串中查找另一个字符串; strupr(): 将字符串中的小写字母转换为大写字母; ? ?例 4-3 编写一个用来计算字符串长度的函数mystrlen(),并 用主函数验证 算法分析: 1)设一个计数器变量len=0 2)从数组s[len]第一个元素开始进行处理 3)若当前的元素值s[len]非空(‘\\0’),则len+1,继续执行3;否则,退出循环。 4)打印结果len#include int len = 0; 5
正在阅读:
第四章数组和结构体09-13
土壤固化剂道路 - 图文06-30
2020年“两节”集中整治“四风”问题专项通知范文09-07
对外发布 千千商业融资计划书 - 图文07-03
5营销环境分析04-01
常规桥梁动力反应谱法抗震分析 - 图文03-06
系统结构复习12-09
2016年上海市华东师大二附中高三上英语第一次月考07-06
- 公务员上岸同学告诉你,怎样走出面试中常见的十大误区
- 作表率,我们怎么办(办公室主任)
- 乘务员安全责任书
- 增员面试流程
- 河南省焦作市规模以上租赁和商务服务业企业应付职工薪酬数据洞察报告2019版
- 最新4社区工作者面试题
- 个人简历表
- 男教工体检必检项目
- 河南省兰考县规模以上租赁和商务服务业企业应付职工薪酬数据洞察报告2019版
- 兼职译员测试稿
- 河南省开封市规模以上租赁和商务服务业企业应付职工薪酬数据洞察报告2019版
- 永州职业技术学院校园总体规划-永州职业学院
- 最新5、培训科长笔试题(答案)
- 2019雅商酒店境外人员登记培训稀有资料,不可错过
- 小学教师求职简历范文
- 红酒知识与礼仪
- 春节给领导拜年的短信拜年词
- 2019年上半年中小学教师资格证结构化面试真题1
- 20XX年县干部培训工作目标
- 硬笔试听课
- 第四章
- 数组
- 结构