1.二维数组
1.二维数组的定义:
数据类型 数组名[数组容量1][数组容量2]
eg int arr[3][4] ;
也就代表的是一个整形的3行4列的数组arr。
2.二维数组的引用:
数组名[下标1][下标2];
下标可以是整型表达式,如:a[2-1][2*2-1]
下标可以是已经有值的变量或数组元素, 如a[2*x-1][b[3][1]]
数组元素可以出现在表达式中, 如:b[1][2]=a[2][3]/2
2.二维数组的初始化
①分行赋值:
int a[3][4]={{1,2,3,4},{5,6,7,8},{7,8,9,10}};
注意:花括号里面一个花括号代表一行;3行就要三个花括号。
②将所有数据写在一个花括号里:(按照存储顺序赋值)
int a[3][4]={1,2,3,4,5,6,7,8,7,8,9,10};
③进行部分赋值:
int a[3][4]={{1,2},{1,2},{0}}; 其余自动补零。
④若对全部元素赋初值,则定义数组时可不说明第一维的长度(一对方括号不能省),第二维的长度必须指明。如:
int a[][4]={1,2,3,4,5,6,7,8,7,8,9,10};
⑤分行赋值时也可省略第一维的长度说明:
int a[][4]={{0,5,6}{1,2},{2}};
3.字符数组
用于存放字符型数据的数组称为字符数组。
在C语言中,字符数组的一个元素只能存放一个字符。
字符数组的定义:
数据类型 数据名[常量表达式];
char ch1[5]; 一维字符数组
数据类型 数据名[常量表达式1][常量表达式2];
char ch2[3][4]; 二维字符数组
4.字符数组的初始化
1.逐个字符赋值
char c[5]={'H','e','l','l','o'};
注意:
① 如果定义时不初始化,元素值不确定;
② 如果提供的字符个数大于数组长度,则按语法错误处理;
如果字符个数小于数组长度,后面的元素自动为空字符(‘\0’);
③ 如果提供的字符个数与数组长度相同时,可省略数组长度,系统会自动确定元素个数。适合字符个数较多时。
2.字符串赋值
char c[]={"Hello boys"};
char c[]="Hello girls"; 都可以
注意:字符串赋值的话,后面有个'\0';因为C语言规定,字符串以字符'\0'结束。
5.字符数组的输入输出
①对字符数组的每一个元素进行输入或者输出
eg:char ch[10];
for(i=0;i<10;i++)
{
scanf("%c",ch[i]);
printf("%c",ch[i]);
}
②将数组中的所有字符当作一个字符串进行输入或者输出。
eg: char str[100];
scanf("%s",str);
printf("%s",str);
注意:在使用格式说明符%s进行输入输出时,其输入输出项均为数组名。
6.知识补充(字符串处理函数)
1.fgets函数:从键盘接受字符串到字符数组
char str[64]={0};
fgets(str,64,stdin);
注意:64个数只能存63个最后一个还是'\0'的。
2.strcat函数:进行连接字符串的
strcat(字符数组1,字符数组2); 把2拼接到1后面。
注意:①字符数组1的长度必须足够大,可以容纳被连接的字符串
②连接后系统将自动取消字符串1后面的结束符'\0'。
③“字符串2”可以是字符数组名,也可以是字符串常量,如
strcat(s1,"cdef") 。
3.strcpy函数:进行字符串的拷贝
eg:
char s2[ ]="abcde";
char s1[10];
strcpy(s1,s2);
printf("%s\n",s1);
输出结果为:abcde
注意:①字符数组1的长度必须足够大,可以容纳被连接的字符串。
②“字符串2”可以是字符数组名,也可以是字符串常量,如
strcat(s1,"abcde")。
4.strcmp函数:比较两个字符串对应位置字符ASCII码的大小。
eg: char s1[]="Helloboys";
char s2[]="Hellogirls";
可以看出字符数组s1和s2前五个元素一样,所以比较后面的,b的ascii码值小于g的ascii码值,所以s2>s1.
5. strlen函数:测试字符串中包含的字符的实际个数。不含‘\0’。
strlen(字符数组);
eg:char str[10]="abcde";
printf("%d\n",strlen(s)); 输出结果为5,不含'\0'。
注意:在使用这个函数时,“字符串”可以是字符数组名,也可以是字符串常量。
6.puts函数:用来输出字符串的
puts(字符数组名/字符串);
注意:输出的字符串中可包含转义字符。
eg:char str[]="China\nBeijing";
puts(str);
输出结果为:
China
Beijing