在c中操作数组[已关闭]

bprjcwpo  于 2022-12-17  发布在  其他
关注(0)|答案(2)|浏览(190)

已关闭。此问题需要details or clarity。当前不接受答案。
**想要改进此问题?**添加详细信息并通过editing this post阐明问题。

5天前关闭。
Improve this question
Example
怎样才能只得到黑色方块中的元素?
我尝试了很多不同的方法,但是有些不起作用,有些太长了,所以我想知道你们有没有更简单的方法,我解决的方法是,使用很多标志,加减法,得到想要的元素。

bzzcjhmw

bzzcjhmw1#

这是一种很好的模式,它是通过嵌套两个for来实现的,下面的代码以图形化的方式解决了这个问题。

  • 看到黑盒的数量在顶部和底部一次减少一个,每次移动到列的右侧。
  • 同样的情况也反映在右边
  • 那么我们能做什么呢?我们可以做一个for循环到中间的列,用i表示,两边的列都减一。
#include <stdio.h>

int main(void) {
    int size;
    scanf("%i", &size);

    char array[size][size];
    for (int i = 0; i < size; i++){
        for (int j = 0; j < size; j++) {
            array[i][j] = '0';
        }
    }

    // This is the number of columns that we will go through, 
    // note that if it is odd it is necessary to go through 
    //one more which is the center
    int loop = size / 2 + size % 2;
    
    for (int i = 0; i < loop; i++) {
        // "i" is the number of blocks we will remove both top and bottom

        for (int j = i; j < size - i; j++) {
            // j start at the first block already removing the top
            // And in "size - i", we remove the bottom, limiting where we will go until we go

            array[j][i] = '1';
            array[size - (j + 1)][size - (i + 1)] = '1'; // This is mirroring to the other side
        }
    }
    for (int i = 0; i < size; i++) {
        for (int j = 0; j < size; j++) {
            printf("%c ", array[i][j]);
        }
        printf("\n");
    }
    return 0;
}

这是12码的图案

xeufq47z

xeufq47z2#

这是一段简单的代码,可以生成像下面这样只有黑色方块的图案,而且在这个例子中你不需要定义array。

#include <stdio.h>
#define SIZE 16 //define even no only
int main() {
    for(int i=0; i<SIZE; i++){
        int tmp=i;
        for(int j=0; j<SIZE; j++){
        if(i<(SIZE/2)){
            if(j<i || j>(SIZE-i-1)){
                printf("*  ");
            }else{
                printf("   ");
            }
        }else{
            // remove '=' sign if willing to generate pttern with odd no
            if(j>=i || j<=(SIZE-i-1)){ 
                printf("*  ");
            }else{
                printf("   ");
            }
        }
        }
        printf("\n");
    }

    return 0;
}

相关问题