二维数组基础
二维数组是处理表格类数据(如Excel表格)的利器,可以理解为”数组的数组”。
定义方式
“`c
数据类型 数组名[行数][列数];
“`
例如:
“`c
int a[3][4]; // 3行4列的整型数组
“`
初始化方法
1. **全部初始化**
“`c
int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12};
// 或按行初始化更清晰
int a[3][4] = {
{1,2,3,4},
{5,6,7,8},
{9,10,11,12}
};
“`
2. **部分初始化**
“`c
int a[3][4] = {1,2,3,4,5,6}; // 剩余自动补0
int a[3][4] = {
{1,2},
{5,6},
{9,10}
};
“`
3. **初始化技巧**
“`c
int a[][4] = {1,2,3,4}; // 自动计算行数
int a[3][4] = {0}; // 全部初始化为0
“`
### 访问元素
“`c
a[行下标][列下标] // 从0开始计数
“`
二维数组的本质
二维数组实际上是”一维数组的一维数组”:
“`c
int[4] a[3]; // 包含3个int[4]类型的一维数组
“`
内存中是**按行连续存储**的,先存第一行,再存第二行…
二维数组练习
1. 输入并计算总和
“`c
#include
int main() {
int a[3][4];
int sum = 0;
// 输入数据
for(int i=0; i
for(int j=0; j
scanf(“%d”, &a[i][j]);
sum += a[i][j];
}
}
printf(“总和: %dn”, sum);
return 0;
}
“`
2. 找出最大值
“`c
#include
int main() {
int a[3][4];
int max = a[0][0]; // 假设第一个元素最大
// 输入数据
for(int i=0; i
for(int j=0; j
scanf(“%d”, &a[i][j]);
if(a[i][j] > max) {
max = a[i][j];
}
}
}
printf(“最大值: %dn”, max);
return 0;
}
“
字符二维数组(字符串数组)
用于存储多个字符串,每个字符串占一行:
“`c
char 数组名[字符串数量][每个字符串最大长度];
“`
例如:
“`c
char s[5][10]; // 可存储5个最大9字符的字符串(留1位给”)
“
初始化
“`c
char s[5][10] = {
“hello”,
“world”,
“china”,
“english”,
“america”
};
“`
内存布局:
“`
s[0]: h e l l o
s[1]: w o r l d
s[2]: c h i n a
s[3]: e n g l i s h
s[4]: a m e r i c a
“`
字符串数组练习
1. 找出最大字符串
“`c
#include
#include
int main() {
char s[5][10];
char max[10];
// 输入5个字符串
for(int i=0; i
gets(s[i]);
}
strcpy(max, s[0]); // 假设第一个最大
for(int i=1; i
if(strcmp(s[i], max) > 0) {
strcpy(max, s[i]);
}
}
printf(“最大字符串: %sn”, max);
return 0;
}
“`
2. 字符串逆序排列
“`c
#include
#include
int main() {
char s[5][10];
char temp[10];
// 输入5个字符串
for(int i=0; i
gets(s[i]);
}
// 逆序排列
for(int i=0; i
strcpy(temp, s[i]);
strcpy(s[i], s[4-i]);
strcpy(s[4-i], temp);
}
// 输出结果
for(int i=0; i
puts(s[i]);
}
return 0;
}
“`
3. 字符串排序(按字母顺序)
“`c
#include
#include
int main() {
char s[5][10];
char temp[10];
// 输入5个字符串
for(int i=0; i
gets(s[i]);
}
// 冒泡排序
for(int i=0; i
for(int j=0; j
if(strcmp(s[j], s[j+1]) > 0) {
strcpy(temp, s[j]);
strcpy(s[j], s[j+1]);
strcpy(s[j+1], temp);
}
}
}
// 输出排序结果
for(int i=0; i
puts(s[i]);
}
return 0;
}
“`
注意事项
1. 二维数组访问时要注意下标不要越界
2. 字符串操作要确保目标数组足够大,能容纳结果
3. 使用字符串函数前要包含“
4. 输入字符串时建议使用`fgets()`替代不安全的`gets()`
通过掌握这些知识,你已经能够处理大多数二维数据和字符串数组相关的问题了!多加练习,你会更加熟练。
文章来源于互联网:C语言:二维数组和字符串数组
相关推荐: 文心一言用户数突破2亿 百度官宣三大AI开发神器
在日益激烈的竞争中,百度正在中国AI市场努力保持领导者地位,文心一言用户规模突破2亿,较去年年底翻了一番。 4月16日周二,以“创造未来”为主题的Create 2024百度AI开发者大会在深圳国际会展中心举办。百度CEO李彦宏在会议上指出,文心一言目前拥有2亿…
5bei.cn大模型教程网










