因此,我正在为考试做准备,我面临一个练习,我必须用一个奇数大小(t> = 3)填充一个方矩阵。该矩阵表示一个装有1的指南针的方向,其余的盒子则填充有0。 例如 7X7的罗盘就是这样表示的:
1001001
0101010
0011100
1110111
0011100
0101010
1001001
由于某种原因,我的代码无法正常工作。
#include <stdio.h>
#include <stdlib.h>
void create_display(int m[][50], int t) {
int i,j,k;
for(i=0;i<t;i++) {
for(j=0;j<t;j++) {
m[i][j]=0;
}
}
for(j=0;j<t/2;j++) {
m[t/2][j]=1;
m[t/2][t-j-1]=1;
}
for(i=0;i<t/2;i++) {
m[i][t/2]=1;
m[t-i-1][t/2]=1;
}
for(i=0;i<t;i++) {
for(j=0;j<t/2;j++) {
if(i=j && i!=t/2) {
m[i][j]=1;
m[i][t-j-1]=1;
}
}
}
for(i=0;i<t;i++) {
for(j=0;j<t;j++) {
printf("%d",m[i][j]);
}
printf("\n");
}
}
void main() {
int t;
int m[50][50];
do {
printf("Enter the size of the compass : ");
scanf("%d",&t);
} while(!(t>=3 && t%2==1));
create_display(m,t);
}
答案 0 :(得分:0)
#include <stdio.h>
#include <stdlib.h>
void create_display(int m[][50], int t) {
int i,j,k;
for(i=0;i<t;i++) {
for(j=0;j<t;j++) {
m[i][j]=0;
}}
for(j=0;j<t/2;j++) {
m[t/2][j]=1;
m[t/2][t-j-1]=1;
}
for(i=0;i<t/2;i++) {
m[i][t/2]=1;
m[t-i-1][t/2]=1;
}
for(i=0;i<t/2;i++) {
for(j=0;j<t/2;j++) {
if(i==j) {
m[i][j]=1;
m[i][t-j-1]=1;}
}}
j=(t/2)-1;
for(i=(t/2)+1;i<t;i++) {
for(j=(t/2)+1;j<t;j++) {
if(i==j) {
m[i][j]=1;
m[i][t-j-1]=1;
}
}}
for(i=0;i<t;i++) {
for(j=0;j<t;j++) {
printf("%d\t",m[i][j]);
}
printf("\n");
}
}
int main() {
int t;
int m[50][50];
do {
printf("Enter the size of the compass : ");
scanf("%d",&t);
}while(!(t>=3 && t%2==1));
create_display(m,t);
return 0;
}