C手搓一切强行解决

cgr202440025189 发表于 25天前 · 关联问题 Matrix

include <stdio.h>

include <stdlib.h>

int shun90(int p,int N); int ni90(int p,int N); int dui(int p,int N);

int main() {

int N,n,M; int *p; scanf("%d %d",&N,&M); p=(int*)malloc(N*N*sizeof(int)); if(p==NULL)printf("内存申请失败!"); else { for(int i=1;i<=N*N;i++) { scanf("%d",&n); *(p+i-1)=n; } } for(int i=0;i<M;i++) { scanf("%d",&n); if(n==1)p=shun90(p,N); else if(n==2)p=ni90(p,N); else if(n==3)p=dui(p,N); for(int t=0;t<N;t++) { for(int h=0;h<N;h++) { printf("%d ",*(p+t*N+h)); } } printf("\n\n"); } return 0;

}

int shun90(intp,int N) {

int* pp=(int*)malloc(N*N*sizeof(int)); if(pp==NULL)printf("内存申请失败"); else { for(int i=0;i<N;i++) { for(int t=0;t<N;t++) { *(pp+t*N+N-i-1)=*(p+t+i*N); } } } return pp;

}

int ni90(intp,int N) {

int* pp=(int*)malloc(N*N*sizeof(int)); if(pp==NULL)printf("内存申请失败"); else { for(int i=0;i<N;i++) { for(int t=0;t<N;t++) { *(pp+(N-t-1)*N+i)=*(p+t+i*N); } } } return pp;

}

int dui(intp,int N) {

int* pp=(int*)malloc(N*N*sizeof(int)); if(pp==NULL)printf("内存申请失败"); else { for(int i=0;i<N;i++) { for(int t=0;t<N;t++) { *(pp+(N-i-1)*N+N-t-1)=*(p+t+i*N); } } } return pp;

}

cgr202440025189 发表于 25天前

注意斜体的英文原本是+正常的英文,比如p在上面会显示成斜体的p,还原即可