當前位置:首頁 » 編程語言 » c語言矩陣順時針旋轉90
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言矩陣順時針旋轉90

發布時間: 2022-01-15 21:56:49

c語言編程題 將M*M的矩陣按順時針旋轉90度

順時針旋轉90度不就是矩陣的轉置嗎?行和列交換就可以了。
#include<stdio.h>
#define
M
3
void
main()
{
int
a[M][M],b[M][M];
int
i,j;
printf("輸入矩陣a:\n");
for(i=0;i<M;i++)
for(j=0;j<M;j++)
scanf("%d",&a[i][j]);
printf("轉置前的矩陣:\n");
for(i=0;i<M;i++)
{
for(j=0;j<M;j++)
printf("%d
",a[i][j]);
printf("\n");
}
printf("\n轉置後的矩陣:\n");
for(i=0;i<M;i++)
{
for(j=0;j<M;j++)
{
b[i][j]=a[j][i];
printf("%d
",b[i][j]);
}
printf("\n");
}
}
運行結果:
輸入矩陣a:
1
2
3
4
5
6
7
8
9
轉置前的矩陣:
1
2
3
4
5
6
7
8
9
轉置後的矩陣:
1
4
7
2
5
8
3
6
9
Press
any
key
to
continue

Ⅱ c語言,怎麼將一個n行,每行m個數的矩形數組矩陣逆時針轉動90度啊

#include<stdio.h>
#define M 3
#define N 5
int main(void)
{
int a[N][M],left[M][N],right[M][N];
int i,j,k;
for(i=0;i<N;i++)
{
printf(「請輸入第%d行%d個整數:」,i+1,M);
for(j=0;j<M;j++)scanf(「%d」,&a[i][j]);
}
printf(「原始數組:\n」);
for(i=0;i<N;i++)
{
for(j=0;j<M;j++)
{
printf(「%5d」,a[i][j]);
left[j][i]=right[j][i]=a[i][j];
}
putchar('\n');
}
for(i=0;i<M/2;i++)
for(j=0;j<N;j++)
{
k=left[i][j];
left[i][j]=left[M-i][j];
left[M-i][j]=k;
}
for(i=0;i<M;i++)
for(j=0;j<N/2;j++)
{
k=right[i][j];
right[i][j]=right[i][N-j];
right[i][N-j]=k;
{
printf(「左轉90度:\n」);
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)printf(「%5d」,left[i][j]);
putchar('\n');
}
printf(「右轉90度:\n」);
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)printf(「%5d」,right[i][j]);
putchar('\n');
}
return 0;
}

Ⅲ c++將矩陣順時針旋轉90度

你到底要逆時針還是順時針
順時針的,轉置一下,水平翻轉一下就好了
逆時針的,轉置一下,垂直翻轉一下就好了

#include <stdio.h>
#include <stdlib.h>
#define N 4
void show(int a[N][N]) {
int i, j;
for (i = 0; i < N; i++) {
for (j = 0; j < N; j++) {
printf("%3d", a[i][j]);
}
printf("\n");
}
printf("--\n");
}
int main()
{
int a[N][N];
int i, j, t = 1;
for (i = 0; i < N; i++) {
for (j = 0; j < N; j++) {
a[i][j] = t++;
}
}
show(a);
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;
}
}
show(a);
/* 這是順時針水平翻轉的,注意不能與下面垂直翻轉的同時運行,不然就水平翻一下,垂直又翻一下了
for (i = 0; i < N; i++) {
for (j = 0; j < N/2; j++) {
t = a[i][j];
a[i][j] = a[i][N-1-j];
a[i][N-1-j] = t;
}
}
show(a);*/
for (i = 0; i < N; i++) {
for (j = 0; j < N/2; j++) {
t = a[j][i];
a[j][i] = a[N-1-j][i];
a[N-1-j][i] = t;
}
}
show(a);
return 0;
}

Ⅳ 編程,c或c++,將一個二維數組順時針旋轉90度。

#include<stdio.h>

#define N 4

int a[N][N]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};

void prt()

{int i,j;

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

{

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

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

printf(" ");

}

}

int main()

{int i,j,k,t;

printf("原來的數組: ");

prt();

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;

}

printf(" 順時針旋轉90度後的數組: ");

prt();

getch();

return 0;

}

Ⅳ 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語言求助大神二階順時針旋轉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語言二維數組通過指針旋轉90度

//初始的二維數組:
//1234
//5678
//9101112
//13141516

//順時針轉90度後的二維數組:
//13951
//141062
//151173
//161284

#include<stdio.h>
//#include<stdlib.h>//該頭文件暫時不用
//#include<string.h>//該頭文件暫時不用
#defineN4

//原代碼inta[N][N];//放在這里定義,二維數組a屬於全局變數

//將二維數組通過指針旋轉90度(順時針轉90度)
voidproc(intbuf[N][N],intn)
{
inti,j,t;
int*parr;//指向int類型的指針

parr=&buf[0][0];//將二維數組看成一維數組

for(i=0;i<=n-1;i++)
{
for(j=i;j<n-i-1;j++)
{
t=*(parr+i*n+j);
*(parr+i*n+j)=*(parr+(n-1-j)*n+i);
*(parr+(n-1-j)*n+i)=*(parr+(n-1-i)*n+n-1-j);
*(parr+(n-1-i)*n+n-1-j)=*(parr+j*n+n-1-i);
*(parr+j*n+n-1-i)=t;
}
}
}
voidOutput(inta[N][N])//輸出二維數組
{
inti,j;
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
printf("%4d",a[i][j]);
}
printf(" ");
}
}
intmain()//原代碼voidmain()
{
//N的數值不大,二維數組a可放在函數main里定義,作為局部變數
inta[N][N];
inti,j,c=0;
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
a[i][j]=++c;
}
}
Output(a);
printf(" ");
//原代碼proc(&a[N][N],N);
proc(a,N);
Output(a);

return0;
}

Ⅷ 輸入n*n的字元矩陣,把它旋轉90度後輸出用c語言寫,拜託了,急啊!!

你這個其實是打了5行,沒有賦值的,其中1,3行沒有內容,所以是空格。要想沒有空格,if(i%2==1){printf("\n");}只要偶數行,就沒有空格。

Ⅸ 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;

}

Ⅹ C語言二維數組元素怎麼「順時針旋轉」,如圖

#include"stdio.h"

int main()

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

int c;

scanf("%d",&n);

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

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

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

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

}

printf(" ");

}

printf("After: ");

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

for(j=i;j<n-1-i;j++)

{t=a[i][j];

a[i][j]=a[n-1-j][i];

a[n-1-j][i]=a[n-1-i][n-1-j];

a[n-1-i][n-1-j]=a[j][n-1-i];

a[j][n-1-i]=t;

}

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

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

printf("%3d",a[i1][j1]);

printf(" ");

}

return 0;

}