這裡蒐索程式師資訊,查找有用的技術資料
当前位置:首页 » 编程语言 » 矩阵左右翻转c语言
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

矩阵左右翻转c语言

发布时间: 2022-04-18 07:00:19

c语言的矩阵翻转

#include<stdio.h>
intmain(){
intM,N,T;
scanf("%d%d%d",&M,&N,&T);
intmat[M][N];
printf("请输入原始矩阵: ");
for(inti=0;i<M;i++){
for(intj=0;j<N;j++){
scanf("%d",&mat[i][j]);
}
}
printf("原矩阵为: ");
for(inti=0;i<M;i++){
for(intj=0;j<N;j++){
printf("%d",mat[i][j]);
}
printf(" ");
}
inttemp=0;
if(T==0){
printf("左右翻转后: ");
for(inti=0;i<M;i++){
for(intj=0;j<N/2;j++){
temp=mat[i][j];
mat[i][j]=mat[i][N-j-1];
mat[i][N-j-1]=temp;
}
}
for(inti=0;i<M;i++){
for(intj=0;j<N;j++){
printf("%d",mat[i][j]);
}
printf(" ");
}
}
if(T==1){
printf("上下翻转后: ");
for(inti=0;i<M/2;i++){
for(intj=0;j<N;j++){
temp=mat[i][j];
mat[i][j]=mat[N-i-1][j];
mat[N-i-1][j]=temp;
}
}
for(inti=0;i<M;i++){
for(intj=0;j<N;j++){
printf("%d",mat[i][j]);
}
printf(" ");
}
}
return0;
}

⑵ C语言矩阵逆时针旋转

把最后的printf(" %d",a[i][j]);改成printf(" %d",b[i][j]); -----------------------------------------------------------#include<stdio.h>main(){int i,j,a[3][3]={{1,2,3},{4,5,6},{7,8,9}},b[3][3];for(i=0;i<=2;i++){for(j=0;j<=2;j++)printf(" %d",a[i][j]);printf("\n");}printf("\n");for(i=0;i<3;i++) {for(j=0;j<3;j++) </p><p>b[j][i]=a[i][2-j];<br> }for(i=0;i<=2;i++){for(j=0;j<=2;j++)</p><p>printf(" %d",b[i][j]);</p><p>printf("\n");</p><p>}getchar();}

⑶ 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语言矩阵逆时针翻转(先输入两个整数,一个是矩阵阶数,一个是翻转次数)

#include <stdio.h>
#include <stdlib.h>

//显示数据
void Print(int **a,int m)
{
int i,j;
for(i=0;i<m;i++)
{
for(j=0;j<m;j++)
printf("%3d",a[i][j]);
printf("\n");
}
}
void main(void)
{
int m,n;//阶数和逆转次数
int i,j;
int **a;//原数组
int **b;//逆转后数组
scanf("%d%d",&m,&n);
if(m<=0||n<=0)
return;
//分配内存
a=(int**)malloc(sizeof(int*)*m);
b=(int**)malloc(sizeof(int*)*m);
if((a==NULL) || (b==NULL))
return;
for(i=0;i<m;i++)
{
a[i]=(int*)malloc(sizeof(int)*m);
b[i]=(int*)malloc(sizeof(int)*m);
if((a==NULL) || (b==NULL))
return;
}

//录入数据
for(i=0;i<m;i++)
for(j=0;j<m;j++)
scanf("%d",&a[i][j]);

//显示数据:原数组
//Print(a,m);

//4种状态
n=n%4;
switch (n)
{
case 0://不变
Print(a,m);
break;
case 1://逆旋一次
for (i=0;i<m;i++)
for(j=0;j<m;j++)
{
b[m-1-j][i]=a[i][j];//对应关系
}
Print(b,m);
break;
case 2://逆旋二次
for (i=0;i<m;i++)
for(j=0;j<m;j++)
{
b[m-1-i][m-1-j]=a[i][j];
}
Print(b,m);
break;
case 3://逆旋三次
for (i=0;i<m;i++)
for(j=0;j<m;j++)
{
b[j][m-1-i]=a[i][j];
}
Print(b,m);
break;
}

//释放内存
for(i=0;i<m;i++)
{
free(a[i]);
free(b[i]);
}
free(a);
free(b);
}

⑸ 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>
intmain()
{
intm,n,t,i,j;
scanf("%d%d",&m,&n);
inta[m][n];//定义一个mxn矩阵
for(i=0;i<m;i++)//矩阵输入
{
for(j=0;j<n;j++)
{
scanf("%d",&a[i][j]);
}
}
scanf("%d",&t);
if(t==1)//水平翻转
{
for(i=0;i<m;i++)
{
for(j=n-1;j>=0;j--)//每列倒序输出
{
if(j!=0)
{
printf("%d",a[i][j]);
}
else
{
printf("%d",a[i][j]);//当循环至每列末尾时,不输出空格
}
}
printf(" ");//每行输出完后回车
}
}
else//竖直翻转
{
for(i=m-1;i>=0;i--)//倒序输出每行
{
for(j=0;j<n;j++)
{
if(j!=n-1)
{
printf("%d",a[i][j]);
}
else
{
printf("%d",a[i][j]);//当循环至每列末尾时,不输出空格
}
}
printf(" ");
}
}
return0;
}

⑺ 旋转矩阵 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语言矩阵翻转求助。。。。

int a[M][N] 由于M,n未知,所以不能这样定义,一般都是取稍微大于最大值。如

a[202][202]

⑼ 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语言如何编写旋转矩阵源代码

这里以顺时针旋转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(" ");
}


}

这种旋转矩形的,个人建议生成一维数组,用指针指向改数组,再用指针来赋值;也可生成二维数组,再定义数组指针来指向,这样稍麻烦一些些。