C语言第十二讲二维数组与字符数组解析PPT课件

int a[3][2];
例7-8 源程序
a[0][0] a[0][1] a[1][0] a[1][1]
01ቤተ መጻሕፍቲ ባይዱ12
a[2][0] a[2][1]
23
for(i = 0; i < 3; i++) for(j = 0; j < 2; j++) a[i][j] = i + j;
i=0 j=0 i=0 j=1 i=1 j=0
数组a 123 456 789
2、顺序赋初值
int a[3][3] = {1,2,3,4,5,6,7,8,9};
static int b[4][3] = {1,2,3,0,0,0,4,5};
数组b 123 000 450 000
C语言程序设计语言
-
11
省略行长度
对全部元素都赋了初值, int a[ ][3]={1,2,3,4,5,6,7,8,9}; 或分行赋初值时,在初值表中列出了全部行 static int b[ ][3]={{1,2,3},{},{4,5},{}}
【例 7-7】将1个3*2的矩阵存入1个3*2的二 维数组中,找出最大值以及它的行下标和 列下标,并输出该矩阵。
row col a[row][col]
记录最大值的行下标 最大值的列下标 最大值
main() { int col, i, j, row; int a[3][2];
例7-7 源程序
printf(“Enter 6 integers:\n") ;
10 -9 6 -1
printf("\n"); } row = col = 0;
32 10 -9
for(i = 0; i < 3; i++)
6 -1
for(j = 0; j < 2; j++) if(a[i][j] > a[row][col]){
max = a[1][0] = 10
row = i; col = j;
二维数组的元素在内 存中按行/列方式存放
a[0][0] a[0][1] a[1][0] a[1][1] a[2][0] a[2][1]
a[0][0] a[0][1] a[1][0] a[1][1] a[2][0] a[2][1]
C语言程序设计语言
-
10
7.2.3 二维数组的初始化
1、分行赋初值
int a[3][3] = {{1,2,3},{4,5,6},{7,8,9}}; static int b[4][3] = {{1,2,3},{ },{4,5}};
a[i][j] = i + j(0≤i≤2,0≤j≤1)
int a[3][2]; a[0][0] a[0][1] a[1][0] a[1][1] a[2][0] a[2][1]
01 12 23
C语言程序设计语言
-
14
#include <stdio.h> int main(void) { int i, j;
for(i = 0; i < 3; i++) for(j = 0; j < 2; j++)
Enter 6 integers:
scanf("%d", &a[i][j]);
32
for(i = 0; i < 3; i++){ for(j = 0; j < 2; j++) printf("%4d", a[i][j]);
1、定义
类型名 数组名[行长度][列长度]
int a[3][2];
定义1个二维数组a,3行2列,6个元素
int b[5][10];
定义1个二维数组a,5 行 10 列, 50 个元素
C语言程序设计语言
-
8
先定义,后使用 数组元素的引用: 数组名[行下标] [列下标]
行下标和列下标:整型表达式 行下标的取值范围是[0,行长度-1]
第十二讲 二维数组和字符数组
主讲:谢华成
C语言程序设计语言程序设计
教学目的
熟练掌握二维数组的定义、引用、 初始化。
掌握二维数组的存储方式
借鉴一维数组程序处理方式,掌握 二维数组的显示、转置运算、最值 运算及统计问题。
C语言程序设计语言
-
2
第一部分 二维数组
❖ 二维数组的定义、引用、初始化 ❖ 二维数组的元素在内存中按什么方式存放? ❖ 求二维数组中元素的最大值和最小值 ❖ 二维数组的变换 ❖ 一维数组中相关算法在二维数组中的实现
a[i][j]:i、j的取值范围[0,N-1]
for(i = 0; i < 3; i++){ for(j = 0; j < 2; j++) printf("%4d", a[i][j]);
i=1 j=1 i=2 j=0 i=2 j=1
printf("\n");
}
return 0;
}
C语言程序设计语言
-
15
矩阵与二维数组
int a[N][N];
N是正整数
建议不要省略
数组a 123 456 789
数组b 123 000 450 000
C语言程序设计语言
-
12
7.2.4 使用二维数组编程
行下标和列下标分别做为循环变量, 通 过二重循环,遍历二维数组
通常将行下标做为外循环的循环变量
列下标 内循环
C语言程序设计语言
-
13
例7-8 生成一个矩阵并输出
定义1个 3*2 的二维数组a,数组元素的值由 下式给出,按矩阵的形式输出a。
列下标的取值范围是[0,列长度-1]
2、引用
int a[3][2]; 3 行 2 列, 6 个元素
a[0][0] a[0][1]
下标不要越界
a[1][0] a[1][1]
a[2][0] a[2][1]
C语言程序设计语言
-
9
二维数组在内存中的存放方式
int a[3][2];
3 行 2 列, 6 个元素 表示1个3行2列的矩阵
C语言程序设计语言
-
3
7.2 找出矩阵中最大值所在的位置
将1个3*2的矩阵存入1个3*2的二维数组中, 找出最大值以及它的行下标和列下标,并输出 该矩阵。
7.2.1 程序解析 7.2.2 二维数组的定义和引用 7.2.3 二维数组的初始化 7.2.4 使用二维数组编程
C语言程序设计语言
-
4
7.2.1 程序解析-求矩阵的最大值
}
printf("max = a[%d][%d] = %d\n", row, col, a[row][col]);
}
多维数组的空间想象
二维数组
一维数组: 一列长表或一个向量 二维数组: 一个表格或一个平面矩阵 三维数组: 三维空间的一个方阵
多维数组: 多维空间的一个数据列阵
C语言程序设计语言
-
7
7.2.2 二维数组的定义和引用
合集下载

