题目:打印X形图案
在做这道题之前可以先做下另外两个题目作为铺垫喔。
勤能补拙,努力的人终有收获!
第一题 [反斜线形图案]
遇到要打印图案问题可以把实例中的图形给复制放在给定的代码区内看看!
然后看看这个图形到底是怎么组成的。(需要选中它们才能显示)
这里面小点点代表着一个空位,相当于空格,那这样我们不难分析出规律。
行数受n控制,每行又进行先打印空格,再打印*再打印空格。不过这种方法实在啰嗦。我们换个角度思考,这个其实是个正方形,小点点代表一个位子,那 就是正方形的对角线,
定义i表示行,j表示列哈。
那么满足的条件就是i==j
int main() { int n; while (scanf("%d", &n) != -1) { int i, j; for (i = 0;i < n;i++) { for (j = 0;j < n;j++) { if (i == j) { printf("*"); } else printf(" "); } printf("\n"); } } return 0; }
不过我提到的比较啰嗦的那种解法也可以的,代码如下:
#include <stdio.h> int main() { int n; while(scanf("%d",&n)!=-1) { int i,j; for(i=0;i<n;i++) { for(j=0;j<i;j++) { printf(" "); } printf("*"); for(j=0;j<n-1-i;j++) { printf(" "); } printf("\n"); } } return 0; }
第二题[正斜线形图案]
解法跟第一道题目是一样的,把它先看成一个正方形,看*的分布规律就行了。
所以代码如下:
int main() { int n; while (scanf("%d", &n) != -1) { int i, j; for (i = 0;i < n;i++) { for (j = 0;j < n;j++) { if (i + j == n - 1) { printf("*"); } else printf(" "); } printf("\n"); } } return 0; }
最后一题:X形图案
做完前面俩题,再做这题是不是有种豁然大悟的感觉呢,只要把上面两种对角线的情况综合一下,就能打印出来X图形了。
#include <stdio.h> int main() { int n; while (scanf("%d", &n) != -1) { int i, j; for (i = 0;i < n;i++) { for (j = 0;j < n;j++) { if (i == j) { printf("*");//反斜线对角线打印; } else if (i + j == n - 1)//正斜线对角线打印 { printf("*"); } else printf(" "); } printf("\n"); } } return 0; }
感谢大家的观看喔!!!