C题目:
定义一个8*8的二维数组,并给这个数组赋初值。并用循环结构编写函数solve,函数solve的功能是用求出该二维数组的转置矩阵,并把转置后的矩阵显示出来。(注意:要在关键语句旁边做注解,说明该语句的作用,并画出程序的流程图)转置前的矩阵:
1 2 3 4 5 6 7 8
9 10 11 12 13 14 15 16
17 18 19 20 21 22 23 24
25 26 27 28 29 30 31 32
33 34 35 36 37 38 39 40
41 42 43 44 45 46 47 48
49 50 51 52 53 54 55 56
57 58 59 60 61 62 63 64
转置后的矩阵:
1 9 17 25 33 41 49 57
2 10 18 26 34 42 50 58
3 11 19 27 35 43 51 59
4 12 20 28 36 44 52 60
5 13 21 29 37 45 53 61
6 14 22 30 38 46 54 62
7 15 23 31 39 47 55 63
8 16 24 32 40 48 56 64
#include <stdio.h>
void swap(int* a, int* b) {
int c;
c = *a;
*a = *b;
*b = c;
}
// 定义函数solve来求解转置矩阵
void solve(int arr[8][8]) {
int i, j;
int temp;
// 使用两层循环遍历数组并进行转置操作
for (i = 0; i < 8; i++) {
for (j = 0; j < i; j++) {
swap(&arr[i][j], &arr[j][i]);
}
}
}
void pArray(int arr[][8]) {
int i, j;
for (i = 0; i < 8; i++) {
for (j = 0; j < 8; j++) {
printf("%3d", arr[i][j]);
}
printf("\n");
}
}
int main() {
int i, j;
int arr[8][8]; // 定义一个8x8的二维数组
// 给二维数组赋初值
for (i = 0; i < 8; i++) {
for (j = 0; j < 8; j++) {
arr[i][j] = i * 8 + j + 1; // 初值为每个位置在二维数组中的顺序
}
}
printf("转置前的矩阵:\n");
pArray(arr);
// 调用solve函数求解转置矩阵
solve(arr);
// 显示转置后的矩阵
printf("转置后的矩阵:\n");
pArray(arr);
return 0;
}