目录
C语言二维数组
一、二维数组
1、二维数组的定义
2、二维数组的引用
3、二维数组的初始化
编辑
二、字符数组
1、字符数组的定义
2、字符数组的初始化
编辑3、字符数组的结束标志
4、输出字符串
5、输入字符串
三、总结
C语言二维数组
一、二维数组
1、二维数组的定义
定义二维数组的一般形式为: 类型名: 数组名[常量表达式][常量表达式]
float data[1][2]
float 表明定义了一个浮点型的数组,data 是数组名;根据定义时的顺序,[1] 表示第1维数据,[2] 表示第2维数据。同样也直接用常量来表达,pay[2][3]; 也可以用常量和符号组合表达,pay[1+1][2]; 但 pay[n][3] 是不合法的,因为计算机不知道 n 是多少。
data[1][2]中第一维表示行第二维表示列,这里就是一行两列。data[0][0],data[0][1]
二维数组的行列,也会称作0行,0列。
二维数组定义时,指定数组长度的是常量表达式。
2、二维数组的引用
二维数组元素的引用形式为:数组名[下标][下标]
#include
int main()
{
int data[2,3];//定义 data为2×3的二维数组
data[1][2]=2;//数组中最后一个元素
return 0;
}
3、二维数组的初始化
在定义二维数组时,可以直接赋值,这个过程称为数组的初始化。 与一维数组类似,二维数组也有多种写法。
二维数组初始化时,一般有四种写法: 1)分行给二维数组赋初值; 2)将所有数据写在一个花括号内; 3)可以对部分元素赋初值; 4)对全部元素赋初值,1维的长度不指定,2维的长度不能省。(tips:当元素不能整除时,例,int a[][2]={1,2,3,4,5}; 计算结果为 5 / 2 = 2.5。此时,会向上取整,即结果为3,表示数组为3行2列,最后一个元素补0。)
int a[2][3] = {{1,2,3},{4,5,6}};//把第1个花括号内的数据给第1行的元素,第2个花括号内的数据赋给第2行元素
int a[2][3] = {1,2,3,4,5,6};//系统会按顺序对各元素赋初值
int a[2][3] = {{1},{5}};//使用按行赋值 int a[2][3]={{1},{5}} ,默认给每行第一个元素,余下值为0;
int a[][3] = {1,2,3,4,5,6};//系统会根据总个数和第2维长度计算出第1维的长度。
小结:(1)若定义了数组长度,赋值的元素不能超过数组长度; (2)若定义时不指定第1维数组长度,系统会根据总个数和第2维长度计算1维长度。
编程题1:依次输出二维数组 int a[3][4]={{1,2,3,4},{4,5,6,7},{8,9,10,11}};中的元素。试编程
#include
int main()
{
int a[3][4]={{1,2,3,4},{4,5,6,7},{8,9,10,11}};
int i,j;
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
{
printf("%d\t",a[i][j]);
}
printf("\n");
}
return 0;
}
编程题2:将一个二维数组行和列的元素互换,存在另一个二维数组中。试编程。
#include
int main()
{
int a[2][3]={{1,2,3},{4,5,6}};
int b[3][2],i,j;
for(i=0;i<=1;i++)
for(j=0;j<=2;j++)
b[j][i] = a[i][j];
/* 利用for循环输出数组b */
for(j=0;j<=2;j++)
{
for(i=0;i<=1;i++)
printf("%d\t",b[j][i]);
printf("\n");
}
return 0;
}
二、字符数组
1、字符数组的定义
定义字符数组的一般形式为: char 数组名[常量表达式]
2、字符数组的初始化
在定义时,可以直接赋值,这个过程称为字符数组的初始化。
字符数组初始化有四种写法: 1)定义数组时,对全部数组元素赋予初值; 2)定义数组时,只给部分元素赋值; 3)不定义数组长度,对全部数组元素赋予初值; 4)使用双引号,将字符串赋值给数组。
char c[4]={'m','e','t','a'};//定义字符数组 c ,有4个元素,依次赋值4个元素。
char c[5]={'m','e','t','a'};//定义字符数组 c 长度为5,但只有4个初值,其余的系统会自动赋值为 '\0'(空字符)。
char c[]={'m','e','t','a'};//定义字符数组 c 时,省略了数组长度,系统会自动根据初值个数确定长度。
char c[]={"meta"};//定义数组时,用双引号,将整个字符串赋值给数组,花括号可以省略不写。
3、字符数组的结束标志
C语言使用字符'\0'作为字符串的终止标志,当程序遇到该字符时即判定字符串结束。
程序运行时,第一次遇到该字符就表示结束,把它前面的组成一个字符串。 '\0' 也占一个位置
用字符串来初始化字符数组时,在不指定数组长度的情况下,会默认加一个 '\0'。
4、输出字符串
字符数组的输出,可以有多种写法:1. 逐个输出; 2. 整体输出。
1.逐个输出需要使用 for 循环,配合格式符 %c ,每循环一次,输出一个字符。
#include
int main()
{
char c[]={"I am fine"};
int i;
for(i=0;i<=8;i++)
printf("%c",c[i]);
printf("\n");
return 0;
}
2.此外,printf 也支持整体输出一般形式为:printf("%s\n", 数组名) 注意,输出整个字符串时,使用格式符为 %s,配合数组名。
C语言提供了一些执行功能的函数,例如,输出字符串的函数 puts(). 一般形式为:puts(字符数组名)
#include
int main()
{
char c[]={"I am lucky"};
puts(c);
return 0;
}
5、输入字符串
字符数组的输入有2种写法:1. 逐个输入;2. 整体输入。
1.使用 scanf() 输入字符串的格式为,scanf("%s", a)在定义字符数组长度时,一定要大于字符串的长度
#include
int main()
{
char a[5];
scanf("%s",a); //输入字符"good"
return 0;
}
注意,使用 scanf 输入字符数组时,不加地址符 &。
2.C语言也提供了输入字符串的函数,一般形式为:gets(字符数组名),gets函数中只能放一个数组名,不能写成 gets(a,b);
#include
int main()
{
char a[10];
gets(a);
return 0;
}
三、总结