字符串与二维数组.

Slides:



Advertisements
Similar presentations

Advertisements

数据结构的引入. 通讯录管理 社团机构管理 校园导航管理 通讯录管理 社团机构管理 校园导航管理.
只怕有心人只怕有心人 世上无难事世上无难事 浙江长征职业技术学院 — 计算机与信息技术系 — 相方莉制作.
第九章 指针 西安工程大学.
第七章 指针 计算机公共教学部.
C程序设计 第6章 数 组 主讲教师: 鲁 萍 西安建筑科技大学 理学院 任务:键盘输入整数,排序.
二级指针与二维数组.
C语言程序设计基础 第10章 指针进阶 刘新国.
10.1 二级指针 10.2 指针与二维数组 10.3 指针的动态存储分配 10.4 函数指针 10.5 main函数的参数
第6章 数组 公共计算机基础教研部.
一维数组 乾坤以有亲可久; 君子以厚德载物。.
C语言程序设计.
第6章 指针 6.1 指针的概念 6.2 变量与指针 6.3 数组与指针 6.4 字符串与指针 6.5 函数与指针 6.6 返回指针值的函数
6.4 字符串与指针 1. 用字符数组存放一个字符串.
C语言实验 第一课 标题:学号+姓名.
C++中的声音处理 在传统Turbo C环境中,如果想用C语言控制电脑发声,可以用Sound函数。在VC6.6环境中如果想控制电脑发声则采用Beep函数。原型为: Beep(频率,持续时间) , 单位毫秒 暂停程序执行使用Sleep函数 Sleep(持续时间), 单位毫秒 引用这两个函数时,必须包含头文件
第九章 字符串.
第6章 指针 学习目的与要求: 了解指针的概念和相关术语 熟练掌握指向变量、数组和字符串的指针变量的使用方法 了解指向函数的指针变量
C语言程序设计 课程 第5章 数组 主讲:李祥 博士、副教授 单位:软件学院软件工程系.
高级语言程序设计 主讲人:陈玉华.
C语言高级编程(第四部分) 字符串 北京大学 信息科学技术学院.
计算概论 第十八讲 C语言高级编程 结构与习题课 北京大学信息学院.
第6章 利用数组处理批量数据.
Function.
走进编程 程序的顺序结构(二).
辅导课程六.
第7章 编译预处理 本章要求: 本章重点: 本章难点: 掌握用#define定义无参数宏和带有参数宏定义和调用方法;
作弊是否很有诱惑性? 上堂课已经讲了 作业不一定在两个小时里都能完成 答疑没有一个人? 作弊是有记录的 心理系很多同学集体作弊,让人震惊
二维数组的指针表示 与复杂的指针例子 专题研讨课之三.
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
第六单元 应用数组的程序设计 从现在开始,将详细讲述C语言的方方面面。第一章中的所有疑惑,都将一一消灭。
C++语言程序设计 C++语言程序设计 第六章 指针和引用 第十一组 C++语言程序设计.
第二章 Java语言基础.
第6章 数 组 本章要点: 数组的定义、初始化、数组元素的引用 字符数组的输入输出 字符串处理函数 数组的应用 学习方法建议:
第四章 数组 4.4.1一维数组的定义和初始化 一、一维数组的定义和初始化 1.一维数组定义 定义格式:类型 数组名[常量表达式];
欲穷千里,更上层楼 第十章 指 针 指针是C语言中广泛使用的一种数据类型。 运用指针编程是C语言最主要的风格之一。利用指针变量可以表示各种数据结构; 能很方便地使用数组和字符串; 并能象汇编语言一样处理内存地址,从而编出精练而高效的程序。指针极大地丰富了C语言的功能。 学习指针是学习C语言中最重要的一环,
第五章 习题课 电子信息与计算机科学系 曾庆尚.
第七章 操作符重载 胡昊 南京大学计算机系软件所.
数组 梁春燕 华电信息管理教研室.
第六章 数组 西安工程大学.
实验九 函数嵌套、函数参数 第27讲 C程序设计 Main() { int x,y; X=10; y=x*x+1;
第1章 概述 本章要点: C语言程序结构和特点 C语言程序的基本符号与关键字 C语言程序的编辑及运行 学习方法建议:
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
C语言概述 第一章.
C++语言程序设计 C++语言程序设计 第六章 指针和引用 第十一组 C++语言程序设计.
C语言复习3----指针.
线 性 代 数 厦门大学线性代数教学组 2019年4月24日6时8分 / 45.
C语言大学实用教程 第6章 数组 西南财经大学经济信息工程学院 刘家芬
C语言大学实用教程 第7章 指针 西南财经大学经济信息工程学院 刘家芬
第二章 Java基本语法 讲师:复凡.
第六章 数组.
C语言程序设计 第一章 数据类型, 运算符与表达式 第二章 顺序程序设计 第三章 选择结构程序设计 第四章 循环控制 第五章 数组.
Chap 5 函数 5.1 计算圆柱体积 5.2 使用函数编写程序 5.3 变量与函数.
成绩是怎么算出来的? 16级第一学期半期考试成绩 班级 姓名 语文 数学 英语 政治 历史 地理 物理 化学 生物 总分 1 张三1 115
第6章 数组.
第4章 Excel电子表格制作软件 4.4 函数(一).
5.4.1 二维数组 (一) 二维数组的定义 1. 二维数组定义的一般形式 类型说明符 数组名[常量表达式][ 常量表达式]
C qsort.
第九节 赋值运算符和赋值表达式.
3.16 枚举算法及其程序实现 ——数组的作用.
第二章 类型、对象、运算符和表达式.
第8章 善于利用指针 8.1 指针是什么 8.2 指针变量 8.3 通过指针引用数组 8.4 通过指针引用字符串 8.5 指向函数的指针
第五章 数组与指针 1 数组的简单操作 2 数组与指针 3 字符数组与字符串 4 字符串处理函数 5 数组应用举例.
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
C++语言程序设计 C++语言程序设计 第六章 指针和引用 第十一组 C++语言程序设计.
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
C语言程序设计 第8章 指针.
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
第三章 流程控制 程序的运行流程 选择结构语句 循环结构语句 主讲:李祥 时间:2015年10月.
第二次课后作业答案 函数式编程和逻辑式编程
Presentation transcript:

字符串与二维数组

复习 1.对于接受和显示字符串,使用gets、puts和使用scanf、printf的区别;

复习2 从键盘任意输入5个学生的姓名,编程找出并输出 按字典顺序排在最前面的学生姓名 等价于求最小字符串

如果“键盘输入五个整数找出最小数” 算法: 1.先输入第一个数到min变量中; 2.循环四次,依次输入一个整数放到str变量中,和min比较如果较小就把该变量复制到min里面; 3.输出最小整数min。

#include <stdio.h> Void main() { int n,min, str; printf("Please enter five numbers:\n"); scanf(“%d”,&str); min=str; for (n=1; n<5; n++) if (str<min) } printf("The min is:%d",   min );

问题分析:一个学生姓名就是一个字符串,因此应用字符数组来存储,而字典顺序是将字符串按有小到大顺序排列的,因此找出按字典顺序排在最前面的学生姓名实际上就是要找出最小的字符串。 算法如下: step1 从键盘输入一个学生的姓名,并将其先假设为最小字符串,保存在数组min中。 step2 利用循环,依次输入4个学生姓名,每输入一个学生姓名就将其与min比较,若当前学生姓名字符串小于min,则用当前学生姓名字符串更新min。

#include <stdio.h> #include <string.h> #define ARRA_SIZE 80 main() { int n, num; char str[ARRA_SIZE], min[ARRA_SIZE]; printf("Please enter five names:\n"); scanf(“%d”,&str); gets(str); min=str; strcpy(min, str); for (n=1; n<5; n++) if (strcmp(str, min) < 0) } printf("The min is:"); puts(min); if (str<min) { min=str; }

有没有改进之处? 五个被输入进来的名字没有都被保存 如何把这个找最先出现名字的程序改为一个单独的模块----- 函数?在主程序中又如何使用?

本周学习目标 字符数组与二维数组 数组名作为函数参数

二维数组的定义 格式: 数据类型 数组名[常量表达式][常量表达式] int b[2][3]; 格式: 数据类型 数组名[常量表达式][常量表达式] int b[2][3]; b为2×3(2行3列)的数组,注意下标范围 b[0] b[1] ---- b[0][0] b[0][1] b[0][2] b ---- b[1][0] b[1][1] b[1][2]

二维数组 二维数组定义的一般形式: 数据类型名 数组名[常量表达式1][常量表达式2]; 例如: double a[3][3],b[2][2]; int f[2][3]; 同一维数组一样,二维数组(或多维数组)中行、列下标的值也都是从0开始的。 二维数组可以看成是一个特殊的一维数组,只是这个一维数组的每一个元素又是一个一维数组。

二维数组

二维数组的存储结构 int b[2][3]; 存放顺序:按行存放,先顺序存放第一行的元素,再存放第二行的元素 b[0][2] b[0][1]

二维数组 二维数组中各元素的顺序遵照按行存放的原则。例如,定义一个二维数组a[3][3]后,其中的元素a[0][2]在内存中被存放在元素a[1][0]之前。   存储单元 3 4 5 3 a[0][0] a = 6 7 8 对应表: 4 a[0][1] 1 2 9 → 5 a[0][2] 6 a[1][0] 7 a[1][1] 8 a[1][2] 1 a[2][0] 2 a[2][1] 9 a[2][2] a[0][0]与a[0]的区别是什么?

例如int a[2][3]={11,22,33,44,55,66}

二维数组的输入和输出 数组的输入和输出只能逐个对数组元素进行操作(字符数组例外) int b[2][3],i,j; 输出方法: 输入方法: scanf(“%d”,&a[i][j]); 输入整个数组元素: for (i=0;i<2;i++) for(j=0;j<3;j++) 输出方法: 输出第i行第j列元素: printf(“%d”,a[i][j]); 输出整个数组元素: for (i=0;i<2;i++) for(j=0;j<3;j++)

在连续的一片内存空间存放五个键盘输入的名字 Wanglin libing Zhaoxiaohui Zhangtao Chenxiaofeng 目标:练习用二维数组来存放多个字符串

数组名作函数参数 用数组名作参数,就是将数组的首地址传递给函数 实参数组与形参数组占用同一段内存 在函数中对形参数组元素修改的结果,会影响结果主 调函数中的实参数组

数组作为函数的参数 #include <stdio.h> void findMax(int [5]); /* function prototype */ int main() { int nums[5] = {2, 18, 1, 27, 16}; findMax(nums); return 0; } void findMax(int vals[5]) /* find the maximum value */ { int i, max = vals[0]; for (i = 1; i <= 4; ++i) if (max < vals[i]) max = vals[i]; printf("The maximum value is %d.\n", max); return;

数组作为函数的参数 数组名是数组首元素的内存地址。 两个数组名指向内存中的同一组内存单元

数组作为函数的参数 传递数组长度,确定下标下限 #include <stdio.h> int findMax(int [ ], int); /* function prototype */ int main() { int nums[5] = {2, 18, 1, 27, 16}; printf("The maximum value is %d.\n", findMax(nums,5)); return 0; } int findMax(int vals[], int numEls) { int i, max = vals[0]; for (i = 1; i < numEls; ++i) if (max < vals[i]) max = vals[i]; return(max); 数组作为函数的参数 传递数组长度,确定下标下限 注意:C语言不提供数组下标越界的保护,设计时要注意。

数组名作函数参数 传递整个数组到另一个函数内,可以将数组的首地址作为参数传过去 用数组名作为函数参数 只拷贝一个地址自然比拷贝全部数据效率高 由于首地址相同,故实参数组与形参数组占用同一段内存 在该函数内,不仅可以读这个数组的元素,还可以修改它们

题目:编写一函数static,完成功能:分别统计一行字符,其中英文字母、空格、数字和其它字符的个数。在main函数中接受键盘输入的一行字符,调用static函数统计结果并显示。 2.用嵌套的if-else来完成统计。 3.数组名作为函数参数

i=0; while((c=a[i])!='\n')  {  if(c>='a'&&c<='z'||c>='A'&&c<='Z')   letters++;  else if(c==' ')   space++;    else if(c>='0'&&c<='9')        digit++;      else        others++; i++; }

作业: 完成本题 Page 372 编程2,6题