C编程题!将矩阵的外围元素顺时针旋转

作者&投稿:丹饱 (若有异议请与网页底部的电邮联系)
C语言编程题 将M*M的矩阵按顺时针旋转90度~

顺时针旋转90度不就是矩阵的转置吗?行和列交换就可以了。

#include
#define M 3
void main()
{
int a[M][M],b[M][M];
int i,j;
printf("输入矩阵a:
");
for(i=0;i<M;i++)
for(j=0;j<M;j++)
scanf("%d",&a[i][j]);
printf("转置前的矩阵:
");
for(i=0;i<M;i++)
{
for(j=0;j<M;j++)
printf("%d ",a[i][j]);
printf("
");
}

printf("
转置后的矩阵:
");
for(i=0;i<M;i++)
{
for(j=0;j<M;j++)
{
b[i][j]=a[j][i];
printf("%d ",b[i][j]);
}
printf("
");
}
}

运行结果:
输入矩阵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

你到底要逆时针还是顺时针
顺时针的,转置一下,水平翻转一下就好了
逆时针的,转置一下,垂直翻转一下就好了

#include
#include
#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("
");
}
printf("--
");
}
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;
}

#include <stdio.h>
#define N 3
void fun(int (*t)[N]) {
int j,r[N];
for(j=0; j<N; j++)
r[j]=t[0][j];
for(j=0; j<N; j++)
/**********found**********/
t[0][N-j-1]=t[j][j-1];
//(填入j)
for(j=0; j<N; j++)
t[j][0]=t[N-1][j];
/**********found**********/
for(j=N-1; j>=0; j--) //(填入j--)
t[N-1][N-1-j]=t[j][N-1];
for(j=N-1; j>=0; j--)
/**********found**********/
t[j][N-1] = r[j];
//(填入j)
}


4.C++编程题:有一个3×4的矩阵,要求编程求出其中值是大的那个元素的值...
include <stdio.h> int matrix[3][4]={ {2,3,4,5},{5,7,324,2},{4,5,7,8} };int main(int argc,char *argv[]){ int row,col;int maxrow=0,maxcol=0;int max=matrix[0][0];for(row=0;row<3;row++){ for(col=0;col<4;col++){ if(max<matrix[row][col]){ max...

急求!VB编程问题:有一个n×m的矩阵,编写程序,找出其中最大的元素所在...
'新建一个工程,在form中添加一个按钮,按钮中写上以下代码即可 Private Sub Command1_Click()Dim n As Long, m As Long Dim i As Long, j As Long Dim x As Long, y As Long, z As Long Dim a() As Long n = Val(InputBox("输入N", "输入N", 1))m = Val(InputBox("输入M...

编程问题:输入一个N,输出一个矩阵
include <cstdlib> include <iostream> using namespace std;int main(int argc, char *argv[]){ printf("%s","输入N:");int flag=0;int n=0; \/\/保存矩阵阶数 scanf("%d",&n);int length=((1+n)*n)\/2; \/\/计算矩阵元素个数 int m[length]; \/\/按照矩阵元素的个数初始化一个...

7道C语言编程题,急求答案
include <stdio.h> void main(){ int i,j;int sum=0; \/\/定义对角线的和 int a[100][100],n;printf("输入是n*n矩阵的n值:");scanf("%d",&n);printf("输入一个%d*%d矩阵:",n,n);printf("\\n");for(i=0;i<n;i++)for(j=0;j<n;j++){ scanf("%d",&a[i][j]);...

1. 编程实现下面的矩阵运算 (1) 矩阵的界限使用#define进行定义 (2...
矩阵加法:include "stdio.h"define M 2 define N 4 void and(int A[M][N],int B[M][N],int C[M][N]);main(){ int A[M][N],B[M][N],C[M][N];int i,j;for(i=0;i<M;i++){ for(j=0;j<N;j++){ scanf("%d",&A[i][j]);} } for(i=0;i<M;i++){ f...

C语言编程:自定义一个5*5的矩阵,找出矩阵中最大的数,并输出其所在的行...
代码文本:include "stdio.h"define N 5 void dispmatrix(int (*p)[N]){ int i,j;for(i=0;i<N;i++){ for(j=0;j<N;printf("%4d",p[i][j++]));putchar('\\n');} } void findmax(int p[][N]){ int i,j,mi,mj;for(mi=mj=i=0;i<N;i++)for(j=0;j<N;j++)if...

编程完成一个三行四列矩阵的输入输出
int a[3][4],i,j;for(i =0;i<3;i++){ printf(“请输入第一行4个数=>”);scanf(“%d%d%d”,&a[i][0],&a[i][1],&a[i][2],&a[i][3]);} for(i=0;i<3;i++){ for(j=0;j<4;j++)printf(“\\t%d”,a[i][j]);printf(“\\n”);} ...

如何利用c语言编程实现矩阵对角线元素之和
1、首先在电脑中,打开Dev-c++软件,点击“新建源代码”,如下图所示。2、具体程序如下,如下图所示。3、此次的程序最终目的是求出3x3的整型矩阵对角线元素之和,所以要向计算机输入3x3矩阵中的所有元素。4、其次要对输入的矩阵的元素进行放置于相应的位置,以便于之后的计算其对角元素之和。5、最后...

急求!VB编程问题:有一个n×m的矩阵,编写程序,找出其中最大的元素所在...
'新建一个工程,在form中添加一个按钮,按钮中写上以下代码即可 Private Sub Command1_Click()Dim n As Long, m As Long Dim i As Long, j As Long Dim x As Long, y As Long, z As Long Dim a() As Long n = Val(InputBox("输入N", "输入N", 1))m = Val(InputBox("输入M"...

C语言编程题:定义一个5╳5的矩阵,求对角线上的元素之和。
include<stdio.h> include<stdlib.h> include void main(){ int a[4][4],i,j,s1=0,s2=0,sum=0;srand(time(NULL));\/\/生成随机种子 for(i=0;i<5;i++)\/\/赋值 for(j=0;j<5;j++)a[j]=rand()%10+0;printf("随机生成的数组为:\\n");for(i=0;i<5;i++)for(j=0;j<5...

边坝县13978542475: c语言中矩阵的旋转问题.
陈没歪草铂: #include&lt;stdio.h&gt; void main() {int a[3][3]={{11,12,13},{14,15,22},{23,24,25}}; int i,j,t; printf("\n原来的矩阵为:\n"); for(i=0;i&lt;3;i++) {for(j=0;j&lt;3;j++) printf(" %d",a[i][j]); printf("\n\n");} printf("*********************"); for(i=0;i&lt;2;i++) for(j=0;...

边坝县13978542475: C语言编程题 将M*M的矩阵按顺时针旋转90度 -
陈没歪草铂: 顺时针旋转90度不就是矩阵的转置吗?行和列交换就可以了.#include#define M 3void main(){ int a[M][M],b[M][M]; int i,j; printf("输入矩阵a:\n...

边坝县13978542475: 将一个n阶方阵(n为偶)分成四个n/2阶子方阵.将四个子方阵按顺时针旋转一次.c语言编程题,跪求答案. -
陈没歪草铂: //这种小程序还是该自己动手的//帮你写了一个,仅供参考!#include<stdio.h># define N 4 //矩阵的阶 int rot(int matrix[N][N])//分块旋转函数 { int temp[N/2][N/2]; int p_x=0,p_y=0;//起点,用来分别操作四个子块int i,j,m,n; while(p_y<N) {for(n=0,i=p_...

边坝县13978542475: C语言中的螺旋代码是什么意思
陈没歪草铂: 给定一个整数N,生成一个N*N的矩阵,矩阵中元素取值为1到pow(N,2) 1在左上角,其余个数按顺时针方向旋转前进,依次递增放置.例如 ,当N=4,矩阵中的内容如下 1 2 3 4 12 13 14 5 11 16 15 6 10 9 8 7 我写的,关于螺旋部分,但有二维数...

边坝县13978542475: c语言编程魔方阵顺时针旋转90度编程怎么写 例如: 8 1 6 3 5 7 4 9 2 旋转90度 -
陈没歪草铂: 总的矩阵:[a,a] 某一个点:[i, j][0,0] -> [0,a] [0,a] -> [a,a] [a,a] -> [a,0] [a,0] -> [0,0] 其它的:[i, j] -> [j, a-i]

边坝县13978542475: 字母旋转矩阵!求高手!C语言编写…… -
陈没歪草铂: #include void main() { int M; int N; int flag=0; int num1=0; int num2=1; int i=0; int j=0; char str='A'; char Array[31][31]; printf("请输入矩阵的行M和矩阵的列N:"); scanf("%d%d",&M,&N); Array[0][0]=str; while(flag{ switch(num2%4) { case 1: ++j; ...

边坝县13978542475: 编写程序输出一个3*4矩阵中数据为负的元素所在的位置,矩阵数据由键盘输入 -
陈没歪草铂:[答案] #include main() { int i,j,a[3][4]; for(i=0;i

边坝县13978542475: C语言螺旋矩阵 -
陈没歪草铂: #include <stdio.h>#include<stdlib.h> void main() { int i,j,n,number=1,a[30][30]; printf("Please input a number N:"); scanf("%d",&n); for(i=0;i<=n/2;i++) //控制总共有几个顺时针螺旋 { for(j=i;j<n-i;j++) //向右(改变纵坐标,保持横坐标不变) a[i]...

边坝县13978542475: C语言 矩阵旋转问题ACM题
陈没歪草铂: #include<stdio.h> void main() { int a[100][100],k=1,i,n,j,d,e; scanf("%d",&n); for(i=n;i>0;i=i-2) { d=(n-i)/2; e=(n-i)/2-1; for(j=1;j<=4*(i-1);j++) { if(j<=i) { e++; a[d][e]=k++; } else { if(j<=2*i-1) { d++; a[d][e]=k++; } else { if(j<=3*i-2) { e--; a[d][e]=k++; } else { if...

边坝县13978542475: C语言编程 构成一个M*N的矩阵,将1到M*N个数按顺时针由外到内填入到矩阵中去 -
陈没歪草铂: #include<stdio.h> #define m 10 #define n 10 int main() { int i=0,j=0,k=0,kk; int s,b=0,d=0,h,bb; int a[m][n]; h=m; s=n; if(m>n)bb=m; else bb=n; for(kk=0;kk<bb/2;kk++) { i=b; j=d; for(j=d;j<s;j++) a[i][j] = k++; for(i=b+1;i<h;i++) a[i][j-1] = k++;for(j=j-1;j>d+1...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网