我们先来看题目
kiki学习了循环,Bob老师给他除了一系列打印图案的练习,该任务是用"*"打印x图形
输入描述:一个整数(2~20),表示输出的行数,也表示组成x的反斜线和正斜线的长度
输出描述:输出用”*“组成的x型图案;
Eg:输入5
输入6
接下来我们看代码
#include<stdio.h>
int main()
{
int n;
scanf("%d",&n);
int left = 1;
int right = n;
for (int i = 1; i <= n; i++)//打印n行,n次循环
{
for (int j = 1; j <= n; j++)//每一行中的循环
{
if (left == j)
printf("*");
else if (right == j)
printf("*");
else
printf(" ");
}
left++;
right--;//使得每一行打印出来的*逐渐左/右移
printf("\n");
}
return 0;
}
那么我们来检验代码的正确性
由此可见,代码是正确的,那么这段代码是怎样运行的呢?
我们可以看到,本体代码运用了两次循环,要求有n行的同时也要有n列,其中每行每列都由*和空格组成,那我们不妨把困难问题简单化,把x看成由左右两条斜杠组成,对左边反斜杠来说,第一行中第一个是*,第二行中第二个是*,以此类推,第n行中第n个是*;再看右边,也是同理。
此时再看这段代码是不是就好理解了
如果还是理不清楚,不妨把左边的输出改为a,区别于右边的*,更有助于理解
好啦,本题代码讲解结束啦,友情感谢解题过程中@苏格拉没有底的倾情帮助~