练习二维数组作为函数参数: (1)编写函数Input,实现输入N*N个整数存入二维数组a; (2)编写函数Output,实现以矩阵形式输出二维数组a; (3)编写函数Change,实现对二维数组a的转置; (4)编写主函数main(内容如下),调用上述函数,输入9个整数存入3*3矩阵,输出该矩阵的转置。 int main() { int a[N][N]; Input(a); printf("转置前:\n"); Output(a); Change(a); printf("转置后:\n"); Output(a); }
时间: 2024-02-19 08:00:11 浏览: 107
好的,我会为您解答这道编程题。
以下是完整的代码实现,其中包括了三个函数 Input、Output 和 Change:
```c
#include <stdio.h>
#define N 3
// 输入函数:输入N*N个整数存入二维数组a
void Input(int a[][N]) {
printf("请输入%d*%d的矩阵:\n", N, N);
for(int i = 0; i < N; i++) {
for(int j = 0; j < N; j++) {
scanf("%d", &a[i][j]);
}
}
}
// 输出函数:以矩阵形式输出二维数组a
void Output(int a[][N]) {
for(int i = 0; i < N; i++) {
for(int j = 0; j < N; j++) {
printf("%d ", a[i][j]);
}
printf("\n");
}
}
// 转置函数:对二维数组a进行转置
void Change(int a[][N]) {
for(int i = 0; i < N; i++) {
for(int j = i+1; j < N; j++) {
int temp = a[i][j];
a[i][j] = a[j][i];
a[j][i] = temp;
}
}
}
int main() {
int a[N][N];
Input(a);
printf("转置前:\n");
Output(a);
Change(a);
printf("转置后:\n");
Output(a);
return 0;
}
```
在这个程序中,首先定义了一个常量 N,表示矩阵的维度为 N*N。然后分别编写了三个函数 Input、Output 和 Change。
函数 Input 接受一个二维数组作为参数,用于输入 N*N 个整数,并将它们存入该二维数组中。具体实现中,我们使用了两个嵌套的 for 循环,依次输入每一个数组元素。
函数 Output 同样接受一个二维数组作为参数,用于将该数组以矩阵形式输出到屏幕上。具体实现中,我们同样使用了两个嵌套的 for 循环,依次输出每一个数组元素,并在每行输出结束后加上一个换行符。
函数 Change 接受一个二维数组作为参数,用于对该数组进行转置。具体实现中,我们使用了两个嵌套的 for 循环,依次交换每一对对称的数组元素。
最后,在主函数 main 中,我们首先定义了一个二维数组 a,然后分别调用了函数 Input、Output 和 Change,以实现输入、输出和转置矩阵的功能。
运行该程序,可以得到如下的输出结果:
```
请输入3*3的矩阵:
1 2 3
4 5 6
7 8 9
转置前:
1 2 3
4 5 6
7 8 9
转置后:
1 4 7
2 5 8
3 6 9
```
可以看出,程序正确地实现了输入、输出和转置矩阵的功能。
阅读全文