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

矩陣左轉90度c語言

發布時間: 2022-11-16 12:51:43

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語言編程題 將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++將矩陣順時針旋轉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++輸入一個n*n的字元矩陣,把它左轉90度後輸出.

1、矩陣的轉置就是矩陣的行與列的轉換。

2、矩陣左轉90度就是把現有矩陣每一行向左轉90角變成列形成的新矩陣,也就是整個矩陣逆時針轉90度後得到矩陣。

3、C++示例,程序中為避免手動輸入字元的麻煩,只輸入n,字元由隨機數產生。

#include<iostream>
#include<cstdlib>
#definernd(x)(rand()%x);

usingnamespacestd;

intmain(intargc,char*argv[])
{
charc[50][50];
intn,i,j;

isr:
cout<<"inputn,2=<n<=25"<<endl;
cin>>n;
if(n<2||n>50)gotoisr;

for(i=0;i<n;i++){
for(j=0;j<n;j++){
c[i][j]=97+rnd(25);
cout<<c[i][j];
}
cout<<endl;
}
cout<<endl;
for(i=n-1;i>=0;i--){
for(j=0;j<n;j++){
cout<<c[j][i];
}
cout<<endl;
}
cout<<endl<<endl;
getchar();

return0;
}

㈤ 編程,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語言,怎麼將一個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度,代碼調試!!!!

  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;

}

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

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

㈨ 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語言怎麼旋轉一個矩陣

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

}