好友
阅读权限10
听众
最后登录1970-1-1
|
本帖最后由 zhaoqingdz 于 2022-7-28 14:01 编辑
本人初学自学C语言,经常会遇到各种难题,下面有题关于指针的,必须要用指针来完成的矩阵变化,题目是“下列程序完成对n阶矩阵(n为奇数)的变换,将原矩阵左下角n/2阶子块中的数据与右上角n/2阶子块中的数据作交换,显示交换过子块后的n阶矩阵。”
以下是本人写的代码:
#include<stdio.h>
void swap(int *x, int *y)
{
int t;
t = *x;
*x = *y;
*y = t;
}
void change(int a[][5], int n)
{
int i, j;
for (i = 0; i < n / 2;i++)
for (j = n / 2 + 1; j < n; j++)
swap(&a[j], &a[i + n / 2 + 1][j - (n / 2 + 1)]);
}
int main()
{
int a[5][5] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24 };
int i, j,k=0;
int n = 5;
change(a, n);
for (i = 0; i < 5; i++)
{
for (j = 0; j < 5; j++)
{
printf("%d ", a[j]);
k++;
}
if (k % 5 == 0)
printf("\n");
}
return 0;
}
各位大佬可以讨论下,还有其他实现写法吗? |
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|