题目:
思路:
之前做这种图形题,比如PTA上的打印菱形,先打印空格,然后再打印字符(空格和字符的个数找规律实现),我刚开始也用这种思路去做,发现很难做。
所以换另一个思路,可以先想象这是一个由*组成的正方形,然后我们从这个正方形里面选择性的打印*组成一个X型。
在写代码时发现我们根本不用初始化,也是寻找规律,先想象一个没有任何初始化的二维数组,然后当横纵坐标相等或者相加是n-1时,我们就打印*,其余就打印空格!
源码:
int main() { int n = 0; //char arr[21][21] = { '*' }; //根本不需要初始化 while (scanf("%d", &n) != EOF) { for (int i=0;i<n;i++) { for (int j=0;j<n;j++) { if ((i == j) || (i + j == n-1)) printf("*"); else printf(" "); } printf("\n"); } } return 0; }
灵魂总结:
以后再遇到这种打印图形的问题,我们可以有两种思路。
第一种就是一行一行的打印,去寻找行数和字符/空格之间的关系。
第二种就是想象一个没有任何初始化的二维数组,也是经过寻找规律去自己赋值打印!