#include <stdio.h>

void theX(int n);

int main() {
    int n;
    while (scanf("%d", &n) != EOF) { 
        theX(n);
    }
    return 0;
}

void theX(int n){
    char a[n][n];
    int i,j;
    for(i=0;i<n;i++){
        for(j=0;j<n;j++){
            if(i==j||(i+j)==(n-1))	//对角线位置的元素特点为:横纵坐标相等或横纵坐标想加等于边长
                a[i][j]='*';
            else
                a[i][j]=' ';
        }
    }

    for(i=0;i<n;i++){
        for(j=0;j<n;j++)
            printf("%c",a[i][j]);
        printf("\n");
    }
}

我们可以使用字符数组来解决这个问题。

不难发现“*”出现的位置有一定规律,可以看作是出现在一个正方形的对角线上。

因此可以创建一个n*n的字符数组,在对角线的位置上存入‘*’,非对角线位置存入空格(space)‘ ’;然后在顺序打印整个字符数组,就能出现X形的图形。