当前位置:首页 » 编程语言 » c语言矩阵顺时针旋转180度
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言矩阵顺时针旋转180度

发布时间: 2022-07-23 00:16:54

c语言怎么旋转一个矩阵

#include<stdio.h>

int main()

{int i,j,t,n,a[20][20];

scanf("%d",&n);

for(i=0;i<n;i++)

{for(j=0;j<n;j++)

{a[i][j]=i*n+j+1;

printf("%3d",a[i][j]);

}

printf(" ");

}

printf(" ");

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;

}

for(i=0;i<n;i++)

{for(j=0;j<n;j++)

printf("%3d",a[i][j]);

printf(" ");

}

return 0;

}

❷ 旋转矩阵 C语言

试试吧 这个是我自己在网吧写的

#include <stdio.h>
#include <malloc.h>
void main(){
int m;
int n;
char *p;
scanf("%d",&m);
scanf("%d",&n);
p=(int *)malloc(sizeof(char)*m*n);
for(int i=0;i<m*n;i++)
p[i]='\0';

int x=0,y=0;
int state=0;
for(int i=0;i<m*n;i++){
p[x*m+y]='A'+(char)(i%26);
switch(state){
case 0:
y++;
if(y>=n||p[x*n+y]!='\0'){
state=1;
y--;
x++;
}
break;
case 1:
x++;
if(x>=n||p[x*n+y]!='\0'){
state=2;
x--;
y++;
}
break;
case 2:
y--;
if(y<0||p[x*n+y]!='\0'){
state=3;
y++;
x--;
}
break;
case 3:
x--;
if(x<0||p[x*n+y]!='\0'){
state=0;
x++;
y++;
}
break;
}
}
for(int i=0;i<m*n;i++){
printf("%c",p[i]);
if(i%n==n-1){
printf("\n");
}
}
}

❸ c语言 二维数组的顺时针旋进

以下是我3年前编写的程序,当时也是为了考计算机二级时娱乐一下写的,你可以参考一下;你的题目是要6阶矩阵,不过我的程序是9x9,你只需要简单地修改一下就行了,这个你就自己学习一下了,毕竟全给你弄好也不利于你的学习。

特别注意:请输入go回车显示旋进输出。

#include<stdio.h>

#include<string.h>

voidmain(void)

{

charab[]="go",ac[56];

inta[9][9];

inth=0,i,j;

intleft=9,right=0,up=0,down=9;

for(i=0;i<9;i++)

{

for(j=0;j<9;j++)

{

a[i][j]=h;

h++;

}

}


for(i=0;i<9;i++)

{

for(j=0;j<9;j++)

{

printf("%2d",a[i][j]);

}

putchar(' ');

}

printf("9x9矩阵顺时针内螺旋方式输出已就绪,请指示:");

loop:

gets(ac);

if(0==strcmp(ac,ab))

{


for(i=0,j=0;(left!=up-1)||(right!=down+1);)

{

for(;j<down;)

{

printf("%2d",a[i][j]);

j++;

}

down--;

putchar(' ');

for(i=right+1,--j;i<left;)

{


printf("%2d",a[i][j]);

i++;

}

left--;

putchar(' ');

for(j=down-1,--i;j>up-1;)

{

printf("%2d",a[i][j]);

j--;

}

up++;

putchar(' ');

for(i=left-1,++j;i>right;)

{

printf("%2d",a[i][j]);

i--;

}

++i;

right++;

putchar(' ');

j++;

}

}

else

{

printf("对不起,您输入的“%s”为无效字段! ",ac);

printf("请再次输入:");

gotoloop;


}



}

❹ 将下面矩阵分别按顺时针90度,逆时针90度,和旋转180度,打印出来

#include"stdio.h"
voidmain()
{
inta[5][6]={1,3,4,2,5,2,
2,3,6,3,8,3,
2,9,7,9,4,8,
6,3,8,1,9,3,
9,3,5,2,8,5,};
ints90[6][5],ni90[6][5],x180[5][6];
inti,j;
printf("顺时针旋转90度矩阵为: ");
for(i=0;i<6;i++)
{
for(j=0;j<5;j++)
{
s90[i][j]=a[4-j][i];
printf("%2d%",s90[i][j]);
}
printf(" ");
}
printf("逆时针旋转90度矩阵为: ");
for(i=0;i<6;i++)
{
for(j=0;j<5;j++)
{
s90[i][j]=a[j][5-i];
printf("%2d%",s90[i][j]);
}
printf(" ");
}
printf("旋转180度矩阵为: ");
for(i=0;i<5;i++)
{
for(j=0;j<6;j++)
{
s90[i][j]=a[4-i][5-j];
printf("%2d%",s90[i][j]);
}
printf(" ");
}
}

