生成1和0并以阵列内的菱形存储

时间:2016-04-29 13:00:31

标签: c arrays shapes

我有一项任务,包括创建一段代码,用于生成和存储形状中的值:

1 1 0 1 1
1 0 0 0 1
0 0 0 0 0
1 0 0 0 1
1 1 0 1 1

我可能只使用数组和循环。没有必要打印阵列,但我打印它只是为了检查我是否已正确完成。在我的头脑中这应该工作,但它返回垃圾。该阵列是二维的,必须具有相等的奇数编号。对于任何类型的编程,我都有不到一周的经验。

main(){
    int number;
    printf("PLEASE GIVE ME A EVEN NUMBER FROM 3 TO 20\n");
    scanf("%d", &number);
    if(number%2==0)
    {
        printf("THIS WON'T FIT\n");
        return 0;
    }

    int array1[number][number];
    int lin, col, zero=1, count;
    int ones=(number-1)/2;
    for(lin=0;lin<number;lin++)
    {
        for(col=0;col<number;col++)
        {
            for(count=1; count<=ones;count++)
            {
                array1[lin][col]=1;

                for(count=1;count<=zero;count++)
                {
                    array1[lin][col]=0;
                }
            }
        }

        --ones;
        zero+=2;
    }

    for(lin=0;lin<number;lin++)
    {
        for(col=0;col<number;col++)
            printf("%d", array1[lin][col]);
        printf("\n");
    }
}

1 个答案:

答案 0 :(得分:0)

#include <stdio.h>
#include <stdlib.h>

int main(void){
    int number;
    printf("PLEASE GIVE ME A ODD NUMBER FROM 3 TO 19\n");
    scanf("%d", &number);
    if(number%2==0 || number < 3 || number > 19){
        printf("THIS WON'T FIT\n");
        return 0;
    }
    int center = number / 2;
    int array[number][number];

    for(int i = 0; i < number; ++i){
        for(int j = 0; j < number; ++j){
            array[i][j] = abs(i-center)+abs(j-center) > center;
            printf("%d ", array[i][j]);
        }
        puts("");
    }
    return 0;
}