第4章 数 组.

Slides:



Advertisements
Similar presentations
第 8 章 数组 计算机科学学院 李淮 Tel QQ
Advertisements

從「穹頂之下」電影看環境議題 第六小組 4a 黃士齊 4a 吳承翰 4a 洪濬森 4a 郭哲宇 0a40f226 湯思祺 林喬舜.
计算学科的基本问题 本章首先介绍一个对问题进行抽象的典型实例——哥尼斯堡七桥问题。然后,通过“梵天塔”问题和“停机问题”分别介绍学科中的可计算问题和不可计算问题。从“梵天塔”问题再引出算法复杂性中的难解性问题、P类问题和NP类问题,证比求易算法,P=NP是否成立的问题。
教学目的:了解基础性、公益性投资项目的概念、特点,掌握基础性、公益性投资项目的经济评价方法。
游泳四式技術分析暨初級教法.
第九章 字串 (String).
補充: Input from a text file
成才之路 · 语文 人教版 · 必修2 路漫漫其修远兮 吾将上下而求索.
第八章 越流系统中的承压完整井流 一、越流、无越流系统
小小节水员自然科普课
第8章 字元與字串處理 8-1 C語言的字元檢查函數 8-2 C語言的字串 8-3 字串的輸入與輸出 8-4 指標與字串
数据结构 Data Structure 主讲人:王国军,郑瑾 中南大学 中南大学信息院计科系
第六章 数 组 主讲教师 贾月乐 联系电话:
高级语言程序设计 主讲人:陈玉华.
選擇排序法 通訊一甲 B 楊穎穆.
目录 第八章 数组 1 简单学生成绩管理系统的开发 2 一维数组 3 多维数组 4 字符数组 5 数组作函数参数.
STRUCTURE 授課:ANT 日期:2010/5/12.
计算概论 第十八讲 C语言高级编程 结构与习题课 北京大学信息学院.
Introduction to the C Programming Language
Chap 8 指针 8.1 寻找保险箱密码 8.2 角色互换 8.3 冒泡排序 8.4 电码加密 8.5 任意个整数求和*
QQ: 李祥 QQ: 欢迎多种方式的学习交流,祝大家学有所成.
C语言 程序设计基础与试验 刘新国、2012年秋.
第3讲 C++程序控制结构 3.1 顺序结构 3.2 分支结构 3.3 循环结构 3.4 转向控制 3.5 综合案例分析.
多维数组与指针 用指针变量可以指向一维数组中的元素,也可以指向多维数组中的元素。但在概念上和使用上,多维数组的指针比一维数组的指针要复杂一些。 1. 多维数组元素的地址 先回顾多维数组的性质,可以认为二维数组是“数组的数组”,例 : 定义int a[3][4]={{1,3,5,7},{9,11,13,15},{17,19,21,23}};
THE C PROGRAMMING LANGUAGE
字符串和字符数组 字符串的输入和输出 字符串的基本操作
第四章串 4.1 串类型定义 4.2 串的表示和实现 4.3 串的模式匹配算法 4.4 串操作应用举例.
函 数 实验八 第24讲 C程序设计 Main() { int x,y; X=10; y=x*x+1;
C Programming in Action
第十章 指针.
第三章 顺序结构程序设计 主讲教师 贾月乐 电话:
第3章 顺序结构程序设计 为了让计算机处理各种数据,首先就应该把源数据输入到计算机中;计算机处理结束后,再将目标数据信息以人能够识别的方式输出。C语言中的输入输出操作,是由C语言编译系统提供的库函数来实现。 3.1 格式化输出——printf()函数 3.2 格式化输入——scanf()函数.
2.1 C语言的数据类型 2.2 常量与变量 2.3 变量赋初值 2.4 各类数值型数据间的混合运算 2.5 C语言的运算符和表达式
第4章 顺序程序设计.
電子音樂 通訊系 B 楊穎穆.
第6章 预 处 理.
数组 梁春燕 华电信息管理教研室.
第1章 概述 本章要点: C语言程序结构和特点 C语言程序的基本符号与关键字 C语言程序的编辑及运行 学习方法建议:
7.1 广义表的概念 广义表是n(n≥0)个数据元素组成的序列,其中每个数据元素或是单个数据元素(简称原子),或仍然是一个广义表 。
第二章 基本数据类型及运算 C数据类型概述 基本数据类型 运算符和表达式 混合运算与类型转换 数据的输入输出 顺序程序设计举例.
C语言概述 第一章.
C语言复习3----指针.
第一章 程序设计和C语言 主讲人:高晓娟 计算机学院.
C语言大学实用教程 第6章 数组 西南财经大学经济信息工程学院 刘家芬
C语言的特点 1. C程序由许多函数组成 2. C程序必须有且只有一个主函数main( ) 3. 函数用“{”和“}”表示起点和终点
Chap 5 函数 5.1 计算圆柱体积 5.2 使用函数编写程序 5.3 变量与函数.
<编程达人入门课程> 本节内容 字符与字符串 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群: ,
本节内容 字符与字符串 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
C语言程序设计 李祥 QQ:
C程序设计.
C++大学基础教程 第10章 运算符重载 北京科技大学 2019/5/7 北京科技大学.
第6章 预 处 理.
第2章 基本数据及其运算 本章学习的目标: 1、掌握基本数据的各种表示,基本数据常数的书写方法;
第二章 类型、对象、运算符和表达式.
第2章 数据类型与表达式 学习目的与要求: 掌握C 语言的基本数据类型及使用方法 掌握C程序中常用的运算符和表达式 了解数据类型的转换.
第二章 基本数据类型 ——数据的表示.
第四章 C 语言中的输入和输出.
本节内容 函数嵌套调用的内存布局 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
挑戰C++程式語言 ──第9章 函數.
第4章 顺序结构程序设计 为了让计算机处理各种数据,首先就应该把源数据输入到计算机中;计算机处理结束后,再将目标数据信息以人能够识别的方式输出。C语言中的输入输出操作,是由C语言编译系统提供的库函数来实现。 4.1 格式化输出——printf()函数 4.2 格式化输入——scanf()函数.
第3章 最简单的C程序设计 3.1 顺序程序设计举例 3.2 数据的表现形式及其运算 3.3 C语句 3.4 数据的输入输出.
C/C++基礎程式設計班 字元與字串 講師:林業峻 CSIE, NTU 3/14, 2015.
Chap 7 数 组 7.1 排序问题 7.2 找出矩阵中最大值所在的位置 7.3 进制转换.
Introduction to the C Programming Language
C/C++基礎程式設計班 C語言入門、變數、基本處理與輸入輸出 講師:林業峻 CSIE, NTU 3/7, 2015.
第三章 流程控制 程序的运行流程 选择结构语句 循环结构语句 主讲:李祥 时间:2015年10月.
第六章 复合数据类型 指针的声明与使用 数组的声明与使用 指针与数组的相互引用 字符串及相关库函数 new与delete
隨機函數.
C++语言程序设计 C++语言程序设计 第二章 基本数据类型与表达式 第十一组 C++语言程序设计.
Presentation transcript:

第4章 数 组

目 录 数组的概念 一维数组 二维数组 字符数组 C语言程序设计 - 第4章 数组

数组 (Array) 概念 说明 有序数据的集合 数组中的每一个元素都属于同一数据类型 用统一的数组名和下标来唯一的确定数组中的元素 数组元素的类型可以是基本类型或导出类型 C语言程序设计 - 第4章 数组

一维数组 一维数组的定义 一维数组元素的引用 一维数组的存储形式 一维数组的初始化 一维数组程序举例 C语言程序设计 - 第4章 数组

一维数组的定义 定义形式 说明 举例 类型 数组名[常量表达式]; 常量表达式表示数组的大小(元素个数) 数组大小只能是常量,不能包含变量 整型数组与整型是两种不同的数据类型 举例 int a[100], b[3*2]; C语言程序设计 - 第4章 数组

一维数组元素的引用 引用形式 说明 举例 数组名[下标] 下标是整型表达式 数组元素与同类型的变量使用方法相同 数组下标范围为0~N-1(N为数组长度) 注意防止数组下标越界 举例 a[0]=a[5]+a[j]*3; C语言程序设计 - 第4章 数组

一维数组的存储形式 一维数组的元素在内存中依次连续存储 char a[5]; 低地址 ... a[0] a[1] a[2] a[3] 高地址 char a[5]; C语言程序设计 - 第4章 数组

一维数组的初始化 定义数组时对数组元素赋初值 只给部分元素赋初值 对全部元素赋初值时,可以不指定长度 int a[5]={1,2,3,4,5}; 只给部分元素赋初值 int a[5]={1,2,3}; int a[5]={0}; 其余元素初值为零 对全部元素赋初值时,可以不指定长度 int a[]={1,2,3,4,5}; C语言程序设计 - 第4章 数组

一维数组程序举例 Fibonacci数列 冒泡排序法 筛法求素数 C语言程序设计 - 第4章 数组

例1:Fibonacci数列 (04-01.C) #include <stdio.h> void main() { int i, f[20]={1, 1}; for (i=2; i<20; i++) f[i] = f[i-2] + f[i-1]; } C语言程序设计 - 第4章 数组

例2:冒泡排序法 (04-02.C) 两层循环结构 确定每层循环的边界 外层循环每次把操作范围内最大的数放到最后位置 内层循环每次把较大的数放到靠后的位置 确定每层循环的边界 外层循环n-1次 j=0 to n-2 内层循环n-1-j次 i=0 to n-2-j C语言程序设计 - 第4章 数组

例2:冒泡排序法 (续) C语言程序设计 - 第4章 数组

例3:筛法求素数 (04-03.C) C语言程序设计 - 第4章 数组

例3:筛法求素数 (续) #define MAX 100 ... ... for (i=2; i<MAX; i++) s[i]=1; /* 初始化,所有数都在筛子中 */ if (s[i]) for (m=2*i; m<MAX; m+=i) s[m]=0; /* 从筛子中筛去*/ C语言程序设计 - 第4章 数组

二维数组 二维数组的定义 二维数组的存储形式 二维数组元素的引用 二维数组的初始化 二维数组与一维数组 二维数组程序举例 C语言程序设计 - 第4章 数组

二维数组的定义 定义形式 举例 类型 数组名[常量表达式][常量表达式]; 可以看作元素是一维数组的一维数组 char a[3][4]; /* 3行4列 */ C语言程序设计 - 第4章 数组

二维数组的存储形式 按行存放,先行后列 char a[3][4]; 低地址 高地址 ... a[0][0] a[0][1] a[0][2]

二维数组元素的引用 表示形式 说明 低地址 数组名[下标][下标] 用法与一维数组元素类似 注意避免下标越界 char a[3][4]; ... a[0][0] a[0][1] a[0][2] a[0][3] a[1][0] a[1][1] a[1][2] a[1][3] a[2][0] a[1][5] _ a[2][1] 高地址 a[2][2] a[2][3] 表示形式 数组名[下标][下标] 说明 用法与一维数组元素类似 注意避免下标越界 char a[3][4]; a[1][5] _ a[2][1] C语言程序设计 - 第4章 数组

二维数组的初始化 (1) 分行给二维数组赋初值 对部分元素赋初值 int a[3][4]={{1, 2, 3, 4}, {5, 6, 7, 8}, {9,10,11,12}}; 对部分元素赋初值 int a[3][4]={{1},{0,6},{9}}; int b[3][4]={{1},{5,6}}; int c[3][4]={{1},{},{0,0,11}}; C语言程序设计 - 第4章 数组

二维数组的初始化 (2) 对全部元素赋初值时,第一维长度可以省略,其他维长度不能省略 int a[][4]={{1, 2, 3, 4}, {5, 6, 7, 8}, {9,10,11,12}}; 只对部分元素赋初值时,第一维长度也可以省略,但是要用{}分行,即能够判断第一维长度 int a[][4]={{0,0,3},{},{0,10,11}}; C语言程序设计 - 第4章 数组

二维数组与一维数组 可以用一维数组描述二维数组 char a[2][3]; char a[6]; a[i][j] ↔ a[i*3+j] ... a[0][0] a[0][1] a[0][2] a[1][0] a[1][1] a[1][2] ... a[0] a[1] a[2] a[3] a[4] a[5] C语言程序设计 - 第4章 数组

二维数组程序举例 矩阵乘法 C语言程序设计 - 第4章 数组

例4:矩阵乘法 (04-04.C) ... ... int a[M][P], b[P][N], c[M][N]={0}; for (i=0; i<M; i++) for (j=0; j<N; j++) for (k=0; k<P; k++) c[i][j]+=a[i][k]*b[k][j]; C语言程序设计 - 第4章 数组

字符数组 字符数组的使用 字符数组与字符串 字符数组的初始化 字符串结束标志 字符串的输入输出 字符串处理函数 字符串程序举例 C语言程序设计 - 第4章 数组

字符数组的使用 与其他类型数组用法类似 用作字符串变量 char a[10]; a[5]='f'; a[7]='\n'; a[9]=105; a[0]=a[3]*4-a[4]; char c[]={'a', ',', '*', '\n'}; 用作字符串变量 字符串作为一维字符数组处理 用字符数组名来引用字符串变量 字符数组元素包括字符串结束标志'\0' C语言程序设计 - 第4章 数组

字符数组与字符串 字符串作为一维字符数组来处理 "China" char str[6]={'C','h', ... 'C' 'h' 'i' 'n' 'a' '\0' ... str[0] 'C' str[1] 'h' str[2] 'i' str[3] 'n' str[4] 'a' str[5] '\0' C语言程序设计 - 第4章 数组

字符数组的初始化 字符数组初始化的方法 举例 逐个字符赋值给各元素 用字符串常量赋初值 char s[]={'T','E','S','T','\0'}; char s[]={"TEST"}; char s[]="TEST"; char s[][6]={"China", "Anhui", "Hefei", "USTC"}; C语言程序设计 - 第4章 数组

字符串结束标志 字符串结束标志'\0' 举例 以'\0'作为判断字符串结束的唯一标志 与存放字符串的字符数组的长度无关 所有字符串操作都以'\0'作为结束条件 如果对字符数组每个元素分别赋值,并作为字符串使用,必须在最后手工添加'\0' 系统在字符串常量后自动添加'\0' 举例 char s[]={'U','S','T','C','\0'}; C语言程序设计 - 第4章 数组

字符串的输入输出 整个字符串一次输入输出 逐个字符输入输出 输出到第一个'\0'结束,但不输出'\0' 输入输出时,用一维字符数组名表示字符串 格式化输入时,不需要在数组名前加'&' 格式化输入时,空白字符表示输入结束 系统自动添加'\0',不需要手工输入 逐个字符输入输出 用于一些特殊情况,如需要输入回车符 getchar(); putchar(); C语言程序设计 - 第4章 数组

字符串输入输出举例 char str[]="China"; printf("%s", str); scanf("%s", str); /* 不用&str */ char str[2][6]; scanf("%s%s", str[0], str[1]); /* 一维字符数组 */ char str[]={'C','h','i','n','a'}; printf("%s", str); /* 得到什么结果? */ C语言程序设计 - 第4章 数组

字符串处理函数 函数原型 说明 puts(str) 输出字符串,输出到'\0'为止并换行 gets(str) 输入字符串,可输入空白字符,回车结束 strcat(s1,s2) 字符串连接,s1应留有总够的空间 strcpy(s1,s2) 字符串复制,s1应留有总够的空间 strcmp(s1,s2) 字符串比较,依次按ASCII码比较 strlen(str) 字符串长度,不包括结束标志'\0' strlwr(str) 字符串小写,不是标准库函数 strupr(str) 字符串大写,不是标准库函数 C语言程序设计 - 第4章 数组

字符串程序举例 实现字符串复制功能 strcpy(str1, str2); 实现字符串比较功能 strcmp(str1, str2);

例5:字符串复制 (04-05.C) ... ... char s[MAX], t[MAX]; int i; for (i=0; s[i]!='\0'; i++) t[i] = s[i]; t[i] = '\0'; for (i=0; t[i]=s[i]; i++); C语言程序设计 - 第4章 数组

例6:字符串比较 (04-06.C) ... ... char s[MAX], t[MAX]; int i; for (i=0; s[i]==t[i]; i++) if (s[i]=='\0') return 0; /* 字符串相等 */ return s[i]-t[i]; /* 字符串不等 */ C语言程序设计 - 第4章 数组

结束 The End 改编自白雪飞老师的 presentations, 感谢白老师! C语言程序设计 - 第4章 数组