当前位置:首页 >> 计算机软件及应用 >>

11.19 二维数组、字符数组


C语言程序设计实验作业

? 二维数组、字符数组

? 11月20日交 C语言期中考试题目编程 题的实验报告 ? 11月20日交 C语言教材P211实验5循 环控制(二)的上机编程题目4、5、6 、7四个题目的实验报告 ? 11月20日交上述两份实验报告的打印 稿,格式在上海电力学院实验报告的 格式邮箱:shiep_cyy@126.com密 码:jsjkxyjs

C语言测试及教师课外辅导 ? 计算机基础及C任课教师课外辅导 时间为每周一、三、四的7、8节 ,地点:6机房。每次有一名专业 老师给大家辅导上机,请大家务必 准时参加。除元旦(1月1日)。

C语言教学辅导系统
? ? ? ? 数组结束后还有一次测验,初步定为机考 C语言新系统:210.35.95.24/tcroot 大家可以登录本系统 登录的用户名和密码是学生的学号选择“ 课程作业”

4

C语言教学辅导系统

C语言教学辅导系统
? 大家可以完成章节作业和实验报告 ? 章节作业都是选择题

?题库就是考试的题库
? 大家做及格了可以看答案,可以重做 ? 在C语言网站上做题目的时候需要对浏览器 进行设置
5 6

1

7

8

C语言教学辅导系统
? 一定要设置浏览器,建议使用IE上面标出来 的两项都需要启用 ? 期末考试将在系统的“课程考试”下进行 ,现在进去是“模拟考试”模式 ? 大家要在课外完成章节作业和实验

利用数组处理批量数据
? 数组是一组有序数据的集合。数组中各数 据的排列是有一定规律的,下标代表数据 在数组中的序号 ? 用一个数组名和下标惟一确定数组中的元 素 ? 数组中的每一个元素都属于同一个数据类 型

?题库就是考试的题库
9

怎样定义一维数组
? 一维数组是数组中最简单的 ? 它的元素只需要用数组名加一个下标,就 能惟一确定 ? 要使用数组,必须在程序中先定义数组

怎样定义一维数组
? 定义一维数组的一般形式为: 类型符 数组名[常量表达式]; int a[4+6]; 合法 int n=10; int a[n];

不合法

2

怎样引用一维数组元素
? 在定义数组并对其中各元素赋值后,就可 以引用数组中的元素 ? 注意:只能引用数组元素而不能一次整体 调用整个数组全部元素的值

一维数组的初始化
? 在定义数组的同时,给各数组元素赋值
? int a[10]={0,1,2,3,4,5,6,7,8,9}; ? int a[10]={0,1,2,3,4};相当于 int a[10]={0,1,2,3,4,0,0,0,0,0}; ? int a[10]={0,0,0,0,0,0,0,0,0,0};相当于 int a[10]={0}; ? int a[5]={1,2,3,4,5};可写为 int a[ ]={1,2,3,4,5};

怎样定义和引用二维数组
队员1 队员2 队员3 队员4 队员5 1分队 2分队 3分队 2456 3045 1427 1847 2018 1175 1243 1725 1046 1600 2020 1976 2346 2458 1477 队员6 2757 1436 2018

怎样定义和引用二维数组
怎样定义二维数组 怎样引用二维数组的元素 二维数组的初始化 二维数组程序举例

float pay[3][6];

怎样定义二维数组
? 二维数组定义的一般形式为 类型符 数组名[常量表达式][常量表达式];
如:float a[3][4],b[5][10]; ? 二维数组可被看作是一种特殊的一维数组: 它的元素又是一个一维数组 ? 例如,把a看作是一个一维数组,它有3个元素: a[0]、a[1]、a[2] ? 每个元素又是一个包含4个元素的一维数组

怎样定义二维数组
a[0] a[1] a[2]
a[0][0] a[1][0] a[2][0] a[0][1] a[1][1] a[2][1] a[0][2] a[1][2] a[2][2] a[0][3] a[1][3] a[2][3]

