编程,c或c++,将一个二维数组顺时针旋转90度。
4个回答
展开全部
#include<stdio.h>
#define N 4
int a[N][N]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};
void prt()
{int i,j;
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
printf("%4d",a[i][j]);
printf("\n");
}
}
int main()
{int i,j,k,t;
printf("原来的数组:\n");
prt();
for(i=0;i<=N/2;i++)
for(j=i;j<N-i-1;j++)
{
t=a[i][j];
a[i][j]=a[j][N-1-i];
a[j][N-1-i]=a[N-1-i][N-1-j];
a[N-1-i][N-1-j]=a[N-1-j][i];
a[N-1-j][i]=t;
}
printf("\n顺时针旋转90度后的数组:\n");
prt();
getch();
return 0;
}
展开全部
C++的
#include <iostream>
using namespace std;
struct MAP
{
int x,y;
int **v;
MAP():x(0),y(0),v(NULL){}
MAP(int a, int b)
{
int i,j;
x = a;
y = b;
v = new int* [a];
for(i = 0; i < a; i ++)
{
v[i] = new int[b];
for(j = 0; j < b; j ++)
cin >> v[i][j];
}
}
~MAP()
{
int i;
if(v)
{
for(i = 0; i < x; i ++)
if(v[i])delete [] v[i];
delete [] v;
}
}
void covert(MAP &a)
{
int i,j;
if(a.x != y || a.y != x || a.v == NULL)
{
if(a.v)
{
for(i = 0; i < a.x; i ++)
if(a.v[i])delete [] a.v[i];
delete [] a.v;
}
a.x = y;
a.y = x;
a.v = new int* [y];
for(i = 0; i < y; i ++)
a.v[i] = new int[x];
}
for(i = 0; i < x; i ++)
for(j = 0; j < y; j ++)
a.v[j][x - i - 1] = v[i][j];
}
void display()
{
int i,j;
cout << x << '*' << y << endl;
for(i = 0; i < x; i ++)
{
for(j = 0; j < y; j ++)
cout << v[i][j] << ' ';
cout << endl;
}
}
};
int main()
{
int x,y;
cin >> x >> y;
MAP a(x,y),b;
a.display();
a.covert(b);
b.display();
return 0;
}
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
举一个4*4的例子:
void function(){//将矩阵顺时针旋转90度
int i,j,x=0,y=0;
int tb[4][4];//临时数组
for(j=0;j<4;j++){
y=0;
for(i=3;i>=0;i--){
tb[x][y]=array[i][j];
y++;
}
x++;
}
for(i=0;i<4;i++){
for(j=0;j<4;j++){
array[i][j]=tb[i][j];
}
}
return ;
}
(编程小白)
void function(){//将矩阵顺时针旋转90度
int i,j,x=0,y=0;
int tb[4][4];//临时数组
for(j=0;j<4;j++){
y=0;
for(i=3;i>=0;i--){
tb[x][y]=array[i][j];
y++;
}
x++;
}
for(i=0;i<4;i++){
for(j=0;j<4;j++){
array[i][j]=tb[i][j];
}
}
return ;
}
(编程小白)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不知道对不对,试试
#include<stdio.h>
int main()
{
int a[3][4];
int b[4][3];
int i,j,m=2;
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
scanf("%d",&a[i][j]);
}
for(i=0;i<4;i++)
{
for(j=0;j<3;j++)
{
b[i][j]=a[m][i];
m--;
}
m=2;
}
for(i=0;i<4;i++)
{
for(j=0;j<3;j++)
printf("%d ",a[i][j]);
printf("\n");
}
return 0;
}
#include<stdio.h>
int main()
{
int a[3][4];
int b[4][3];
int i,j,m=2;
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
scanf("%d",&a[i][j]);
}
for(i=0;i<4;i++)
{
for(j=0;j<3;j++)
{
b[i][j]=a[m][i];
m--;
}
m=2;
}
for(i=0;i<4;i++)
{
for(j=0;j<3;j++)
printf("%d ",a[i][j]);
printf("\n");
}
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询