一、二维数组的创建
1.二维数组的创建
type arr_name[常量1][常量2];
例如:
int arr[3][5];
double data[2][8];
char ch[][];
//3表示数组有三行,5代表数组每一行有5个元素。int代表数组中的元素为整数。
2.二维数组的初始化
像一维数组一样,同样使用大括号初始化
//不完全初始化,剩余元素默认为0;
int arr1[3][5] = {1,2};
int arr2[3][5] = {0};
//按照行初始化,第2,3,4列都为0;
int arr3[3][5] = {{1,2},{3,4},{5,6}}
//完全初始化
int arr4[3][5] = {1,2,3,4,5, 2,3,4,5,6, 3,4,5,6,7};
//初始化时候可以省略行,但是不能省略列
int arr4[][5] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
二、二维数组的使用
3.二维数组的输入与输出
c语言规定数组的索引要从0开始,包括行与列
#include<stdio.h>
int main(){
int arr[3][5] = {0};
int i = 0;
for(i = 0; i < 3; i++) {
int j = 0;
for (j = 0; i < 5; j++) {
scanf("%d",&a[i][j]);
}
}
for(i = 0; i < 3; i++) {
int j = 0;
for (j = 0; i < 5; j++) {
printf("%d",a[i][j]);
}
printf("\n");
}
return 0;
}
三、实操练习
字符从两端移动,到中间汇聚
前提:
strlen求的是字符串的长度,统计的是字符串中/0之前的长度。
sizeof是数组所占内存空间的大小(单位是字节),包括/0。
#include<stdio.h>
#include<string.h>
int main() {
char arr1[] = "welcome to China!!!";
char arr2[] = "###################";
int left = 0;
int right = strlen(arr1) - 1;
while(left <= right) {
arr2[left] = arr1[left];
arr2[right] = arr1[right];
left++;
right--;
printf("%s\n", arr2);
}
return 0;
}
输出以下
w#################!
we###############!!
wel#############!!!
welc###########a!!!
welco#########na!!!
welcom#######ina!!!
welcome#####hina!!!
welcome ###China!!!
welcome t# China!!!
welcome to China!!!
关于C99中的变长数组
在C99标准中,变长数组(Variable Length Arrays, VLA)是一种允许数组的大小在运行时动态确定的特性。与传统的静态数组不同,变长数组的大小不是在编译时确定,而是在程序运行时动态指定
#include <stdio.h>
void example(int n) {
int array[n]; // n是一个运行时确定的值
for (int i = 0; i < n; i++) {
array[i] = i + 1;
}
for (int i = 0; i < n; i++) {
printf("%d ", array[i]);
}
printf("\n");
}
int main() {
int size;
printf("Enter the size of the array: ");
scanf("%d", &size);
example(size);
return 0;
}
输入5输出1 2 3 4 5;
Comments 3 条评论
后视镜里的世界
一级
2
3
4
5
6
这是一级标题
这是二级标题