❺ C语言矩阵问题

顺时针旋转,(xa, ya) 坐标变换: xb = ya; yb = (n-1)- xa;
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char* argv[]) {

int i,j,xa,ya,xb,yb,n;
int *p,*q;

printf("输入n:");
scanf("%d", &n);

p = (int*) malloc(sizeof(int) * n*n);
q = (int*) malloc(sizeof(int) * n*n);

for (i=0;i<n;i++) {
for (j=0;j<n;j++) {
*(p+i*n+j) = i*n+j+1;
}
}

for (i=0;i<n;i++) {
for (j=0;j<n;j++) {
printf("%4d ", *(p+i*n+j));
}
printf("\n");
}
printf("\n");

//旋转90度
for (i=0;i<n*n;i++) {
xa= i/n; ya= i%n;
xb = ya; yb = n-1-xa;
*(q + xb*n+yb) = *(p+i);
}

printf("顺时针旋转90---------------------------------------------\n");
for (i=0;i<n;i++) {
for (j=0;j<n;j++) {
printf("%4d ", *(q+i*n+j));
}
printf("\n");
}
printf("\n");

free(p);
free(q);
return 0;
}

❻ c语言中矩阵的旋转问题.

#include<stdio.h>

main()

{inta[3][3]={{11,12,13},{14,15,22},{23,24,25}};

inti,j,t;

printf("原来的矩阵为: ");

for(i=0;i<3;i++)

{for(j=0;j<3;j++)

printf("%d ",a[i][j]);

printf(" ");}

for(i=0;i<2;i++)

for(j=0;j<=2-i;j++)

{t=a[i][j];

a[i][j]=a[2-i][2-j];

a[2-i][2-j]=t;}

printf("旋转后的矩阵为: ");

for(i=0;i<3;i++)

{for(j=0;j<3;j++)

printf("%d ",a[i][j]);

printf(" ");}

}

RUN:


❼ C语言求助大神二阶顺时针旋转90度输出

#include<stdio.h>
#defineN4//宏定义数组界限,可根据实际情况更改
intmain(){
inti,j,t,a[N][N];
for(i=0;i<N;i++)
for(j=0;j<N;j++)
scanf("%d",&a[i][j]);//读取矩阵
for(i=0;i<N;i++)
for(j=0;j<=i;j++)
{t=a[i][j];a[i][j]=a[j][i];a[j][i]=t;}
for(j=0;j<N/2;j++)
for(i=0;i<N;i++)
{t=a[i][j];a[i][j]=a[i][N-j-1];a[i][N-j-1]=t;}//实现顺时针方向旋转矩阵90度
for(i=0;i<N;i++){
printf(" ");
for(j=0;j<N;j++)
printf("%4d",a[i][j]);//输出旋转后的矩阵
}
return0;
}

//运行示例:

❽ c语言中旋转矩阵的问题

这个题用链表做相当简单了。。。 做一个循环链表

❾ C语言如何编写旋转矩阵源代码

这里以顺时针旋转90°为例:

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#defineN4
voidmain()
{
inti,j;
inta[N*N],b[N][N];//这里设置旋转为4*4的矩形,自己在这里改成其它的矩形
int*p=a;//用指针来指向这个一维数组。这样在旋转赋值的时候会轻松很多
srand(time(NULL));
for(i=0;i<N*N;i++)
{
a[i]=rand()%100;//随机生成0~99
printf("%d ",a[i]);
if((i+1)%4==0)
printf(" ");
}

for(i=N-1;i>=0;i--) //旋转赋值,这里可修改旋转的方向和角度
for(j=0;j<N;j++,p++)
b[j][i]=*p;

printf("顺时针旋转90度后: ");
for(i=0;i<N;i++)
{for(j=0;j<N;j++)
printf("%d ",b[i][j]);
printf(" ");
}


}

这种旋转矩形的,个人建议生成一维数组,用指针指向改数组,再用指针来赋值;也可生成二维数组,再定义数组指针来指向,这样稍麻烦一些些。