3

怎样定义二维数组
逻辑存储
a[0][0] a[1][0] a[2][0] a[0][1] a[1][1] a[2][1] a[0][2] a[1][2] a[2][2] a[0][3] a[1][3] a[2][3]

怎样引用二维数组的元素
? 二维数组元素的表示形式为: 数组名[下标][下标] ? b[1][2]=a[2][3]/2 合法 ? for(i=0;i<m;i++) printf(“%d,%d\n”,a[i][0],a[0][i]);合法

内存中的存储顺序

二维数组的初始化
int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}}; int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}; int a[3][4]={{1},{5},{9}};等价于 int a[3][4]={{1,0,0,0},{5,0,0,0},{9,0,0,0}}; int a[3][4]={{1},{5,6}};相当于 int a[3][4]={{1},{5,6},{0}};

怎样引用一维数组元素
例 1 对10个数组元素依次赋值为0,1, 2,3,4,5,6,7,8,9,要求按逆序输出。 ? 解题思路:
? 定义一个长度为10的数组,数组定义为整型 ? 要赋的值是从0到9,可以用循环来赋值 ? 用循环按下标从大到小输出这10个元素

一维数组程序举例
例 2 用数组处理求Fibonacci数列问题
? 循环例子用简单变量处理的,缺点不能在内存中 保存这些数。假如想直接输出数列中第25个数, 是很困难的。

一维数组程序举例
例3 有10个地区的面积,要求对它们按由 小到大的顺序排列。 ? 解题思路:
? 排序的规律有两种:一种是“升序”,从小到 大;另一种是“降序”,从大到小 ? 把题目抽象为:“对n个数按升序排序” ? 采用起泡法排序

? 解题思路:
? 如果用数组处理,每一个数组元素代表数列中 的一个数,依次求出各数并存放在相应的数组 元素中

4

二维数组的初始化
int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}; 等价于: int a[ ][4]={1,2,3,4,5,6,7,8,9,10,11,12}; int a[][4]={{0,0,3},{ },{0,10}};合法

二维数组程序举例
例 4 将一个二维数组行和列的元素互换, 存到另一个二维数组中。

二维数组程序举例
? 解题思路:
? 可以定义两个数组:数组a为2行3列,存放指 定的6个数 ? 数组b为3行2列,开始时未赋值 ? 将a数组中的元素a[i][ j]存放到b数组中的b[ j][i] 元素中 ? 用嵌套的for循环完成

二维数组程序举例
void main() { int a[2][3]={{1,2,3},{4,5,6}}; int b[3][2],i,j; printf("array a:\n"); for (i=0;i<=1;i++) 处理a的一行中各元素 { for ( j=0;j<=2;j++) 处理a中某一列元素 { printf("%5d",a[i][ j]); 输出a的各元素 b[ j][i]=a[i][ j]; } a元素值赋给b相应元素 printf("\n"); }

二维数组程序举例
printf("array b:\n"); for (i=0;i<=2;i++) { for( j=0;j<=1;j++) printf("%5d",b[i][ j]); printf("\n"); } return 0; }

二维数组程序举例
例 5 有一个3×4的矩阵,要求编程序求出 其中值最大的那个元素的值,以及其所在 的行号和列号。 ? 解题思路:采用“打擂台算法”
? 先找出任一人站在台上,第2人上去与之比武 ,胜者留在台上 ? 第3人与台上的人比武,胜者留台上,败者下 台 ? 以后每一个人都是与当时留在台上的人比武, 直到所有人都上台比为止,最后留在台上的是 冠军

输出b的各元素

5

