『壹』 怎样用c语言实现旋转

怎样用C语言实现旋转
#include <stdio.h>

void main()
{
int M;
int N;
int flag=0;
int num1=0;
int num2=1;
int i=0;
int j=0;
char str='A';
char Array[31][31];
printf("请输入矩阵的行M和矩阵的列N:");
scanf("%d%d",&M,&N);
Array[0][0]=str;
while(flag < M*N-1)
{
switch(num2%4)
{
case 1:
++j;
if(j == N-num1-1)
{
num2++;
}
break;
case 2:
++i;
if(i == M-num1-1)
{
num2++;
}
break;
case 3:
--j;
if(j == num1)
{
num2++;
}
break;
case 0:
--i;
if(i == num1+1)
{
num2++;
num1++;
}
break;
}

if(++str == 'Z'+1)
str='A';

Array[i][j]=str;
flag++;

}

for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
{
printf("%c ",Array[i][j]);
}
printf("\n");

}

}

『贰』 c语言 旋转矩阵算法

|我会算你问的第一个矩阵版:
#include <stdio.h>
main()
{
int a[5][5],i,j;
clrscr();
for(i=0;i<5;i++)
for(j=0;j<5;j++)
if(i==0||权i==4||j==0||j==4)
a[i][j]=0;

else
if(i==2&&j==2)
a[i][j]=2;
else
a[i][j]=1;

for(i=0;i<5;i++)
{for(j=0;j<5;j++)
printf("%d",a[i][j]);
printf("\n");
}
}

『叁』 C语言写俄罗斯方块旋转算法

问题描述不完整,给你我作业里德旋转函数好了,//...#define LONG_SIZE 15
#define WIDE_SIZE 10//...char img[LONG_SIZE][WIDE_SIZE]; /*定义游戏区方块移动范围*/
int x_[4],y_[4],x,y; /*存放移动方块在游戏区的位置序号和方块的坐标*///...void rotate() /*旋转*/
{
int tmx[4],tmy[4];
int tf=1;
int i;
int k;
if((x_[0]==x_[1])&&(x_[2]==x_[3])&&(y_[0]==y_[2])&&(y_[1]==y_[3])) /*排除"田"字形*/
return;
for(i=0;i<4;i++)
img[x_[i]][y_[i]]=0;
for(i=0;i<4;i++)
{ tmx[i]=x+(y_[i]-y);
tmy[i]=y-(x_[i]-x);
if(tmx[i]<0||tmx[i]>LONG_SIZE-1)
{
tf=0;
break;
}
if(tmy[i]<0||tmy[i]>WIDE_SIZE-1)
{
tf=0;
break;
}
if((tmx[i]==x_[i])||(tmy[i]==y_[i]))
{
if(tmx[i]==x_[i])
{ if(img[tmx[i]][tmy[i]]==1||img[tmx[i]][y]==1)
{
tf=0;
break;
}
}
else if(tmy[i]==y_[i])
{
if(img[tmx[i]][tmy[i]]==1||img[x][tmy[i]]==1)
{
tf=0;
break;
}
}
else continue;
}
if((tmx[i]<x_[i]&&tmy[i]>y_[i])||(tmx[i]>x_[i]&&tmy[i]<y_[i]))
k=1;
else k=0;
while(tmx[i]!=x_[i]||tmy[i]!=y_[i])
{ if(img[tmx[i]][tmy[i]]==1)
{
tf=0;
break;
}
if(k%2==0)
tmx[i]<x_[i]?tmx[i]++:tmx[i]--;
else
tmy[i]<y_[i]?tmy[i]++:tmy[i]--;
k++;
}
}
if(tf)
{
for(i=0;i<4;i++)
{
tmx[i]=x+(y_[i]-y);
tmy[i]=y-(x_[i]-x);
x_[i]=tmx[i];
y_[i]=tmy[i];
}
}
for(i=0;i<4;i++)
img[x_[i]][y_[i]]=1;
} 几个月前写的,可能因为之前的水平原因代码有点乱(现在懒的编),不过是可行的..

『肆』 C语言如何实现伞形旋转

找出规律写成循环体打印输出呗……
这是针对你追问的答案……
你把图片解析完了应该是个二维数组了吧,怎么旋转,就是操作旋转这个二维数组了,线性代数知识应该可以解决吧……

『伍』 c语言矩阵旋转问题

#include<stdio.h>
#defineN3

voidtranslate(intarr[][N],intm){
inti,j,t;
for(i=0;i<m;++i){
for(j=i+1;j<N;++j){
t=arr[i][j];
arr[i][j]=arr[j][i];
arr[j][i]=t;
}
}
}

voidshow(intarr[][N],intm){
inti,j;
for(i=0;i<m;++i){
for(j=0;j<N;++j)
printf("%d",arr[i][j]);
printf(" ");
}
printf(" ");
}

intmain(){
inti,j,a[N][N];
for(i=0;i<N;++i){
for(j=0;j<N;++j)
scanf("%d",&a[i][j]);
}
printf("旋转前: ");
show(a,N);
printf("旋转后: ");
translate(a,N);
show(a,N);
return0;
}

『陆』 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语言编程三角形绕一点旋转九十度怎么做

A(ax, ay) B(bx, by) C(cx, cy) 移动后A(ax0, ay0)... 1)ax = r*cosα ay = r*sinα ax0 = r*cos(α+90) ay0=r*sin(α+90) 用三角函数展开就ok了 2)旋转90度就是坐标点从一个象限旋转到另一个象限,先判断正负,再将横纵坐标交换并根据正负情况乘以-1或者1 这个问题就是高中解析几何的旋转问题。或者图形学里的二维图形旋转问题

『捌』 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(" ");
}


}

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

『玖』 C语言实现矩阵逆时针旋转90度,代码调试!!!!

  1. 局部变量数组a太大了,

    方法1:要么把M改小,

#include <stdio.h>

#include <stdlib.h>

#define M 100


void Rotation(int a[M][M],int m,int n)

{

int tem[M][M];

int i,j,k = 0;


for(j=n-1;j>=0;j--)

{

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

tem[k][i] = a[i][j];

k++;

}


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

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

a[i][j] = tem[i][j];

}


int main()

{

int m,n;

int i,j;

int a[M][M];


scanf("%d %d",&m,&n);


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

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

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


Rotation(a,m,n);


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

{

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

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

printf(" ");

}


return 0;

}

====================================================

2. 方法2:

要么把a和tem改为全局变量

#define M 1000


int tem[M][M];

void Rotation(int a[M][M],int m,int n)

{

int i,j,k = 0;


for(j=n-1;j>=0;j--)

{

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

tem[k][i] = a[i][j];

k++;

}


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

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

a[i][j] = tem[i][j];

}

int a[M][M];

int main()

{

int m,n;

int i,j;


scanf("%d %d",&m,&n);


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

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

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


Rotation(a,m,n);


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

{

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

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

printf(" ");

}


return 0;

}