声明一个3×2的二维整型数组arr,其数组元素通过控制台输入。输出输入的数组,转置,输出转置后的数组。要求:1) 声明一个以指向数组行的指针变量为参数的函数并在main函数中调用,该函数把arr中的元素转置;2) 不允许使用数组下标访问数组元素或为数组元素赋值。
2条回答 默认 最新
- CSDN专家-深度学习进阶 2022-03-05 09:18关注
#include<stdio.h> #define M 10 #define N 10 void Transpose(int (*a)[N], int (*at)[M], int m, int n); void InputMatrix(int (*a)[N], int m, int n); void PrintMatrix(int (*at)[M], int n, int m); int main() { int s[M][N],st[N][M],m,n;// 1 2 3 4 5 6 7 8 9 printf("Input m, n:"); scanf("%d %d",&m,&n); InputMatrix(s,m,n); Transpose(s,st,m,n); printf("The transposed matrix is:\n"); PrintMatrix(st,n,m); return 0; } void Transpose(int (*a)[N], int (*at)[M], int m, int n) { int i,j; for(i=0; i<m; i++) for(j=0; j<n; j++) *(*(at+j)+i)=*(*(a+i)+j); } void InputMatrix(int (*a)[N], int m, int n) { int i,j; printf("Input %d*%d matrix:\n",m,n); for(i=0; i<m; i++) for(j=0; j<n; j++) scanf("%d",*(a+i)+j); } void PrintMatrix(int (*at)[M], int n, int m) { int i,j; for(i=0; i<n; i++) { for(j=0; j<m; j++) printf("%3d",*(*(at+i)+j)); printf("\n"); } }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥20 ARKts悬浮窗和快捷方式问题
- ¥15 comparecluster没有办法kegg
- ¥15 远程访问linux主机超时
- ¥15 odoo17存货管理优势于中国国内该行业传统ERP或MES的详细解读和举例
- ¥15 CPU卡指令整合指令数据都在图片上
- ¥15 odoo17处理受托加工产品
- ¥15 如何用MATLAB编码图三的积分
- ¥15 圆孔衍射光强随孔径变化
- ¥15 MacBook pro m3max上用vscode运行c语言没有反应
- ¥15 ESP-PROG配置错误,ALL ONES