二维数组程序举例
例 5 有一个3×4的矩阵,要求编程序求出 其中值最大的那个元素的值,以及其所在 的行号和列号。 ? 解题思路:采用“打擂台算法”
? 先把a[0][0]的值赋给变量max ? max用来存放当前已知的最大值 ? a[0][1]与max比较,如果a[0][1]>max,则表 示a[0][1]是已经比过的数据中值最大的,把它 的值赋给max,取代了max的原值 ? 以后依此处理,最后max就是最大的值

二维数组程序举例
max=a[0][0] for i=0 to 2 真 for j=0 to 3 a[i][j]>max 假

max=a[i][j] row=I colum=j

输出:max,row,colum

二维数组程序举例
int i,j,row=0,colum=0,max; int a[3][4]={{1,2,3,4},{9,8,7,6}, {-10,10,-5,2}}; max=a[0][0]; for (i=0;i<=2;i++) 记最大值 for ( j=0;j<=3;j++) 记行号 记列号 if (a[i][ j]>max) { max=a[i][ j]; row=i; colum=j; } printf("max=%d\nrow=%d\n colum=%d\n",max,row,colum);

字符数组
怎样定义字符数组 字符数组的初始化 怎样引用字符数组中的元素 字符串和字符串结束标志 字符数组的输入输出 善于使用字符串处理函数 字符数组应用举例

怎样定义字符数组
? 用来存放字符数据的数组是字符数组 ? 字符数组中的一个元素存放一个字符 ? 定义字符数组的方法与定义数值型数组的 方法类似

怎样定义字符数组
char c[10]; c[0]=’I’; c[2]=’a’; c[4]=’ ’; c[6]=’a’; c[8]=’p’; c[1]=’ ’; c[3]=’m’; c[5]=’h’; c[7]=’p’; c[9]=’y’;

c[0]c[1]c[2]c[3]c[4]c[5]c[6]c[7]c[8]c[9] I a m h a p p y

6

字符数组的初始化
charc[10]={’I’,’’,’a’,’m’,’ ’,’h’,’a’,’p’,’p’,’y’}; c[0]c[1]c[2]c[3]c[4]c[5]c[6]c[7]c[8]c[9] I a m h a p p y

字符数组的初始化
char diamond[5][5]={{’ ’,’ ’,’*’}, {’ ’,’*’,’ ’,’*’}, {’*’,’’,’’,’ ’,’*’}, {’ ’,’*’,’ ’,’*’}, {’ ’,’ ’,’*’} };

charc[10]={’c’,’ ’,’p’,’r’,’o’,’g’,’r’,’a’,’m’} ; c[0]c[1]c[2]c[3]c[4]c[5]c[6]c[7]c[8]c[9] c p r o g r a m \0

怎样引用字符数组中的元素
例 6 输出一个已知的字符串。 ? 解题思路: ? 定义一个字符数组,并用“初始化列表 ”对其赋以初值 ? 用循环逐个输出此字符数组中的字符

怎样引用字符数组中的元素
#include <stdio.h> int main() { char c[15]={'I',' ','a','m',' ','a', ' ','s','t','u','d','e','n','t','.'}; int i; for(i=0;i<15;i++) printf("%c",c[i]); printf("\n"); return 0; }

怎样引用字符数组中的元素
例 7 输出一个菱形图。 ? 解题思路: ? 定义一个字符型的二维数组,用“初始 化列表”进行初始化 ? 用嵌套的for循环输出字符数组中的所有 元素。

怎样引用字符数组中的元素
#include <stdio.h> void main() { char diamond[][5]={{' ',' ','*'}, {' ','*',' ','*'},{'*',' ',' ',' ','*'}, {' ','*',' ','*'},{' ',' ','*'}}; int i,j; for (i=0;i<5;i++) {for ( j=0;j<5;j++) printf("%c",diamond[i][ j]); printf("\n"); }}

7

字符串和字符串结束标志
? 在C语言中,是将字符串作为字符数组来处 理的 ? 关心的是字符串的有效长度而不是字符数 组的长度 ? 为了测定字符串的实际长度,C语言规定了 字符串结束标志’\0’

