矩阵转置行指针

qq_44977265 2019-04-25 04:33:34
/* T8_08_1 数组转置(行指针) 输入方阵的阶n(n<40),并输入这n阶方阵,输出该方阵的转置. 输入输出样例: 请输入方阵的阶n(n<40):3 1 2 3 4 5 66 7 8 9 转置结果为: 1 4 7 2 5 8 3 66 9 Press any key to continue 其中所有的中文均为计算机提示用户的输入. 最后一行的Press any key to continue是计算机结束程序时的输出. 程序的主要框架已经给出,请仅在 ********** Begin ********** ********** End *********** 注释对之间的空行中添加你的代码,任何修改该两行注释,以及修改注释外代码均将被判失败 */ #include <stdio.h> #define N 10 void f(int(*a)[N], int n) { /********** Begin **********/ /********** End ***********/ } int main() { int a[N][N], n, i, j; scanf("%d", &n); for (i = 0; i<n; i++) for (j = 0; j<n; j++) scanf("%d", &a[i][j]); f(a, n); for (i = 0; i<n; i++) { for (j = 0; j<n; j++) printf("%d ", a[i][j]); printf("\n"); } return 0; } 输入 输出 样例输入 3 1 2 3 4 5 66 7 8 9 样例输出 1 4 7 2 5 8 3 66 9
...全文
318 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
自信男孩 2019-04-25
  • 打赏
  • 举报
回复
#include <stdio.h>

#define N 10

void f(int(*a)[N], int n)
{
/********** Begin **********/
int i, j, tmp;

for (i = 0; i < n; i++)
for (j = i; j < n; j++) {
if (i != j) {
tmp = a[i][j];
a[i][j] = a[j][i];
a[j][i] = tmp;
}
//printf("a[%d][%d] = %d\n", i, j, a[i][j]);
}

/********** End ***********/

}

int main()
{
int a[N][N], n, i, j;
scanf("%d", &n);
if (n > N) //防止n过大导致数组越界
n = N;
int cnt = 1;
for (i = 0; i<n; i++)
for (j = 0; j<n; j++)
a[i][j] = cnt++;
//scanf("%d", &a[i][j]);
for (i = 0; i<n; i++) {
for (j = 0; j<n; j++)
printf("%2d ", a[i][j]);
putchar(10);
}
putchar(10);
f(a, n);
for (i = 0; i<n; i++)
{
for (j = 0; j<n; j++)
printf("%2d ", a[i][j]);
printf("\n");
}
return 0;
}


供参考!

70,021

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