❶ 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(" ");
}
}
這種旋轉矩形的,個人建議生成一維數組,用指針指向改數組,再用指針來賦值;也可生成二維數組,再定義數組指針來指向,這樣稍麻煩一些些。