习题1:找到数组中元素最大的值,
- 思路:
1. 定义一个二维数组arr[3][4],并初始化 2. 先认为元素arr[0][0]最大,将它赋值给变量max 3. for循环,代表行下标的循环变量i从0开始,<3 时进入循环 3.1 for循环,代表列下标的循环变量j从0开始,<4 时进入循环 3.1.1 遍历二维数组,判断max是否小于arr[i][j] 3.1.1 如果是, 那么,max保存arr[i][j]的值 将此时的行下标i保存在变量row中 将此时的列下标j保存在变量column中 4. 打印最大的数在第几行第几列
- 代码:
#include <stdio.h> int main(int argc, char const *argv[]) { int arr[3][4] = {{1,2,3,4}, {9,7,4,6}, {-1,2,0,8}}; int i, j; //遍历二维数组 int max = arr[0][0]; //不妨先认为元素arr[0][0]最大 int row; //记录最大数的行 int column; //记录最大数的列 for(i=0; i<3; i++){ for(j=0; j<4; j++){ if(max < arr[i][j]){ max = arr[i][j]; row = i; column = j; } } } printf("数组中最大的元素在第%d行第%d列,是%d", row, column ,max); return 0; }
习题2:实现矩阵的转置,
- 思路:根据公式 A[i;j] = AT[j;i],用循环嵌套遍历即可。
#include <stdio.h> int main(int argc, char const *argv[]) { int i, j; int a[4][3] = {{1,2,3}, {5,6,7}, {9,10,11}, {13,14,15}}; int a_T[3][4]; for (i=0; i<4; i++){ for (j=0; j<3; j++){ a_T[j][i] = a[i][j]; } } puts("矩阵转置后为"); for (i=0; i<3; i++){ for (j=0; j<4; j++){ printf("%-4d", a_T[i][j]); } putchar('\n'); } return 0; }