我的代码没有显示我应该显示的矩阵

时间:2019-12-24 11:39:14

标签: c

因此,我正在为考试做准备,我面临一个练习,我必须用一个奇数大小(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);
} 

1 个答案:

答案 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;
}