C语言数组PPT课件

C语言数组PPT课件
a[i]=a[n-1-i]; a[n-1-i]=t; }
#include "stdio.h" main( ) { int a[50],t,n,i;
scanf("%d",&n); for(i=0;i<n;i++)
{ scanf("%d",&a[i]); printf("%5d",a[i]); }
printf("\n"); for(i=0;i<=(n-1)/2;i++)
for(i=0;i<N;i++)
printf("%5d",a[i]);
选择排序
}
例:5-10 用二分查找法找一个数是否在一个有序的数组中。
#include "stdio.h"
main( )
{ int n=8, key,m,left,right;
int a[]={1,3,5,7,9,15,19,24}; printf("输入待查数据:\n");
产生随机数组、逆序、排序 ➢ 对字符数组的操作:
连接、复制、比较
5.1 一维数组
一、 一维数组的定义和引用 1. 定义
整数或整型 常量表达式
类型标识符 数组名[ 数组长度 ];
int a[10]; 表示数组a共包括10个元素,分别为a[0] ~a[9]。
a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9]
else left=m+1;
} if(left>right) printf("此数不在数组中\n");

C语言数组详解ppt课件

C语言数组详解ppt课件
表示元素 的个数, 即数组长
度。 4
(一)一维数组(1)——定义及使用
注意: 1.数组名不能与其它变量名相同
void main() {
int a; float a[10]; …… }
最新版整理ppt
5
(一)一维数组(1)——定义及使用
2. 不能在方括号中用变量来表示元素的个 数,但可以是符号常数或常量表达式。
a[0] a[1] a[2] a[3] a[4]
3 6 1 9 4 未排序的情况
1 6 3 9 4 将5个数中最小的数1与
a[0]对换
1 3 6 9 4 将余下的4个数中最小的数
3与a[1] 对换
1 3 4 9 6 将余下的3个数中最小的数
4与a[2] 对换
1 3 4 6 9 将余下的2个数中最小的数
最新版整理ppt
1
就是一组具有固定数目的、有序的、类型相同的
数据的集合。根据数组下标的多少,数组可以分为 一维数组和多维数组。
例如:一个班级有30个学生,可以用g1,g2,…,g30 代表学生的成绩,其中g是数组名,下标代表学生
的序号。由于在C语言中无法表示下标,所以就引
入了[ ] 表示下标。
g[1]:第1个学生的成绩
最新版整理ppat [8]=8; a[9]=9; 9
int a[5] = {1,2,3,4,5};
#include <stdio.h>
void main()
{ a[4]
5
2020
inat [a3[]5]={0,1,2,3,4}; 4
2016
a pfproraaaiirnn[[[(ptt210irnff]]]it((n""t数数i=f(0组组";aai的[<在%数 的5首一d;内起组i]地+个=存+始名%址地)中d地表为址,占其址示:321常%字地数,量d节址组是\n数是",:%a%)d;d\\nn""222,,is000,iaz100[ei284]o,f&(aa[)i)];);

c语言数组与字符串PPT课件

c语言数组与字符串PPT课件

j +00+11)52
7 7
9 9
3 5
4 4
6 6
8 8
2 3
if (num[i] >num[ j0])1 2 3 9 7 5 6 8 4
{ tem=num[i];
0123497685 0123459786
num[i]=num[ j];
0123456987 0123456798
num[ j]=tem; 0 1 2 3 4 5 6 7 8 9
• Char st[20]; scanf(“%s”,st); • 注意,st是数组名而非变量名,故不
可用&st • 数组名代表了数组的首地址,整个
数组存放在以首地址开始的一块连 续内存单元中
第20页/共34页
字符串处理函数:
• 头文件是 <string.h>
• puts(str或字串)
在屏幕上显示一个字符串(以‘\0’结束); 将结束标记转为 ‘ \n’; 可含转义字符.
main( ) { int num[10], i;
for (i=0; i<10; i++) num[i]=i+1;
for(i=0; i<10; i++) num[i] *= 10;
for (i=0; i<10; i++) printf("num[%d] = %d \n", i, num[i] );
}
第6页/共34页
main( ) { int num[10], i;
for (i=0; i<10; i++) scanf("%d", &num[i]);

二维数组简单讲解 PPT

二维数组简单讲解 PPT
5.3 二维数组
二维数组的定义、引用、初始化 使用二维数组编程
2
3
4
5
6
7
8
9
程序解析——求矩阵中的最大值
将1个3*2的矩阵存入1个3*2的二维数组 中,找出最大值以及它的行下标和列下标, 并输出该矩阵。
变量说明: row 记录最大值的行下标 col 记录最大值的列下标 a[row][col] 即为最大值
6 -最 i1 大j值 a[i][j] a[row][col] ma0x =0a[1][30] = 1a0[0][0]=3
0 1 2 a[0][0]=3 1 0 10 a[1][0]=10
}
1 1 -9 a[1][0]=10
printf("max=a[%d][%d]=%d\n",row2 ,c0ol,a6[row]a[[1c]o[0l]]=)1;0
day_of_year(2000, 3, 1) 返回61
day_of_year(1981, 3, 1) 返回60
分析:
月0 非闰年 0
闰年 0
1 2 3 ……11
31 28 31
30
31 29 31
30
12
31 利用二维数组分别 31 表示非闰年和闰年
int tab[2][13]={ {0,31, 28, 31, 30,31,30,31,31,30,31, 30,31}, {0,31, 29, 31, 30,31,30,31,31,30,31, 30,31}
for(i = 0; i < 3; i++){//输出 for(j = 0; j < 2; j++) printf("%4d", a[i][j]); printf("\n");

C语言数组学习课件

C语言数组学习课件

选择法排序(由小到大)
基本思想:先选择要参加排序的数和要存放的位置。 具体做法:每一次在某个范围内先找到最小元素,再放到 相应位置。
for ( i = 0 ; i < n – 1 ; i ++ ) 在 a[i] ~ a[n-1] 范围内找 最小元素 a[mini] , 与 a[i] 互换 注意:要记下最小值 的位置mini。 1 a[0] a[1] a[2] a[3] a[4] 4 3 4
插入法排序
上网查资料,了解排序思想 写出程序 还有其他的排序法吗?上网查资料
一维数组编程举例
用“折半查找法”在有序数组中找某数。可能找得到,也可能找 不到。(sz_4End.c)
思路:与中间的数比较,决定是向上找还是向下找。 向上找就修改下限,向下找就修改上限。 算法 上下限赋初值: low=0; high=n-1; while(low<high) { 求出中间的位置mid = (low + high )/2; 与中间的数比较: if( n < a[mid] ) 向上找 else if ( n > a[mid] ) 向下找 else break ; (找到了,mid 就是对应的位置) } 输出信息
存放10个学生的成绩 int score[10]; 存放 n 个数,n 不多于10
int a[10]; scanf("%d",&n); int a[n]; scanf(“%d”, &n);
一维数组的引用
一维数组的引用
数组名[下标] 特别说明: 必须先定义,才能使用数组元素。 数组元素要一个一个地引用。(除字符串) 下标必须为整数,可以是常量,也可以是变量。 下标不许超出数组的长度!! 数组定义后,数组名代表数组的首地址,其中的元素 按照下标依次存放。

C语言二维数组(课堂PPT)

C语言二维数组(课堂PPT)

{ printf("a[%d][%d]=",i,j);
scanf("%d",&a[i][j];}
for(i=0;i<3;i++) /*输出数组*/
{for (j=0;j<3;j++)
if(i==1||j==1) printf("%-6d",a[i][j]);
else printf("%-6c",' ' ’);
5
二维数组元素的表示形式为:数组名[下标][下标] 例如: a[2][3]
下标可以是整型表达式,如 a[2-1][2*2-1]
注意 不要写成 a[2,3],a[2-1,2*2-1]形式
数组元素可以出现在表达式中,也可以被赋值,例如: b[1][2]=a[2][3]/2
6
在使用数组元素时,应该注意下标值应在已定义 的数组大小的范围内。 常出现的错误有: int a[3][4]; /* 定义a为3×4的数组 */
┆ a[3][4]=3;
7
§ 11.3二维数组的引用
数据类型 数组名 [常量表达式1][常量表达式2]={ 据可以}用下;面4种方法对二维数组初始化
初始化数
(1) 分行给二维数组赋初值。如: int a[3][4]={{1,2,3,4},{5,6,7,8},{9,
10,11,12}};
(2) 可以将所有数据写在一个花括弧内,按数组排列的顺序对 各元素赋初值。如:
在定义时也可以只对部分元素赋初值而省略第一维的
长度,但应分行赋初值。如:int a[][4]={{0,
0,3},{},{0,10}};
0 0 30 0 0 00 0 10 0 010二维数组Fra bibliotek素的输入与输出

C语言数组详解PPT课件


int a[5] = {1,2,3,4,5};
#include <stdio.h>
void main()
{ a[4]
5
2020
inat [a3[]5]={0,1,2,3,4}; 4
2016
a pfproraaaiirnn[[[(ptt210irnff]]]it((n""t数数i=f(0组组";aai的[<在%数 的5首一d;内组起i]地+个=存+名始%址地)中d表地为址,占其示址:321常%字地数,d量节址组是\n数是",:%a%)d;d\\nn""222,,is000,iaz100[ei284]o,f&(aa[))i];);
#define FD 5
void main()
{
……
int a[3+2],b[7+FD]; int n;
……
scanf("%d",&n);/*表示维
}
数的只能是常量*/
int a[n];
编辑版
6
(一)一维数组(1)——定义及使用
3. 方括号中常量表达式表示数组元素 的个数。如int a[5]: 数组a有5个元 素,其下标从0开始,分别为 a[0],a[1],a[2],a[3],a[4]。 如果出现数
g[i]:第i个学生的成绩等等
编辑版
2
(一)一维数组(1)——定义及使用
类型说明符 int
任一种基 本数据类 型或构造 数据类型。
数组名[常量表达式] a[10]
用户自定义的数组 名字,其定名规则 与变量名定名规则 一样,都需遵循标
识符定名规则

字符数组的定义和引用课件(共18张PPT)—《C语言程序设计》(电子工业版)

可以存放60个字符型数据。
相关知识
(二)字符数组初始化
字符数组的初始化方式与其它类型数组的初始化方式类似。
1.逐个元素赋初值
逐个字符赋值
char ch[5]={´H´,´e´,´l´,´l´,´o´};
例 char ch[5]={‘H’,’e’,’l’,’l’,’o’};
H
ch[0]
e
ch[1]
l
(3)字符常量使用简单变量存储和处理,而字符串在C语言中,
只能使用字符数组存储和处理。
如:变量:x=’a’;
数组:char ch[6]="china";
任务实施
#include <stdio.h>
void main ( )
{char s[10];
int i=0;
printf("请输入字符回车结束:\n");
字符数组、字符串
复习导入
一维数组的定义格式
数据类型 数组名[常量表达式];
二维数组的定义格式
数据类型 数组名[常量表达式1][常量表达式2];
教学目标
1
掌握字符数组的定义。
知
掌握字符数组的引用与初始化方法 识
2
能够正确使用字符数组解决实际问题。
能 力
3
培养学生独立思考、解决问题的能力。
情 感
工作任务
(3)以scanf ("%s", 数组名);形式读入字符串时,遇空格或回车都表示字
符串结束,系统只是将第一个空格或回车前的字符置于数组中。
相关知识
字符常量和字符串的区别:
(1)字符常量是用单引号引起来的一个字符为字符常量。
如:’a’字符常量;

C语言C 072二维数组.ppt

5 34 3 35 3 5
用数组定义
int a[2][3][4 ]? a[1][1][1]=?
第1维:年份; 第2维:姓名; 第3维:工作;
27
举一反三
定义一个四维数组,该如何定义呢? 定义一个n维数组,又该如何定义呢?
四维:int a[3][3][4][3]; n维:数据类型 数组名[m1][m2][m3]…[mn-1]
int i, j,a[2][3];
运行结果:
for(i=0;i<2;i++)
for(j=0;j<3;j++)
scanf(“%d”,&a[ i ][j] );
输入:1,2,3,4,5,6,7,8,9,10,11,12
特点:行下标变化慢、列下标变化快。
二维数组的动态赋值—按列输入
int i, j,a[3][4];
按行分段赋值。 按行连续赋值。
2020/4/18
7
二维数组的初始化1 ——按行分段赋值
格式: 数据类型 数组名[行长度][列长度] = {{第1行的元素值},{第2行的元素值},……}; 举例:
int a[2][3]={{11,22,33},{44,55,66}}; char
c[2][6]={{‘a’,’\x61’,’b’,’c’,’3’,’9’},{‘1’,’2’,’3’,’4’,’5’,’6’}}; float f[3]{2}={ {12.3,0.456},{134.98,11.2},{4.5,6.78}};
如int a[2*3][4]; int a[n][2],n=10;
同一个程序中,数组名不能与其它变量名相同。 int a; float a[10][20];

数组与字符串PPT课件

-32-
-15-
二维数组的定义和引用
定义二维数组,描述国际象棋棋盘,棋盘8行8列, 每个方格要么为黑色,要么为白色。
int board[8][8];
访问二维数组中的数据元素,需要使用2个下标
board[0][3]
行和列下标都从0开始,与1维数组相同。 C++中规定,先指定行下标,再指定列下标。
-16-
二维数组的使用
cin>>name只能读取空格前的第一段字符串。
-28-
读取字符串示例
#include <iostream> int main() {
char name[50]; std::cout<<"What is your name: "; std::cin.getline(name, 49); std::cout<<"Your name is: "<<name<<"\n"; return 0; }
二维数组的初始化
情况四:顺序初始化,缺省的初始化为0 int a[3][3]={1,2,4,5,6};
1 a[0][0]
2 a[0][1] a[0]
4 a[0][2]
5 a[1][0]
6 a[1][1] a[1]
0 a[1][2]
0
a[2][0]
0 a[2][1] a[2]
0 a[2][2]
二维数组示例
-7-
篱笆桩错误
访问数组元素时,最大下标应该为数组元素个数减 1,越过此边界,会导致程序的异常行为。
int score[10]; score[10] = 94;
-8-
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档