當前位置:首頁 » 編程語言 » 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(" ");
}


}

這種旋轉矩形的,個人建議生成一維數組,用指針指向改數組,再用指針來賦值;也可生成二維數組,再定義數組指針來指向,這樣稍麻煩一些些。