#import <Foundation/Foundation.h>
#define kWork 5
int main(int argc, const char * argv[])
{
#if kWork == 1
//二维数组
//定义数组 : 数据类型 数组名[行数][列数] = 初值(多个元素赋初值要加大括号)
//列数必须指定
int a[4][5] = {0};
//给二维数组中的元素赋值
/*
//给第一行元素赋值
for (int i = 0; i < 5; i++) {
a[0][i] = i + 1;
}
//给第二行元素赋值
for (int i = 0; i < 5; i++) {
a[1][i] = i + 1 + 5;
}
//给第三行元素赋值
for (int i = 0; i < 5; i++) {
a[2][i] = i + 1 + 5 * 2;
}
//给第四行元素赋值
for (int i = 0; i < 5; i++) {
a[3][i] = i + 1 + 5 * 3;
}
//给第五行元素赋值
for (int i = 0; i < 5; i++) {
a[4][i] = i + 1 + 5 * 4;
}
*/
//一次性赋值
//外层循环控制行数, 内层循环控制列数
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 5; j++) {
a[i][j] = j + 1 + 5 * i;
printf("%-2d ", a[i][j]);
}
printf("\n");
}
//行列交换, 存放到另外一个数组中
printf("交换行列后的数组为:\n");
int b[5][4] = {0};
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 4; j++) {
b[i][j] = a[j][i];
printf("%-2d ", b[i][j]);
}
printf("\n");
}
#elif kWork == 2
//2 一个3行4列数组, 找出最大值, 并输出所在行和列
int c[3][4] = {0};
int max = 0;//存储最大值
int row = 0, column = 0;//row记录行数, column记录列数
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 4; j++) {
c[i][j] = arc4random() % 6 + 20;
printf("%-2d ", c[i][j]);
}
printf("\n");
}//给数组元素赋值
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 4; j++) {
if (max < c[i][j]) {
max = c[i][j];//存储最大值
row = i;//记录最大值行数
column = j;//记录最大值列数
}
}
}//遍历数组元素,找出其中的最大值,记录最大值的行数和列数
//将所有的最大值的行与列输出
printf("最大值的行数与列数为:\n");
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 4; j++) {
if (max == c[i][j]) {
printf("第%d行 %d列\n", i + 1, j + 1);
}
}
}
printf("max = %d\n", max);
#elif kWork == 3
//二维数组定义时, 行数可以省略, 但是第二维必须要指定, 列数必须要给, 列数是换行的标准
//并且第一维下标与第二维下标都必须是常量或者常量表达式
int a[][3] = {1, 2, 3, 4, 5, 6, 7};
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
printf("%d ", a[i][j]);
}
printf("\n");
}
#elif kWork == 4
//字符串数组, 存放字符串的数组叫做字符串数组, 只不过字符串是存储在一维的字符数组中, 所以本质上是一个二维的字符数组
char str[4][10] = {"Frank", "Duke", "iPhoneo", "vaercly"};
unsigned long maxLength = 0;
for (int i = 0; i < 4; i++) {
if (maxLength < strlen(str[i])) {
maxLength = strlen(str[i]);
}
}
for (int i = 0; i < 4; i++) {
if (maxLength == strlen(str[i])) {
printf("%s %lu\n", str[i], maxLength);
}
}//得到最长单词之后, 拿最长的单词长度与字符串的长度作比较, 若发现相同, 就立即输出该字符串
#elif kWork == 5
//数组名代表数组的首地址, 是一个常量地址, 不可修改
// char ad[10][20] = {"vaercly", "nokia", "chuizi", "iOS", "iPhone", "iMac", "android", "windows", "blackberry", "xiaomi"};
char ad[10][20] = {0};
printf("请输入10个名字:\n");
for (int i = 0; i < 10; i++) {
scanf("%s", ad[i]);
}
for (int i = 0; i < 9; i++) {
for (int j = 0; j < 9 - i; j++) {
if (strcmp(ad[j], ad[j + 1]) > 0) {
//对字符串进行赋值操作, 要使用strcpy函数
char temp[20] = {0};
strcpy(temp, ad[j + 1]);
strcpy(ad[j + 1], ad[j]);
strcpy(ad[j], temp);
}
}
}
printf("排好后:\n");
for (int i = 0; i < 10; i++) {
printf("%s ", ad[i]);
}
printf("\n");
#endif
return 0;
}
本文详细介绍了二维数组的各种操作,包括初始化、赋值、查找最大值及其位置、行列转置等,并通过具体示例展示了如何实现这些功能。
1614

被折叠的 条评论
为什么被折叠?



