1.代码要求
一个整数(2~20),表示输出的行数,也表示组成“X”的反斜线和正斜线的长度
2.实现代码
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h>
int main() {
int a = 0;
int i = 0;
int j = 0;
scanf("%d", &a);
for (i = 1; i <= a; i++) {
for (j = 1; j <= a; j++) {
if (i == j) {
printf("*");
}
else if ((j == (a + 1) - i)) {
printf("*");
}
else {
printf(" ");
}
}
printf("\n");
}
return 0;
}
3.分析过程
这题难点就是怎么控制在正确的地方打印‘*’
通过简单的画图我们可以知道,是在对角线上打印‘*’
现在来看好简单呀,当时博主兜兜转转写了好多限制条件都没有实现,绕了半天才想到单纯对角线
也要注意,只一个i == j是只能打印出主对角线
对于副对角线,博主的想法是,无论i ,j的值是什么,两者之和永远的对角线长度+1,也就是
a + 1 = i + j
j = (a + 1) - i
这样来实现副对角线的打印
当然肯定不止这一种方法,欢迎大家集思广益!