题目描述:
– 输入一个N阶方阵(0<N<10),输出此方阵顺时针旋转M(0<=M<=10000)次后的方阵
– 旋转举例:(如下四个三阶方阵从上到下为数字围绕中心顺时针旋转
1 2 3
4 5 6
7 8 9
7 4 1
8 5 2
9 6 3
9 8 7
6 5 4
3 2 1
3 6 9
2 5 8
1 4 7
输入描述:
(1) 输入第一行一个正整数N (0<N<10)
(2) 接下来N行每行N个整数用空格分开,为方阵的数据
(3) 接下来一行一个正整数M (0<=M<=10000)
说明:不用考虑异常输入,所有输入都是正常的,严格遵从取值范围
输出描述:
(1) N行,每行N个整数,用空格分开,为旋转后的数据
示例1:
– 输入
3
1 2 3
4 5 6
7 8 9
2
– 输出
9 8 7
6 5 4
3 2 1
c语言实现:
#include <stdio.h>
#include<string>)
#include <stdlib.h>//包含动态内存分配函数。
void *input(int *p,int n)
{
int i;
for (i = 0; i < n*n; i++)
scanf("%d", &p[i]);//输入第i行第j列的数据。其中&p[i][j]也可以写作p[i]+j或者是 *(p+i) + j. 功能相同。
for (i = 0; i < n*n;)
{
printf("%d ", p[i]);//输出i行j列的元素。
i++;
if (i%n == 0)
printf("\n");//每行输入结束加换行符。
}
return p;
}
void *out(int *p, int n)
{
for (int i = 0; i < n*n; )
{
printf("%d ", p[i]);//输出i行j列的元素。
i++;
if (i%n == 0)
printf("\n");//每行输入结束加换行符
}
return 0;
}
void *rotate(int *p,int *temp, int t,int n)
{
int i = 0, j = 0;
for (; i < n*n; )
{
temp[i] = p[n*(n - 1) - n * (i%n) + j];
i++;
if (i%n == 0)
j++;
}
t--;
if (t == 0)
{
out(temp, n);
return 0;
}
else
rotate(temp,p,t,n);
}
int main(void)
{
int *p,*temp; //定义二维指针
int n,m,t, i,j;//行数和旋转次数
printf("输入矩阵维度:");
scanf("%d", &n); //输入行数和列数
p = (int *)malloc(sizeof(int *) *n*n);//申请指针空间。
temp = (int *)malloc(sizeof(int*) *n*n);
input(p, n);
printf("输入旋转次数:");
scanf("%d", &m);
t = m % 4;
if (t == 0)
out(p, n);
else
rotate(p, temp, t,n);
//释放内存
free(p);
free(temp);
system("pause");
return 0;
}
python实现:
def in_num(p, n):
print("输入矩阵同行数字用空格分隔,不同行则用回车换行:")
for i in range(n):
p[i] = input().split(" ") # //输入二维数组,同行数字用空格分隔,不同行则用回车换行
p[i] = [int(j) for j in p[i]] # // 将数组中的每一行转换成整型
return p
def rotate_out(p, q, m, n):
for i in range(n):
for j in range(n):
q[i][j] = p[n - j - 1][i]
m = m-1
if m == 0:
for i in range(n):
for j in range(n):
print((q[i][j]), end= " ")
print("")
else:
rotate_out(q, p, m, n)
n = int(input("输入矩阵维度n:")) #输入二维数组的行数和列数
p, q = [([0] * n) for _ in range(n)], [([0] * n) for _ in range(n)] #初始化二维数组
in_num(p, n)
m = int(input("输入旋转次数m:")) % 4
if m == 0:
for i in range(n):
for j in range(n):
print((q[i][j]), end= " ")
print("")
else:
rotate_out(p, q, m, n)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)