C 这种逻辑方法适合我的程序吗?
程序-将矩阵顺时针旋转90度。 我是一名编码初学者。我在Geeksforgek上遇到了这个问题。我发现解决方案非常复杂,所以尝试应用我的逻辑。但我不知道我的逻辑是否适合这个项目。请引导我C 这种逻辑方法适合我的程序吗?,c,logic,C,Logic,程序-将矩阵顺时针旋转90度。 我是一名编码初学者。我在Geeksforgek上遇到了这个问题。我发现解决方案非常复杂,所以尝试应用我的逻辑。但我不知道我的逻辑是否适合这个项目。请引导我 #include<stdio.h> int main() { int A = 0 , a = 0 , b = 0; int arr[3][3] = {{1,2,3},{4,5,6},{7,8,9}}; printf("90 Degree rotation: \n");
#include<stdio.h>
int main()
{
int A = 0 , a = 0 , b = 0;
int arr[3][3] = {{1,2,3},{4,5,6},{7,8,9}};
printf("90 Degree rotation: \n");
printf("\n");
for(A = 2; A >= 0; A--)
{
for(a = 0; a < 3 ; a++)
{
for(b = 0; b < 3 ; b++)
{
if(b==A)
printf("%d\t",arr[a][b]);
}
}
printf("\n");
}
}
#包括
int main()
{
int A=0,A=0,b=0;
int arr[3][3]={{1,2,3},{4,5,6},{7,8,9};
printf(“90度旋转:\n”);
printf(“\n”);
对于(A=2;A>=0;A--)
{
对于(a=0;a<3;a++)
{
对于(b=0;b<3;b++)
{
如果(b==A)
printf(“%d\t”,arr[a][b]);
}
}
printf(“\n”);
}
}
输入
1 2 34.56
7 8 9 输出 369
2.5.8
14 7
这是您选择的坐标轴的矩阵:
b ->
a 1 2 3
| 4 5 6
V 7 8 9
也就是说,对于固定的a
,例如,如果增加b
,则打印“下一个数字”(前提是b
不是2
)。类似地,如果使用相同的b
增加a
,则使用相同的列,但使用下一行
因此,您可以使用以下伪程序来打印完整列(在一行上):
你想要什么?您要打印以下内容:
3 6 9
2 5 8
1 4 7
即打印最后一列,然后是中间一列,然后是第一列,这是由以下伪程序完成的:
print the 3rd column of arr
print the 2nd column of arr
print the 1st column of arr
或者,更简洁地说:
for b from 2 to 0
print the b-th column of arr.
因此,最后的伪代码是(内联print_column过程):
或者,在C中:
for(b = 2; b >= 0 ; b--)
{
for(a = 0; a < 3 ; a++)
{
printf("%d\t",arr[a][b]);
}
printf("\n");
}
(b=2;b>=0;b--)的
{
对于(a=0;a<3;a++)
{
printf(“%d\t”,arr[a][b]);
}
printf(“\n”);
}
为什么不直接反转a&b回路,然后放下外部回路?你有1个循环太多了。或者只需打印arr[b][a]
。好吧,也许你必须反转一些索引,但不应该超过2个循环。关于改进工作代码的问题属于。这是逆时针方向的。
for b from 2 to 0
for a from 0 to 2
print arr[a][b]
print newline
for(b = 2; b >= 0 ; b--)
{
for(a = 0; a < 3 ; a++)
{
printf("%d\t",arr[a][b]);
}
printf("\n");
}