#13968: NA80% 請問哪裡錯了


qwer1478961 (Khan)

學校 : 高雄市立海青高級工商職業學校
編號 : 74085
來源 : [114.47.85.53]
最後登入時間 :
2020-10-16 09:48:25
b266. 矩陣翻轉 -- 2016 APCS 實作題第二題 | From: [122.121.2.69] | 發表日期 : 2018-05-21 23:07

#include <stdio.h>
#include <stdlib.h>
#define MAX 10

int r,c,m;
int a[MAX][MAX],b[MAX][MAX];

void Flip(void);
void Rotating(void);
void printa(void);

int main(int argc, char *argv[]) {
int sel,i,j;
scanf("%d %d %d",&r,&c,&m);
for(i=0;i<r;i++)
for(j=0;j<c;j++)
scanf("%d",&a[i][j]);
for(i=1;i<=m;i++){
scanf("%d",&sel);
if(sel==1) Flip();
else Rotating();
}
printf("%d %d\n",r,c);
printa();
return 0;
}

void printa(void){
int i,j;
for(i=0;i<r;i++){
for(j=0;j<c;j++){
if(j) printf(" %d",a[i][j]);
else printf("%d",a[i][j]);
}
printf("\n");
}
}


void Flip(void){
int i,j;
for(i=0;i<c;i++)
for(j=0;j<r;j++)
b[j][i]=a[r-j-1][i];
for(i=0;i<r;i++)
for(j=0;j<c;j++)
a[i][j]=b[i][j];

}


void Rotating(void){
int temp,i,j;
for(i=0;i<c;i++)
for(j=0;j<r;j++)
b[i][j]=a[r-j-1][i];

temp=r;
r=c;
c=temp;

for(i=0;i<r;i++)
for(j=0;j<c;j++)
a[i][j]=b[i][j];

}

 
#13973: Re:NA80% 請問哪裡錯了


a0970580085@gmail.com (/)

學校 : 義守大學
編號 : 74647
來源 : [125.229.235.114]
最後登入時間 :
2023-08-30 17:36:04
b266. 矩陣翻轉 -- 2016 APCS 實作題第二題 | From: [61.221.174.229] | 發表日期 : 2018-05-22 13:39

#include
#include
#define MAX 10

int r,c,m;
int a[MAX][MAX],b[MAX][MAX];

void Flip(void);
void Rotating(void);
void printa(void);

int main(int argc, char *argv[]) {
int sel,i,j;
scanf("%d %d %d",&r,&c,&m);
for(i=0;i<r;i++)
for(j=0;j<c;j++)
scanf("%d",&a[i][j]);
for(i=1;i<=m;i++){
scanf("%d",&sel);
if(sel==1) Flip();
else Rotating();
}
printf("%d %d\n",r,c);
printa();
return 0;
}

void printa(void){
int i,j;
for(i=0;i<r;i++){
for(j=0;j<c;j++){
if(j) printf(" %d",a[i][j]);
else printf("%d",a[i][j]);
}
printf("\n");
}
}


void Flip(void){
int i,j;
for(i=0;i<c;i++)
for(j=0;j<r;j++)
b[j][i]=a[r-j-1][i];
for(i=0;i<r;i++)
for(j=0;j<c;j++)
a[i][j]=b[i][j];

}


void Rotating(void){
int temp,i,j;
for(i=0;i<c;i++)
for(j=0;j<r;j++)
b[i][j]=a[r-j-1][i];

temp=r;
r=c;
c=temp;

for(i=0;i<r;i++)
for(j=0;j<c;j++)
a[i][j]=b[i][j];

}


題目要從B推回A,

你現在的寫法是從A變到B。

 

 

 

兩個地方要改:旋轉方向跟讀取mk的順序。

 
ZeroJudge Forum