更新于2020.6.22 20:53
对于一些同学问我的问题,我做出回答
问题一:n*m矩阵怎么写?
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int num[20][20];
int main() {
int N;
scanf("%d",&N);
while(N--) {
int n,m;
scanf("%d %d",&n,&m);
int i,j;
int js=1;
memset(num,0,sizeof(num));
int xh1=n>m?m:n;
for(i=0; i<xh1/2; i++) {
for(j=i; j<=m-i-1; j++) {
num[i][j]=js++;
}
for(j=i+1; j<=n-i-1; j++) {
num[j][m-i-1]=js++;
}
for(j=m-i-2; j>=i; j--) {
num[n-i-1][j]=js++;
}
for(j=n-i-2; j>i; j--) {
num[j][i]=js++;
}
}
if(xh1%2) {
for(j=i; j<=m-i-1; j++) {
num[i][j]=js++;
}
for(j=i+1; j<=n-i-1; j++) {
num[j][m-i-1]=js++;
}
}
for(int i=0; i<n; i++) {
for(int j=0; j<m; j++)
printf("%5d",num[i][j]);
printf("\n");
}
}
return 0;
}
问题二:n阶字母螺旋矩阵怎么写?
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
char num[20][20];
int main()
{
int N;
scanf("%d",&N);
while(N--)
{
int n;
scanf("%d",&n);
int i,j;
int js='A';
memset(num,0,sizeof(num));
for(i=0; i<=n/2; i++)
{
for(j=i; j<=n-i-1; j++)
{
if(js>'Z')
js=js-1-'Z'+'A';
num[i][j]=js++;
}
for(j=i+1; j<=n-i-1; j++)
{
if(js>'Z')
js=js-1-'Z'+'A';
num[j][n-i-1]=js++;
}
for(j=n-i-2; j>=i; j--)
{
if(js>'Z')
js=js-1-'Z'+'A';
num[n-i-1][j]=js++;
}
for(j=n-i-2; j>i; j--)
{
if(js>'Z')
js=js-1-'Z'+'A';
num[j][i]=js++;
}
}
for(int i=0; i<n; i++)
{
for(int j=0; j<n; j++)
printf("%5c",num[i][j]);
printf("\n");
}
}
return 0;
}