字符串和字符串结束标志
? ’\0’代表ASCII码为0的字符 ? 从ASCII码表可以查到,ASCII码为0的字符 不是一个可以显示的字符,而是一个“空 操作符”,即它什么也不做 ? 用它作为字符串结束标志不会产生附加的 操作或增加有效字符,只起一个供辨别的 标志

字符串和字符串结束标志
char c[]={”I am happy”}; 可写成 char c[]=”I am happy”; 相当于 char c[11]={”I am happy”};

字符串和字符串结束标志
char c[10]={”China”}; 可写成 char c[10]=”China”; 从c[5]开始,元素值均为\0 只显示
C h i n a \0 \0 \0 \0 \0

printf(”%s”,c);

字符数组的输入输出
? 字符数组的输入输出可以有两种方法: ? 逐个字符输入输出(%c) ? 整个字符串一次输入输出(%s) ? 输出的字符中不包括结束符’\0’ ? 用%s输出字符串时,printf函数中的输出 项是字符数组名,不是数组元素名

字符数组的输入输出
? 如果一个字符数组中包含多个’\0’,则 遇第一个’\0’时输出就结束 ? 可以用scanf函数输入一个字符串 ? scanf函数中的输入项c是已定义的字符数 组名,输入的字符串应短于已定义的字符 数组的长度

8

字符数组的输入输出
char c[6]; scanf(”%s”,c); China↙ 系统自动在China后面加一个’\0’

字符数组的输入输出
char str1[5],str2[5],str3[5]; scanf(”%s%s%s”,str1,str2,str3); Howareyou?↙
str1 str2 str3 H a y o r o w e u \0 \0 ? \0 \0 \0

C语言程序设计实验作业
? 11月20日交 C语言期中考试题目编程 题的实验报告 ? 11月20日交 C语言教材P211实验5循 环控制(二)的上机编程题目4、5、6 、7四个题目的实验报告 ? 11月20日交上述两份实验报告的打印 稿,格式在上海电力学院实验报告的 格式邮箱:shiep_cyy@126.com密 码:jsjkxyjs

C语言测试及教师课外辅导 ? 计算机基础及C任课教师课外辅导 时间为每周一、三、四的7、8节 ,地点:6机房。每次有一名专业 老师给大家辅导上机,请大家务必 准时参加。除元旦(1月1日)。

C语言教学辅导系统
? ? ? ? 数组结束后还有一次测验,初步定为机考 C语言新系统:210.35.95.24/tcroot 大家可以登录本系统 登录的用户名和密码是学生的学号选择“ 课程作业”

54

9


