gpt4 book ai didi

在c中顺时针打印4X4矩阵

转载 作者:行者123 更新时间:2023-11-30 20:41:04 26 4
gpt4 key购买 nike

嗨,我正在尝试按顺时针方向打印 4 x 4 矩阵,

输入:

1  2  3  4
12 13 14 5
11 16 15 6
10 9 8 7

预期输出是:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

我的代码是:

 int MAXR=3,MAXC=3,MINR=0,MINC=0;

while(MINR < MAXR && MINC < MAXC)
{
for(i=MINC;i<=MAXC;i++)
{
printf("%d ",arr[MINR][i]);
}

for(j=MINR+1;j<=MAXR;j++)
{
printf("%d ",arr[j][MAXC]);
}

for(i=MAXC-1;i>=MINC;i--)
{
printf("%d ",arr[MAXR][i]);
}

MINR++;
if((MINR%2)==0)
{
MINC=MINC+2;
}
//MAXR--;
//MAXC--;
//printf("\nMAXR=%d MINR=%d\n",MAXR,MINR);
for(j=MAXR-1;j>MINR;j--)
{
printf("%d ",arr[j][MINC]);
}

MAXR--;
MAXC--;
}
<小时/>

但是输出是:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 11

请帮我修复这个错误!谢谢!

输出为:

最佳答案

我希望您现在已经解决了您的缺陷。但这是一个有趣的规范,所以这是我的版本:

gcc (GCC) 4.7.3: gcc -Wall -Wextra -std=c99spiral.c

#include <stdio.h>

int main() {

int matrix[4][4] = {
{ 1, 2, 3, 4 },
{ 12, 13, 14, 5 },
{ 11, 16, 15, 6 },
{ 10, 9, 8, 7 } };

int edge = sizeof(matrix[0]) / sizeof(int) - 1;
int i = 0;
int j = 0;

printf("%d ", matrix[i][j]);
for (int c = 0; c < edge; ++c) { printf("%d ", matrix[i][++j]); }

while (0 < edge) {
for (int c = 0; c < edge; ++c) { printf("%d ", matrix[++i][j]); }
for (int c = 0; c < edge; ++c) { printf("%d ", matrix[i][--j]); }
--edge;
for (int c = 0; c < edge; ++c) { printf("%d ", matrix[--i][j]); }
for (int c = 0; c < edge; ++c) { printf("%d ", matrix[i][++j]); }
--edge;
}

return 0;
}

我的方法是写出对 ij 所需更改的顺序,并找到模式。我发现该模式出现在第一行之后,因此我将其作为单独的初始步骤进行。

关于在c中顺时针打印4X4矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18802814/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com