编程,c或c++,将一个二维数组顺时针旋转90度。

 我来答
听不清啊
高粉答主

推荐于2016-02-23 · 说的都是干货,快来关注
知道顶级答主
回答量:7.8万
采纳率:89%
帮助的人:2亿
展开全部

#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;

}

追答

风若远去何人留
推荐于2016-09-24 · 知道合伙人互联网行家
风若远去何人留
知道合伙人互联网行家
采纳数:20412 获赞数:450136
专业C/C++软件开发

向TA提问 私信TA
展开全部

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;
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wtf1925
2018-10-08
知道答主
回答量:1
采纳率:0%
帮助的人:830
展开全部
举一个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 ;
}
(编程小白)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wzd爱的祈求
2015-04-14 · 超过19用户采纳过TA的回答
知道答主
回答量:77
采纳率:0%
帮助的人:16.2万
展开全部
不知道对不对,试试
#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;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式