相关文章:
19_字符数组_图文.ppt
19_字符数组_理学_高等教育_教育专区。C语言 复习旧课 ? 一维数组的定义 ? 二维数组的定义 将二维数组行列元素互换, 将二维数组行列元素互换,存到另一个数组中...
第19讲 二维数组 字符串与指针 函数与指针lf_图文.ppt
二维数组的数组元素 p main() { static int a[3][4]={1,3,5,7,9,11...字符指针变量与字符数组的分别 char *cp; 与 char str[20]; 17 ? 字符数组...
一维数组,二维数组.ppt
前几章使用的变量都属于基本类型,例如整型int、 字符型char、浮点型(float、...[19%3] int n=5,a[10]; a[n]=20; 注意定义数组与引用数组元素的区别:...
掌握一维和二维数组的定义和数组元素的引用方法(精)_图文.ppt
?掌握字符数组的定义、初始化方法及其元素的引用方法。 ?掌握C语言提供的对字符...=11 ary[2][3]=12 08:47 18 §7.2.3 二维数组的初始化 对二维数组及...
FORTRAN数组介绍大全_图文.ppt
(-5:10) 定义二维实型数组B,3行 列 个元素 个...一维字符数组 有100个字符串 每个可容 个字符串 ...(/1,2,3,4,5,6,7,8,9,10,11,12/),(/3...
实验四 字符串、数组、簇和矩阵_图文.ppt
简单登陆程序 2015-3-19 西北农林科技大学机电学院电子系 11 4.1 字符串(...Table)和树形控件:新式->列表与表格 表格实际上就是一个字符串组成的二维数组...
二维数组_图文.ppt
二维数组的数组元素 p main() { static int a[3][4]={1,3,5,7,9,11...(1)用字符数组 作参数 (2) 用字符指针变量作参数例10.19 实现字符串复制 ...
第6章 数组与字符串_图文.ppt
第6章 数组与字符串本章导读:主要讨论各种不同类型的一维和二维数组 及其应用...[1] 9 11 2016 2018 a[2] a[2][0] a[2][1] 17 19 行名 2004 a...
指针和数组有着密切的关系.doc
二维数组: int a[3][4]={{0,1,2,3}, {4,5,6,7}, {8,9,10,11...实际上,在字符数组定义的过程中, 编译程序直接把字符串复写到数组中,即对数组 ...
6数组及应用.ppt
? 使用两个一维数组,滚动计算 ? 二维数组 ? ? ?...20 7 12 18 21 23 11 19 22 24 25 思路 ? ...? 字符数组可以用来存储字符串 但字符数组不一定是...
第6章 数组和字符串 练习题.doc
定义了 int 型二维数组 a[6][7]后,数组元素 a...下列初始化字符数组的语句中,正确的是___ A. char...其中存放着序列 1,3,5,7,9,11,13,15,17,19...
Java 数组练习题目.doc
10) 数组最小的下标是。 11) arraycopy()的最后...19) 二维数组的行的长度不同。 20) 数组创建后其...下列初始化字符数组的语句中,正确的是___ A. char...
应用实践编程题答案new.doc
(3) 在主函数中定义一个二维数组, 并使用该数组...11 15 19 4 8 12 16 20 排序后的数组: 19 ...初始状态:s1: abcdefg s2:1234 输入插入字符串的...
6数组_图文.ppt
11,12}}; 2013-8-13 19 2.按二维数组在内存中...2013-8-13 27 6.2 字符数组的定义及应用字符数组...
第六讲_matlab字符串数组、元胞数组和构架数组_图文.ppt
向量可视为一维 数组,矩阵可视为二维数组,对于维数 ...bytes 在MATLAB中,字符串是作为字符数组来引入的; ...2. 串数组的大小 11 size指令可获得串数组的大小...
第四章 数组字符串(一)_图文.ppt
一个二维数组类型可以定义为其分量类型为 一维数组类型的一维数组类型: typedef ...第4章_数组、簇与字符串 19页 免费 第4章数组字符串 36页 1下载券 第...
C语言第6章2二维数组._图文.ppt
3. 4. 5. 一维数组二维数组 字符数组 结构体类型 2 2 二维数组一、二维...11.0 12.0 15.0 16.0 19.0 20.0 13.0 14.0 17.0 18.0 矩阵 A...
第六章 数组、指针与字符串(3)_图文.ppt
[2] = 1 3 5 7 = 9 11 13 15 = 17 19 21 23 15 C++语言程序设计...27 §6.3.2字符串 Heap 1.字符数组的声明和引用 Stack ?存放字符数据的数组...
第四章 数组作业.doc
n[1][4] 若二维数组 c 有 m 列,则计算任一...11 B. 19 C. 13 D. 20 27. 有以下程序 main...3 5 7 29. 下述对 C 语言字符数组的描述中错误...
C语言 第6章 2、二维数组)_图文.ppt
数组概述 一维数组 二维数组 字符数组 结构体类型 2 2 二维数组一、二维数组的...11.0 12.0 15.0 16.0 19.0 20.0 13.0 14.0 17.0 18.0 矩阵 A...