例一:
输入描述:
多组输入,一个整数(2~20),表示输出的行数,也表示组成“X”的反斜线和正斜线的长度。
输出描述:
针对每行输入,输出用“*”组成的X形图案。
示例一:
输入:
5
输出:
* *
* *
*
* *
* *
示例二:
输入:
6
输出:
* *
* *
**
**
* *
* *
对于图形图案的构造,我们首先要做的就是观察、找规律,然后对图形进行搭建,构造。
分析:
对于这样的图形,首先我们可以发现图形相当于一个二维数组,然后对二维数组中的值进行存放。如图:
我们可以发现,定义两个变量,当两个变量的值相等时,就打印“ * ”,或者当两个变量相加等于输入的变量的值减去一时,也打印“ * ”。
废话不多说,上代码。
#include<stdio.h>
int main()
{
int n = 0;
scanf("%d", &n);
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;
}
我们可以用编译器进行打印,输出的结果
例二:
输入描述:
多组输入,一个整数(3~20),表示输出的行数,也表示组成正方形边的“*”的数量。
输出描述:
针对每行输入,输出用“*”组成的“空心”正方形,每个“*”后面有一个空格。
示例1:
输出:
* * * *
* *
* *
* * * *
示例2
输入:
5
输出:
* * * * *
* *
* *
* *
* * * * *
首先,也是要进行分析。
我们可以发现,当创建两个变量,并且他们的值等于1或者3时,打印“ * ”。
上代码:
#include<stdio.h>
int main()
{
int n = 0;
scanf("%d", &n);
for (int i = 0; i <= n - 1; i++)
{
for (int j = 0; j <= n - 1; j++)
{
if (i == 0 || i == n - 1)
{
printf("* ");
}
else if (j == 0||j ==n -1)
{
printf("* ");
}
else
printf(" ");
}
printf("\n");
}
return 0;
}
编译可知
如图所示