#include "stdlib.h"
創(chuàng)新互聯(lián)公司專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于網(wǎng)站設(shè)計制作、成都網(wǎng)站制作、扶溝網(wǎng)絡(luò)推廣、小程序制作、扶溝網(wǎng)絡(luò)營銷、扶溝企業(yè)策劃、扶溝品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎;創(chuàng)新互聯(lián)公司為所有大學(xué)生創(chuàng)業(yè)者提供扶溝建站搭建服務(wù),24小時服務(wù)熱線:028-86922220,官方網(wǎng)址: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) 用三角函數(shù)展開就ok了 2)旋轉(zhuǎn)90度就是坐標(biāo)點從一個象限旋轉(zhuǎn)到另一個象限,先判斷正負(fù),再將橫縱坐標(biāo)交換并根據(jù)正負(fù)情況乘以-1或者1 這個問題就是高中解析幾何的旋轉(zhuǎn)問題?;蛘邎D形學(xué)里的二維圖形旋轉(zhuǎn)問題
#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;
}
問題描述不完整,給你我作業(yè)里德旋轉(zhuǎn)函數(shù)好了,//...#define LONG_SIZE 15
#define WIDE_SIZE 10//...char img[LONG_SIZE][WIDE_SIZE]; /*定義游戲區(qū)方塊移動范圍*/
int x_[4],y_[4],x,y; /*存放移動方塊在游戲區(qū)的位置序號和方塊的坐標(biāo)*///...void rotate() /*旋轉(zhuǎn)*/
{
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;
} 幾個月前寫的,可能因為之前的水平原因代碼有點亂(現(xiàn)在懶的編),不過是可行的..
C語言程序設(shè)計
C語言程序設(shè)計
題目定了嗎,需要寫多少iz呢