c语言关于二维数组的源代码,C语言--关于二维数组

#import

int main(int argc, const char * argv[])

{

@autoreleasepool {

#pragma mark-----------二维数组

int a[3][4]={

{1,2,3,4},

{5,6,7,8},

{12,10,11,12}

};

//打印二维数组

for (int i = 0; i<3; i++)

for (int j =0; j<4; j++) {

printf(" %d ",a[i][j]);

}

printf("\n");

}

//把行和列交换,放到新的二维数组

int b[4][3]={0};

for (int i = 0; i<3; i++) {

for (int j =0; j<4; j++) {

b[j][i]=a[i][j];

}

}

printf("\n");

for (int i =0; i<4; i++) {

for (int j =0; j<3; j++) {

printf(" %d ",b[i][j]);

}

printf("\n");

}

//找出二维数组中的最大值,并把行和列表示出来

int max = 0;

for (int i =0; i<3; i++) {

for (int j =0; j<4; j++) {

if (max

max=a[i][j];

}

}

}

printf("max=%d",max);

for (int i = 0; i<3; i++) {

for (int j = 0; j<4; j++) {

if (max==a[i][j]) {

printf("第%d行,第%d列 ",i+1,j+1);

}

}

}

#pragma mark--------------总结

/**

* 1:求和算法(累加)

* 2:求最大值算法是(逐一比较)

* 3:排序算法是(先比较再交换)

* 4:二维数组运用,地图,扫雷,电影院,(选了就是1,没选就是0)

*/

#pragma mark--------------字符串数组

/**

* 1:访问某个字符串(数组名[第一维下标])

* 2:访问某个字符(数组名[第一维下标][第二维下标])

*/

char str[3][10]={"iPhone","Android","Win8"};

//1操作字符串(拷贝strcpy 拼接strcat 长度strlen 比较strcmp)

strcpy(str[2], "lanou");

printf("\n%s ",str[2]);

//2操作单个字符,数组名[第一维下标][第二维下标]

//通过双下标精确定位 要操作的字符

//字符串可以直接strcpy

//字符可以直接赋值

str[1][3]='a';

printf("\n%s",str[1]);

//练习题

//1,输入三个单词,找出最长的单词

long length = 0;

for (int i =0; i<3; i++) {

if (length

length=strlen(str[i]);

}

}

//%lu

printf("\n%ld",length);

for (int i =0; i<3; i++) {

if (length == strlen(str[i])) {

printf("\n最长的单词:%s \n",str[i]);

}

}

//2,十个单词,排序(小--大)

for (int i = 0; i<3-1; i++) {

//注意

for (int j =0; j<3-1-i; j++) {

if (strcmp(str[j], str[j+1])>0) {

char temp[10]={0} ;

strcpy(temp, str[j]);

strcpy(str[j], str[j+1]);

strcpy(str[j+1], temp);

}

}

}

for (int i = 0; i<3; i++) {

printf(" %s ",str[i]);

}

#pragma mark-------------多维数组

//1:多维数组,维数大于2

//2:for循环,第一层层数,第二层行数,第三层列数

//3:多个一维成二维,多个二维成三维

#pragma mark--------------作业

//1、(**)有一个3行4列的二维数组,要求编程找出最大的元素,并输出所在的行和列。

//2、(**)输入6个字符串,并对它们按从小到大的顺序排序后输出.

//3、(****)找出一个二维数组中的“鞍点”,即该位置上的元素在该行中最大,在该列中最小(也可能没有“鞍点”),打印有关信息。(提示:注意特殊情况

//解题思路(分析)

//4 3 2 1

//5 1 3 9

//6 7 8 3

//1,定义一个二维数组

//2,判断有无鞍点

//3,在该行中最大(最大值)

//4,在该列中最小(最小值)

//5,打印输出

//1,定义一个二维数组

// int c[3][4]={

// {4,3,2,1},

// {5,1,3,9},

// {6,7,8,3},

// }, min = 0,maxs = 0,d = 0,e = 0;//maxs行最大数,min为列最小数,d,e为记下下标的变量.

// int flag = 0;

//

// for (int i = 0; i<3; i++) {

// maxs = c[i][0];//行最大数

// for (int j = 0; j<4; j++) {

// if (maxs

// maxs = c[i][j];

// //d,e为记下下标的变量

// d=i;

// e=j;

// }

//

// min = c[0][e];//min为列最小数

// for (int k = 0; k<3; k++) {

// if (min > c[k][e] ) {

// min=c[k][e];

// }

// }

// }

//

// if (min ==maxs) {

// printf("\n鞍点为:%d,位于%d行,%d列",maxs,d+1,e+1);

// flag=1;

// }

// }

// if (flag == 0) {

// printf("该二维数组无鞍点");

// }

//2,判断有无鞍点

//3,在该行中最大(最大值)

//4,在该列中最小(最小值)

//5,行和列相等

// for (int i=0 ; i<3; i++) {

// for (int j = 0; j<4; j++) {

// if (min>c[j][j]) {

// min = c[j][j];

// }

// }

// if (min

// min = c[i][i];

// }

// }

// printf("\n %d ",min);

int a1[2][3]={

{1,2,3},

{4,5,6},

};

int max1 = 0;

int min1 = 0;

int index1=0;

int index2=0;

for (int i =0; i<2; i++) {

max1=a1[i][0];

for (int j = 0; j<3; j++) {

if (max1

max1=a1[i][j];

index1 = i;

index2 = j;

}

min1=a1[0][index2];

for (int k =0; k<2; k++) {

if (min1>a1[k][index2]) {

min1=a1[k][index2];

}

}

}

if (max1==min1) {

printf("\n鞍点是%d,在第%d行,在第%d列",min1,index,index2);

}

}

// 4、(**)随机生成一个三维数组,编程求深度的平均值,保存在一个二维数组中。

//随机生成一个三维数组

int a2[2][3][4]={0};

for (int i =0; i<2; i++) {

for (int j = 0; j<3; j++) {

for (int z= 0; z<4; z++) {

a2[i][j][z]=arc4random()%11+10;

}

}

}

}

return 0;

}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值