最新8.2二维数组和字符串汇总
C语言知识点总结8【二维数组】
C语言知识点总结8【二维数组】一、二维数组的定义●一个3行,4列的二维数组。
其行号:0,1,2;其列号:0,1,2,3●最大下标的元素为a[2][3],没有a[3][4]这个元素●数组共有3行,每一行都是:4个元素的一维数组,每一行的数组名分别为:a[0],a[1],a[2]●从整体看,任何一个二维数组都可以看成是一个一维数组,只不过其数组元素又是一个一维数组。
●二维数组定义同时若有初始化,可以省略行号不写:如int a[][3]={1,2,3,4,5,6};系统会按照数据的个数,和规定的列数,来确定数据分几行?●二维数组定义同时若有初始化,可以省略行号不写,但列号不能省略:如int a[3][ ]={1,2,3,4,5};系统无法按照数据的个数,和规定的行数,来确定数据分几列。
二、二维数组的存储及地址关系二维数组在计算机中的存储是按行连续存储。
先保存第一行,在第一行末尾开始存第二行,依此类推。
这里,a是a[0]的地址,a[0]是数组元素a[0][0]的地址,则a是地址的地址,即二级地址三、 二维数组的初始化1、 分行赋值:int a[3][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}};2、 不分行赋值:全部数据写在一个大括号内:int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12};3、 部分元素赋值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};四、 二维数组的输出五、二维数组的输入六、二维数组的应用案例1:计算一个二维数组的主对角线元素之和主对角线元素的特点:行号与列号相同。
选择性求和。
反对角线元素的特点:?#include<stdio.h>void main(){int a[4][4]={{1,1,1,1},{2,2,2,2},{3,3,3,3},{4,4,4,4}};int i,j;int s=0;for(i=0;i<4;i++)for(j=0;j<4;j++)if(i==j)s=s+a[i][j];printf("%4d\n",s);}案例2:一共有5名同学,参加了3门课程的考试。
第5章 数组(C++版) 第三节 字符数组和字符串类型02
【分析】 首先要将给定的原文保存在字符数组里。然后,在原文中,从头开始寻找字符A,找 到一个字符A,便将其替换成字符B;继续寻找下一个字符A,找到了就替换,……,直到 将原文都处理完。如下程序只能处理单个字符替换,无法处理单词替换,I U中间只能有 一个空格。getchar()输入的使用方法详见教材的第二章第四节,单词替换详见《信息学 奥赛一本通拓展教程》。 程序如下: #include<cstdio> #include<iostream> using namespace std; int main() { char st[200]; char A,B; int i,n=0; while((st[n++]=getchar())!='\n') //将原文存放在字符数组st中 A=getchar();getchar();B=getchar(); //读取A和B,中间getchar()读空格 for (i=0;i<n;i++) if (st[i]==A) cout<<B; else cout<<st[i]; cout<<endl; return 0; }
#include<iostream> #include<iomanip> using namespace std; int main() { for (char letter='a'; letter<='z'; letter+=2) cout<<setw(3)<<letter; cout<<endl; for (char letter='z'; letter>='a'; letter-=2) cout<<setw(3)<<letter; return 0; }
二维字符串数组
二维字符串数组在计算机科学中,字符串是一个非常重要的概念。
字符串是由一个或多个字符组成的序列,它们可以用来表示文本、数字、符号等。
在许多应用程序中,字符串都是必不可少的,因为它们可以用来存储和处理大量的数据。
而二维字符串数组则是在这些应用程序中经常使用的一种数据结构。
二维字符串数组是一个由多个字符串组成的矩阵,其中每个字符串都是由一个或多个字符组成的序列。
这些字符串可以是相同长度的,也可以是不同长度的。
二维字符串数组通常用于存储和处理文本数据或图像数据等。
在计算机程序中,二维字符串数组可以用来存储和处理大量的数据。
例如,在一个文本编辑器中,二维字符串数组可以用来存储整个文档的内容,每个字符串代表文档中的一行。
在一个图像处理程序中,二维字符串数组可以用来存储图像的像素值,每个字符串代表一行像素。
二维字符串数组的定义二维字符串数组的定义通常是这样的:```string[][] array = new string[rows][];for (int i = 0; i < rows; i++){array[i] = new string[cols];```其中,`rows`和`cols`分别表示数组的行数和列数。
这段代码创建了一个二维字符串数组,其中每个字符串都是空的。
二维字符串数组的访问访问二维字符串数组中的元素可以使用两个索引,一个用于表示行,另一个用于表示列。
例如,要访问二维字符串数组中的第i行第j列的元素,可以使用以下代码:```string element = array[i][j];```二维字符串数组的遍历遍历二维字符串数组中的所有元素可以使用两个嵌套的循环。
例如,以下代码可以遍历一个3行4列的二维字符串数组:```for (int i = 0; i < 3; i++){for (int j = 0; j < 4; j++){Console.WriteLine(array[i][j]);}}二维字符串数组的操作二维字符串数组可以进行一些常见的操作,例如添加、删除和查找元素。
8.2二维数组和字符串
例:一个专业当中同学分为不同的班级,引进二维数组一、二维数组(一)二维数组的定义1.定义方式:数据类型数组名[常量表达式][常量表达式];其中,第一个常量表达式代表数组的行数,第二个表达式代表数组的列数,元素个数=行数*列数注意:第一个常量表达式可以为空,但第二个常量表达式不能为空。
例:int a[3][4]; /*表示整型二维数组,有3行4列*/ 该数组下标共有3×4个,即:说明:在声明二维数组int[3][4]以后,可以把二维数组a认为含有3个元素的一维数组,这3个元素就是a[0],a[1],a[2],每一个元素就相当于一行,每一个元素又是含有4个元素的一维数组。
存储方式:在C语言中,二维数组是按行序优先存放的,先存放a[0]行元素,再存放a[1]行元素,最后存放a[2]行元素。
(二)二维数组元素的引用形式:数组名[下标][下标]其中,第一个下标为行下标,第二个下标为列下标。
例:引用第2行第3列的数组,即a[1][2](数组的行列下标从0开始)注意:在二维数组中,不能整体引用整个数组,只能对单个元素进行操作。
main(){int a[2][3],i,j;for(i=0;i<2;i++) /*引用二维数组的行*/for(j=0;j<3;j++) /*引用二维数组的列*/scanf("%d",&a[i][j]);for(i=0;i<2;i++){for(j=0;j<3;j++) /*加上{},实现每输出一行就换行的操作*/ printf("%d ",a[i][j]);printf("\n");}}(三)二维数组元素的初始化(四)二维数组举例将一个二维数组行和列的元素互换,存到另一个二维数组中。
输出: 程序:#include<stdio.h> 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++) {for(j=0;j<=2;j++) {printf(“%5d ”,a[i][j]);a=1 2 3 4 5 6b=1 42 53 6b[j][i]=a[i][j];}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”);}}二、字符数组和字符串(一)字符数组1.定义:用来存放字符数据的数组是字符数组。
c语言中的二维数组
c语言中的二维数组一、二维数组的定义和基本概念在C语言中,二维数组是具有二维结构的数组,它相当于一个矩阵。
二维数组由行和列组成,每一行都是一个一维数组,而整个二维数组是由多个这样的行组成的。
二维数组的元素用方括号和行号、列号表示,例如:array[i][j]。
二、二维数组的初始化1.静态初始化:在定义二维数组时,可以使用大括号{}为数组元素赋初值。
例如:```cint array[3][3] = {{1, 2, 3},{4, 5, 6},{7, 8, 9}};```2.动态初始化:在程序运行过程中,可以使用循环为二维数组赋值。
例如:```cint array[3][3];for (int i = 0; i < 3; i++) {for (int j = 0; j < 3; j++) {array[i][j] = i * 3 + j + 1;}}```三、二维数组的访问和操作1.访问二维数组的元素:使用数组名和方括号表示,如:array[i][j]。
2.修改二维数组的元素:使用赋值操作符“=”,如:array[i][j] = value。
3.遍历二维数组:使用嵌套循环,如:```cfor (int i = 0; i < row; i++) {for (int j = 0; j < col; j++) {printf("%d ", array[i][j]);}printf("");}```四、二维数组的应用实例1.矩阵加法:两个矩阵相加,结果为一个同样大小的矩阵,元素为两个矩阵对应位置元素的和。
```c#define ROW 3#define COL 3int matrix1[ROW][COL] = {{1, 2, 3},{4, 5, 6},{7, 8, 9}};int matrix2[ROW][COL] = {{9, 8, 7},{6, 5, 4},{3, 2, 1}};int result[ROW][COL];for (int i = 0; i < ROW; i++) {for (int j = 0; j < COL; j++) {result[i][j] = matrix1[i][j] + matrix2[i][j];}}for (int i = 0; i < ROW; i++) {for (int j = 0; j < COL; j++) {printf("%d ", result[i][j]);}printf("");}```2.矩阵乘法:一个矩阵与另一个矩阵相乘,结果为一个大小为行数乘以列数的矩阵,元素为两个矩阵对应位置元素的乘积之和。
string二维数组定义(二)
string二维数组定义(二)string二维数组的定义•string二维数组是指由string类型元素组成的二维数组。
在C++中,二维数组是一种存储多个元素的数据结构,而string是C++中表示文本的数据类型。
1. 定义方式在C++中,可以使用以下方式定义一个string二维数组:string array_name[row_size][col_size];其中,array_name为数组名,row_size为行数,col_size为列数。
这样定义后,就可以通过array_name[i][j]访问数组的元素。
2. 理由•处理文本数据:string类型是C++中处理文本数据的首选,它提供了丰富的字符串操作函数。
而二维数组则可以方便地存储和操作多个文本数据。
•简化逻辑结构:有些问题需要处理的数据存在多个维度,使用二维数组可以更好地组织和表示这些数据,使得逻辑结构更加清晰和简化。
•代码可读性:将相关数据存储在二维数组中,可以使代码更具可读性。
使用具有描述性的变量名,可以更好地理解和维护代码。
3. 书籍简介•《C++ Primer》《C++ Primer》是一本经典的C++入门教程,适合初学者和有一定编程基础的读者。
书中详细讲解了C++的各种语法和用法,包括二维数组的定义和操作。
通过学习这本书,读者可以全面掌握C++的基础知识,为进一步深入学习和开发打下坚实基础。
•《Effective C++》《Effective C++》是由著名程序员Scott Meyers所著的,是一本讲述C++编程技术的经典之作。
书中详细介绍了高效使用C++的各种技巧和原则。
其中包括使用STL和string类型来提高代码的可读性和系统的方法。
对于想要提高C++编程能力和规范代码的读者来说,这本书是必不可少的参考资料。
•《C++ Coding Standards》《C++ Coding Standards》是由Herb Sutter和Andrei Alexandrescu合著的一本编码规范书籍。
电大C语言程序设计 第4章 数组和字符串
Байду номын сангаас
第4章 数组和字符串 4.4 使用typedef语句定义数组类型 2. 二维数组类型的定义语句 格式: typedef <元素类型关键字> <数组类型名> [<常量表达式1>] [<常 量表达式2>]; 格式举例: (1) typedef int Matrix[5][5]; (2) typedef char nameTable[10][NN]; (3) typedef double DataType[M+1][N+1]; 定义对象: (1) Matrix mx={{0}}; (2) nameTable nt={""}; (3) DataType dd={{0.0}};
第4章 数组和字符串 4.2 一维数组 3. 数组元素访问 数组元素可以象普通变量一样使用。如: (1) int a[5]={0,1,2,3,8}; (2) a[0]=4; (3) a[1]+=a[0]; (4) a[3]=3*a[2]+1; (5) printf("%d",a[a[0]]);
第4章 数组和字符串 4.1 数组的概念 一维数组可以表示和存储和一维相关的数据。 二维数组可以表示和存储和二维相关的数据。 三维数组可以表示和存储和三维相关的数据。 假定一个数列为a1,a2,…,an,可以用一维数组来 存储。一个矩阵可以用二维数组来存储。
第4章 数组和字符串 4.2 一维数组 1. 定义格式 <类型关键字><数组名>[<常量表达式>][={<初 值表>}] <类型关键字>:已存在的一种数据类型。 <数组名>:用户定义的标识符。 <常量表达式>只能含有通过#define命令定义的 符号常量,不能含有通过const语句定义的符号 常量,初值表为用逗号分开的一组表达式。
C语言第十二讲二维数组与字符数组解析PPT课件
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;
#include <stdio.h> int main(void) { int i, j;
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;
4
7.2.1 程序解析-求矩阵的最大值
【例 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.2.2 二维数组的定义和引用
1、定义
类型名 数组名[行长度][列长度]
int a[3][2];
定义1个二维数组a,3行2列,6个元素
int b[5][10];
定义1个二维数组a,5 行 10 列, 50 个元素
matlab 二维数组 定义
matlab 二维数组定义二维数组是一种常见的数据结构,它由多行多列的元素组成。
在Matlab中,我们可以使用矩阵来表示二维数组。
本文将从定义、特性、操作等方面介绍二维数组在Matlab中的应用。
一、定义二维数组是由相同类型的元素按照行和列排列形成的矩形表格。
在Matlab中,我们可以使用方括号和分号来定义二维数组。
例如,下面的代码定义了一个3行4列的二维数组A:A = [1, 2, 3, 4; 5, 6, 7, 8; 9, 10, 11, 12];二、特性1. 二维数组的元素可以是任意类型,包括数字、字符、字符串等。
2. 二维数组的行和列的数目可以不相等,但同一行或同一列的元素个数必须相等。
3. 二维数组的行和列的索引从1开始,行在前,列在后。
4. 二维数组可以通过行和列的索引来访问和修改元素。
三、操作1. 访问元素我们可以使用行和列的索引来访问二维数组中的元素。
例如,要访问二维数组A中的第2行第3列的元素,可以使用下面的代码:A(2, 3)2. 修改元素我们可以通过赋值的方式来修改二维数组中的元素。
例如,要将二维数组A中的第1行第2列的元素修改为10,可以使用下面的代码:A(1, 2) = 103. 求和我们可以使用sum函数来对二维数组的元素进行求和。
例如,要求二维数组A中每一列的和,可以使用下面的代码:sum(A)4. 求最大值和最小值我们可以使用max函数和min函数来求二维数组的最大值和最小值。
例如,要求二维数组A中的最大值和最小值,可以使用下面的代码:max(A)min(A)5. 求平均值我们可以使用mean函数来求二维数组的平均值。
例如,要求二维数组A中每一行的平均值,可以使用下面的代码:mean(A, 2)6. 转置我们可以使用'运算符来对二维数组进行转置操作。
例如,要将二维数组A进行转置,可以使用下面的代码:A'四、应用举例下面通过一个简单的例子来展示二维数组在Matlab中的应用。
C语言中二维字符数组
C语言中二维字符数组C语言中二维字符数组的定义和初始化一般来说,我们可能会希望定义一个二维字符数组并且在定义的时候就用一些字符串来初始化它。
比如说:始化就最简单不过了。
其中,MAX_LENGTH是所有字符串中最大的长度。
当然不能忘记'\0'了。
而定义一个字符二维数组,C也提供了简洁的方式,如果我不想统计字符串的长度,一定要指定的,像这样写 char **testcase = ... 是不行的,不过肯定不行了,因为int *pt=3 也不行,呵呵,这两个例子是一个道理啊。
我觉得肯定是人都喜欢第二种初始化方法了,而且它还有一个优点,起码对喜欢用指针的同志来说是一个大优点。
就是可以将这样定义的指针赋给一个二维指针,比如char **pointer = testcase;想形式1的定义方法肯定不能这样赋值了。
不过非常非常值得注意的是,上面定义的两个指针,一个一维,一个二维,他们必须在const关键字上一致,意思就是说如果定义testcase前面加了const关键字,定义pointer时也必须加上,否则就会报错:error C2440: 'initializing' : cannot convert from 'char *[30]' to 'const char **在写这篇日志的过程中,我突然想到一个问题,就似乎利用上面的方法二初始化二维字符串数组之中,字符串是如何分布的呢?因为字符串的长度是不相等的,完全由编译器来计算,那么它是会按照最长的字符串来定制字符数组的长度,还是让每一个字符串数组都按照自身的大小来占据内存,靠'\0'来识别结尾呢?二维字符串数组的初始化-动态内存分配昨天在用FBS200指纹采集芯片采集到一个二维数组数据后,利用串口传输上来的数据是以十六进制的数据格式表示的二维矩阵,比如“FF”、“BD”、“5C”等等这样的形式,而对于一幅灰度图像,一般都是在0~255之间的数据来表示其亮度值,因此想通过二维字符串数组来对采集过来的数据进行转化显示。
c语言 二维字符串数组形参
c语言二维字符串数组形参C语言中字符串类型是一种非常重要的数据类型,它在实际编程中被广泛应用。
与此相关的是二维字符串数组,它是由多个字符串组成的数组,也是C语言中常见的形参类型之一。
本文将围绕“C语言二维字符串数组形参”这一主题,从基础概念、使用方法和常见问题等方面进行介绍和解析。
一、基础概念1、二维字符串数组的定义在C语言中,我们可以通过定义二维数组来实现字符串的存储,这个二维数组中每一行都是一个字符串,而每一个字符串是由固定长度的字符组成的。
例如:char str_arr[3][10]={{"hello"},{"world"},{"c_language"}};其中str_arr是二维数组名称,3表示这个数组中有3行,10表示每一行的字符长度为10,也即是每个字符串最多由10个字符组成。
数组中的大括号表示初始化,每一行字符串后面的空位用0填充。
2、函数中的形参在C语言中,我们可以将一个数组作为函数的形参传递进去。
与一维数组类似,二维数组也可以作为函数形参进行传递。
例如:void print_str_arr(char str_arr[][10],int n);其中的char str_arr[][10]就是一个二维字符串数组作为形式参数,10是每个字符串的长度。
二、使用方法1、二维字符串数组的输入当我们需要输入一个二维字符串数组时,可以通过循环的方式进行输入。
例如:for(int i=0;i<3;i++){printf("please input a string:");scanf("%s",str_arr[i]);}这段代码中用到了一个for循环,定义了一个计数器i,控制循环输入的次数。
通过scanf()函数来实现输入字符串的功能。
2、二维字符串数组的输出输出二维字符串数组同样可以采用循环来实现。
输入两次字符串,存入二维数组的方法
输入两次字符串,存入二维数组的方法输入两次字符串并将它们存入二维数组是一种常见的需求,本文将讲解如何实现这一目标。
1. 定义二维数组首先需要定义一个二维数组,该数组的格式为 arr[row][col] ,其中 row 表示行数, col 表示列数,我们可以在定义时指定它们的具体值,例如:int row = 2, col = 2;char arr[row][col];这样就定义了一个二维数组,它含有两行两列的元素。
2. 获取两个字符串接着需要获取两个字符串,这里我们假设这两个字符串分别为str1 和 str2 ,并且它们的长度都相等:char str1[] = "ABCD";char str2[] = "EFGH";3. 存入二维数组下一步就是将这两个字符串存入二维数组中,这可以通过循环实现。
在每次循环中,我们将 str1 和 str2 中对应位置的字符分别存入二维数组的一个元素中,例如:for (int i = 0; i < row; i++) {for (int j = 0; j < col; j++) {arr[i][j] = str1[i * col + j];}}for (int i = 0; i < row; i++) {for (int j = 0; j < col; j++) {arr[i][j + col] = str2[i * col + j];}}这段代码中,第一个循环将 str1 中的字符存入二维数组左边的部分,第二个循环则将 str2 中的字符存入二维数组右边的部分。
需要注意的是,二维数组是按行存储的,所以在存储时需要计算出每个元素的正确位置。
完整代码如下:#include <stdio.h>int main() {int row = 2, col = 2;char arr[row][2 * col];char str1[] = "ABCD";char str2[] = "EFGH";for (int i = 0; i < row; i++) {for (int j = 0; j < col; j++) {arr[i][j] = str1[i * col + j];}}for (int i = 0; i < row; i++) {for (int j = 0; j < col; j++) {arr[i][j + col] = str2[i * col + j];}}printf("二维数组元素为:\n");for (int i = 0; i < row; i++) {for (int j = 0; j < 2 * col; j++) {printf("%c ", arr[i][j]);}printf("\n");}return 0;}以上就是输入两次字符串并存入二维数组的方法,通过定义数组、获取字符串和循环存储实现。
第5章 数组(C++版) 第二节 二维数组
例5.10 大部分元素是0的矩阵称为稀疏矩阵,假设有k个非0元素,则可把稀疏矩阵用 K*3的矩阵简记之,其中第一列是行号,第二列是列号,第三列是该行、该列下的非元素 的值。如: 0 0 0 5 写简记成: 1 4 5 //第1行第4列有个数是5 0 2 0 0 2 2 2 //第2行第2列有个数是2 0 1 0 0 3 2 1 //第3行第2列有个数是1 试编程读入一稀疏矩阵,转换成简记形式,并输出。 【分析】 本题中需要解决的主要问题是查找非零元素并记忆位置。将原始矩阵存于数组a。 转换后的矩阵存于数组b,当然b数组的行数可以控制在一个小范围内。
第五章 数组
第一节 一维数组 第二节 二维数组 第三节 字符数组和字符串类型
第二节 二维数组
一、二维数组的定义 当一维数组元素的类型也是一维数组时,便构成了“数组的数组”,即二维数组。二维数 组定义的一般格式: 数据类型 数组名[常量表达式1] [常量表达式2] ; 例如:int a[4][10]; a数组实质上是一个有4行、10列的表格,表格中可储存40个元素。第1行第1列对应a数组 的a[0][0],第n行第m列对应数组元素a[n-1][m-1]。 说明:当定义的数组下标有多个时,我们称为多维数组,下标的个数并不局限在一个或二 个,可以任意多个,如定义一个三维数组a和四维数组b: int a[100][3][5]; int b[100][100][3][5]; 多维的数组引用赋值等操作与二维数组类似。 二、二维数组元素的引用 二维数组的数组元素引用与一维数组元素引用类似,区别在于二维数组元素的引用必须给 出两个下标。 引用的格式为: <数组名>[下标1][下标2] 说明:显然,每个下标表达式取值不应超出下标所指定的范围,否则会导致致命的越界错 误。 例如,设有定义:int a[3][5]; 则表示a是二维数组(相当于一个3*5的表格),共有3*5=15个元素,它们是: a[0][0] a[0][1] a[0][2] a[0][3] a[0][4] a[1][0] a[1][1] a[1][2] a[1][3] a[1][4] a[2][0] a[2][1] a[2][2] a[2][3] a[2][4] 因此可以看成一个矩阵(表格),a[2][3]即表示第3行第4列的元素。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
8.2二维数组和字符
串
例:一个专业当中同学分为不同的班级,引进二维数组
一、二维数组
(一)二维数组的定义
1.定义方式:
数据类型数组名[常量表达式][常量表达式];
其中,第一个常量表达式代表数组的行数,第二个表达式代表数组的列数,元素个数=行数*列数
注意:第一个常量表达式可以为空,但第二个常量表达式不能为空。
例:int a[3][4]; /*表示整型二维数组,有3行4列*/ 该数组下标共有3×4个,即:
说明:在声明二维数组int[3][4]以后,可以把二维数组a认为含有3个元素的一维数组,这3个元素就是a[0],a[1],a[2],每一个元素就相当于一行,每一个元素又是含有4个元素的一维数组。
存储方式:在C语言中,二维数组是按行序优先存放的,先存放a[0]行元素,再存放a[1]行元素,最后存放a[2]行元素。
(二)二维数组元素的引用
形式:数组名[下标][下标]
其中,第一个下标为行下标,第二个下标为列下标。
例:引用第2行第3列的数组,即a[1][2](数组的行列下标从0开始)
注意:在二维数组中,不能整体引用整个数组,只能对单个元素进行操作。
main()
{
int a[2][3],i,j;
for(i=0;i<2;i++) /*引用二维数组的行*/
for(j=0;j<3;j++) /*引用二维数组的列*/
scanf("%d",&a[i][j]);
for(i=0;i<2;i++)
{
for(j=0;j<3;j++) /*加上{},实现每输出一行就换行的操作*/ printf("%d ",a[i][j]);
printf("\n");
}
}
(三)二维数组元素的初始化
(四)二维数组举例
将一个二维数组行和列的元素互换,存到另一个二维数组中。
输出: 程序:
#include<stdio.h> 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++) { for(j=0;j<=2;j++) {
printf(“%5d ”,a[i][j]);
a=
1 2 3 4 5 6
b=
1 4
2 5
3 6
b[j][i]=a[i][j];
}
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”);
}
}
二、字符数组和字符串
(一)字符数组
1.定义:用来存放字符数据的数组是字符数组。
字符数组中的一个元素存
放一个字符。
例:char c[7];
c[0]=’j’;c[1]=’i’;c[2]=’n’;c[3]=’’;c[4]=’h’;c[5
]=’u’;c[6]=’a’;
2.字符数组的初始化
(1)逐个字符赋值
char ch[5]={‘h’,’e’,’l’,’l’,’o’};
(2)用字符串常量
char ch[6]={“hello”};
char ch[6]=”hello”;
char ch[]=”hello”;
注意:把字符串赋给字符数组时,该数组定义的大小一定要比所赋予的字符
串的长度要多一个空间,用来存储字符串结束标志“\0”。
如果所赋予的字符
串长度比数组所定义的大小要小,那么没有被赋予的字符的数组元素将会被
ch[5]=”boy”;
二维字符数组初始化
char fruit[][7]={“apple”,”orange”,”grape”,”pear”,”peach”};
(二)字符串的输入输出
1.逐个字符输入输出。
用“%c”输入或输出一个字符。
例:用%c
main()
{
char str[5];
int i;
for(i=0;i<5;i++)
scanf(“%c”,&str[i]);
for(i=0;i<5;i++)
printf(“%c”,str[i]);
}
2.将整个字符串一次输入或输出。
用“%s”对字符串(string)输入或输出。
例:用%s
main()
{
char str[5];
scanf(“%s”,str);
printf(“%s”,str);
}
例1 main( )
{ char a[5]={‘H’,’e’,’l’,’l’,’o’};
printf(“%s\n”,a);
}
结果为:
例2 main( )
{ char a[ ]=“Hello”;
printf(“%s\n”,a);
}
结果为:
例3 main()
{
char a[]={'h','e','l','\0','l','o','\0'};
printf("%s\n",a);
}
结果为:
总结:用%s输出时,遇到”\0”结束;数组中有多个”\0”时,遇到第一个结束。
(三)字符串输入输出函数
包含在头文件stdio.h
1.字符串输出函数puts
格式:puts(字符数组)
功能:向显示器输出字符串
说明:字符数组必须以”\0”结束
2.字符串输入函数gets
格式:gets(字符数组)
功能:从键盘输入一个以回车结束的字符串放入字符数组中,并自动加“\0”
说明:输入串长度应小于字符数组维数
例 #include <stdio.h>
main( )
{ char string[80];
printf(“Input a string:”);
gets(string);
puts(string);
}
输入: Jin Hua
输出: Jin Hua
三、字符处理函数(包含在头文件string.h)
(一)字符串连接函数strcat(STRing CATenate字符串连接)例子:char str1[30]={“I am ”};
char str2[]={“Jin Hua”};
printf(“%s”,strcat(str1,str2));
结果为:I am Jin Hua
格式:strcat(字符数组1,字符数组2)
功能:把字符数组2连到字符数组1后面
返值:返回字符数组1的首地址
说明:(1)字符数组1必须足够大
(2)连接前,两串均以‘\0’结束;连接后,串1的‘\0’取消,新串
最后加‘\0’
(二)字符串拷贝函数strcpy(STRing CoPY字符串复制)
例子:char str1[10],str2[]={“china”};
strcpy(str1,str2);
格式:strcpy(字符数组1,字符串2)
功能:将字符串2,拷贝到字符数组1中去
返值:返回字符数组1的首地址
说明:(1)字符数组1必须足够大
(2)拷贝时‘\0’一同拷贝
(3)不能使用赋值语句为一个字符数组赋值
(三)字符串比较函数strcmp(STRing CoMPare字符串比较)例子:strcmp(“bei jing”,”Sheng yang”);
格式:strcmp(字符串1,字符串2)
功能:比较两个字符串
比较规则:对两串从左向右逐个字符比较(ASCII码),直到遇到不同字符或‘\0’为止
返值:返回int型整数,(1)若字符串1< 字符串2,返回负整数
(2)若字符串1> 字符串2,返回正整数
精品资料
(3)若字符串1= = 字符串2,返回零说明:字符串比较不能用“= =”,必须用strcmp
(四)字符串长度函数strlen(STRing LENgth字符串长度)例子:char str[10]={“China”};
printf(“%d”,strlen(str));
结果为:5
格式:strlen(字符数组)
功能:计算字符串长度
返值:返回字符串实际长度,不包括‘\0’在内
仅供学习与交流,如有侵权请联系网站删除谢谢11。