任务:
打印用“*”组成的X形图案。
输入描述:
多组输入,一个整数(2~20),表示输出的行数,也表示组成“X”的反斜线和正斜线的长度。
输出描述:
针对每行输入,输出用“*”组成的X形图案。
示例:
代码如下:
//打印x图形
int main()
{
int n = 0;
while (cin >> n) //表示多组输入
{
for (int i = 1; i <= n; i++) //i为行
{
for (int j = 1; j <= n; j++) //j为列
{
if ((i == j) || (i + j == n + 1))
{
cout << "*";
}
else
{
cout << " ";
}
}
cout << endl;
}
cout << endl;
}
}
思路解析:
用 i 表示行,j 表示列 ,外层for循环为行,内层for循环为列,"*"的左斜线位置为 i = j ,"*"的右斜线位置为 i+j = n+1 ,剩下的位置打印空格。
换行解释:
下图为内层for循环结束不换行的运行结果
对此现象做出解释
下图外层for循环结束换行(上图)与不换行(下图)的区别
拓展
由此题可以引申出另一题求主次对角线之和 。