#include "stdlib.h"
创新互联公司专注为客户提供全方位的互联网综合服务,包含不限于网站设计制作、成都网站制作、扶沟网络推广、小程序制作、扶沟网络营销、扶沟企业策划、扶沟品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联公司为所有大学生创业者提供扶沟建站搭建服务,24小时服务热线:028-86922220,官方网址:www.cdcxhl.com
void rotate(int (*a)[3])
{
int i,j;
int temp[3][3];
for (i=0;i3;i++)
{
for (j=0;j3;j++)
temp[j][2-i]=a[i][j];
}
for (i=0;i3;i++)
{
for (j=0;j3;j++)
a[i][j]= temp[i][j];
}
}
main()
{
int i,j;
int a[3][3]= {11,22,33, 44,55,66, 77,88,99};
rotate(a);
printf(“after transform\n”);
for (i=0;i3;i++)
{
for (j=0;j3;j++)
printf(“%d\t”,a[i][j]);
}
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 这个问题就是高中解析几何的旋转问题。或者图形学里的二维图形旋转问题
#include stdio.h
#define N 5
void myturn(int a[N][N], int x, int y, int sx, int sy)
{
int dy = N - 1 - x;
int dx = y;
int val = a[y][x];
if (dx == sx dy == sy) {
a[sy][sx] = a[y][x];
return;
} else {
myturn(a, dx, dy, sx, sy);
a[dy][dx] = val;
}
}
void turn90(int a[N][N])
{
int s = 0, e = N - 1;
int i;
int l = 0;
while(s e) {
for(i = s; i e; ++i)
myturn(a, i, l, i, l);
++l;
++s;
--e;
}
}
int main()
{
int a[N][N] = {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};
int i, j;
turn90(a);
for(i = 0; i N; ++i) {
for(j = 0; j N; ++j)
printf("%d\t", a[i][j]);
putchar('\n');
}
return 0;
}
早先编过一个左旋的,改一下给你了——
代码文本:
#include "stdio.h"
int fun(int x, int y, int lt, int n){
if(!x)
return lt+y;
else if(!y)
return lt+4*(n-1)-x;
else if(y==n-1)
return lt+n+x-1;
else if(x==n-1)
return lt+3*(n-1)-y;
else
return fun(x-1,y-1,lt+4*(n-1),n-2);
}
int main(int argc,char *argv[]){
int n, i, j;
printf("Please enter n(int 0n10)...\nn=");
if(scanf("%d", n)==1 n0 n10){
for(i=0;in;i++){
for(j=0;jn;++j)
printf("%2d ", fun(i,j,1,n));
putchar('\n');
}
}
else
printf("Input error, exit...\n");
return 0;
}
问题描述不完整,给你我作业里德旋转函数好了,//...#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;i4;i++)
img[x_[i]][y_[i]]=0;
for(i=0;i4;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;i4;i++)
{
tmx[i]=x+(y_[i]-y);
tmy[i]=y-(x_[i]-x);
x_[i]=tmx[i];
y_[i]=tmy[i];
}
}
for(i=0;i4;i++)
img[x_[i]][y_[i]]=1;
} 几个月前写的,可能因为之前的水平原因代码有点乱(现在懒的编),不过是可行的..
C语言程序设计
C语言程序设计
题目定了吗,需要写多少iz呢