如何打印" x"形状?

时间:2018-03-25 10:17:01

标签: c while-loop printf scanf

我的作业需要一些帮助。我花了大约2个小时就完成了这件事,但我无法理解它(c编程)。我必须像这样打印一个x:

*       *
 *     * 
  *   *  
   * *   
    *    
   * *   
  *   *  
 *     * 
*       *

程序的步骤应该像这样工作。 1.用户输入一个大小的数字(这个单个数字基本上是宽度和高度)。此外,我们可以假设用户总是输入一个奇数(所以我们不需要条件)。 它根据那个大小绘制了X.

但是,我只能使用while循环,if语句,scanf和printf。没别了。

这是我到目前为止所能得到的(只是对角线)

row = 0;
while (row < size) {
    column = 0;
    while (column < size) {
        if (row == column) {
            printf("*");
        } else {
            printf(" ");
        }
        column++;;
    }
    printf("\n");
    row++;
}

3 个答案:

答案 0 :(得分:1)

这应该有效

#include <stdio.h>

int main()
{
    int size, row, column;

    scanf("%d", &size);

    row = 0;
    while (row < size)
    {
        column = 0;
        while (column < size)
        {
            if (column == row || column == size - row - 1)
            {
                printf("x");
            }
            else
            {
                printf(" ");
            }
            column++;
        }
        printf("\n");
        row++;
    }

    return 0;
}

答案 1 :(得分:0)

#include <stdio.h>

int main(void) {
    int size = 11; //this should be the size given by user.

    char line[size + 1];
    int i;
    for(i = 0; i < size; i++) line[i] = ' ';
    line[size] = '\0';

    int se = 0;
    int sw = size - 1;
    while(se < size && sw >= 0){
        line[se] = line[sw] = 'x';
        printf("%s\n", line);
        line[se++] = line[sw--] = ' ';
    }

    return 0;
}

在Ideone上测试并且工作。

答案 2 :(得分:0)

您只检查一个对角线。要获得所需的模式,请更改if条件,如下所示... if((row == column)||(row ==(size-column-1)))