#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形的图形。