c语言编程 将一个随机输入的5*5二维数组旋转后以5行5列输出 旋转方式有4种 分别以列表的对角线旋转

12345678910111213141516171819202122232425以表格的中线旋转11-15以表格的中线旋转3-23以对角线旋转1-25和21-5这四种的... 1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
21 22 23 24 25 以表格的中线旋转 11-15
以表格的中线旋转 3-23
以对角线旋转 1-25 和 21-5
这四种的编程 算法
展开
 我来答
百度网友b24d8a85d
2011-10-08 · TA获得超过101个赞
知道答主
回答量:77
采纳率:100%
帮助的人:65.9万
展开全部
#include <stdio.h>

int main()
{
int a[5][5]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25},i,j;
printf("原式\n");
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
printf("%3d",a[i][j]);
}
printf("\n");
}
printf("\n");
printf("以对角线旋转 1-25\n");
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
printf("%3d",a[j][i]);
}
printf("\n");
}
printf("\n");
printf("以对角线旋转 21-5\n");
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
printf("%3d",a[4-j][4-i]);
}
printf("\n");
}
printf("\n");
printf("以表格的中线旋转 3-23\n");
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
printf("%3d",a[i][4-j]);
}
printf("\n");
}
printf("\n");
printf("以表格的中线旋转 11-15 \n");
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
printf("%3d",a[4-i][j]);
}
printf("\n");
}

return 0;
}

输出

原式
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
21 22 23 24 25

以对角线旋转 1-25
1 6 11 16 21
2 7 12 17 22
3 8 13 18 23
4 9 14 19 24
5 10 15 20 25

以对角线旋转 21-5
25 20 15 10 5
24 19 14 9 4
23 18 13 8 3
22 17 12 7 2
21 16 11 6 1

以表格的中线旋转 3-23
5 4 3 2 1
10 9 8 7 6
15 14 13 12 11
20 19 18 17 16
25 24 23 22 21

以表格的中线旋转 11-15
21 22 23 24 25
16 17 18 19 20
11 12 13 14 15
6 7 8 9 10
1 2 3 4 5
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
370052857
2011-10-08
知道答主
回答量:36
采纳率:0%
帮助的人:15.4万
展开全部
#include<stdio.h>
void print(int n[5][5])
{
int i, j;
for(i = 0; i < 5; i++)
{
for(j = 0; j < 5; j++)
{
printf("%d\t",n[i][j]);
}
printf("\n");
}
}
void zx1(int n[5][5]) /*以表格的中线旋转 11-15 */
{
int i, j;
int m;
for(i = 0; i < 2; i++)
{
for(j = 0; j < 5; j++)
{
m = n[i][j];
n[i][j] = n[4-i][j];
n[4-i][j] = m;
}
}
}
void zx2(int n[5][5]) /*以表格的中线旋转 3-23*/
{
int i, j;
int m;
for(i = 0; i < 2; i++)
{
for(j = 0; j < 5; j++)
{
m = n[j][i];
n[j][i] = n[j][4-i];
n[j][4-i] = m;
}
}
}
void djx1(int n[5][5]) /*对角线1-25*/
{
int i, j;
int m;
for(i = 0; i < 5; i++)
{
for(j = i; j < 5; j++)
{
m = n[i][j];
n[i][j] = n[j][i];
n[j][i] = m;
}
}
}
void djx2(int n[5][5]) /*对角线21-5*/
{
int i, j;
int m;
for(i = 0; i < 4; i++)
{
for(j = 0; j < 4-i; j++)
{
m = n[i][j];
n[i][j] = n[4-j][4-i];
n[4-j][4-i] = m;
}
}
}
int main()
{
int n[5][5]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25};
print(n);
djx2(n);
print(n);
getch();
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
无病呻吟2010
2011-10-08 · TA获得超过963个赞
知道小有建树答主
回答量:527
采纳率:0%
帮助的人:590万
展开全部
#include <stdio.h>
#include <string.h>

void rotate1(int a[5][5]);
void rotate2(int a[5][5]);
void rotate3(int a[5][5]);
void rotate4(int a[5][5]);
void display(int a[5][5]);

int main()
{
int a[5][5];
int b[5][5];
int i,j;
int count=0;

for(i=0;i<5;i++)
for(j=0;j<5;j++)
a[i][j] = ++count;

memcpy(b,a,sizeof(a));
display(b);

printf("**** 1 *****\n");
memcpy(b,a,sizeof(a));
rotate1(b);
display(b);

printf("**** 2 *****\n");
memcpy(b,a,sizeof(a));
rotate2(b);
display(b);

printf("**** 3 *****\n");
memcpy(b,a,sizeof(a));
rotate3(b);
display(b);

printf("**** 4 *****\n");
memcpy(b,a,sizeof(a));
rotate4(b);
display(b);

return 0;
}

void swap(int *a,int *b)
{
int tmp;
tmp = *a;
*a = *b;
*b = tmp;
}

void rotate1(int a[5][5])
{
int i,j;
for(i=0;i<2;i++)
{
for(j=0;j<5;j++)
swap(&a[i][j], &a[4-i][j]);
}
}

void rotate2(int a[5][5])
{
int i,j;
for(i=0;i<2;i++)
{
for(j=0;j<5;j++)
swap(&a[j][i], &a[j][4-i]);
}
}

void rotate3(int a[5][5])
{
int i,j;
for(i=0;i<5;i++)
for(j=i+1;j<5;j++)
swap(&a[i][j], &a[j][i]);
}

void rotate4(int a[5][5])
{
int i,j;
for(i=0;i<5;i++)
for(j=0;j<5-i;j++)
swap(&a[i][j], &a[4-j][4-i]);
}

void display(int a[5][5])
{
int i,j;

for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
printf("%-3d",a[i][j]);
printf("\n");
}
printf("\n");
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式