目录
三、菱形
前言
拿下三种图形代码转换!
提示:以下是本篇文章正文内容,下面案例可供参考
一、X形
输入:5
输出:
* *
* *
*
* *
* *输入:6
输出:
* * * * ** ** * * * *
通过上面的提示,我们可以观察一下这个图形,多少有点手足无措,我们将它适当修改一下便于我们观察
*---*
-*-*-
--*--
-*-*-
*---*
我们发现它其实就是一个5X5二维数组的样子,并且在对角线的位置打印了“星星”
一般思路就是1.观察规律
2.打印空格
3.打印星星
#include <stdio.h>
int main()
{
int n = 0;
while (scanf("%d", &n) == 1)
{
int i = 0;
int j = 0;
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;
}
代码展示:
#include <stdio.h>
int main()
{
int n = 0;
while (scanf("%d", &n) == 1)
{
int i = 0;
int j = 0;
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;
}
二、箭形
输入:2
输出:
* ** *** ** *输入:3
输出:
*
**
***
****
***
**
*
思路:也是打印空格和打印星,但是划分一下,一部分分为上,一部分分为下,前n行为上,剩下n+1为下,需要注意的是那个j的约束条件不是很好想
#include <stdio.h>
int main()
{
int i = 0;
int j =0;
int n = 0;
while (scanf("%d", &n)==1)
{
//上部分的行
for(i=0;i<n;i++)
{
//打印空格
for(j=0; j<n-i; j++)
{
printf(" ");//这里的空格是两个
}
//打印*
for(j=0; j<=i; j++)
{
printf("*");
}
printf("\n");
}
//下部分的行
for(i=0;i<n+1;i++)
{
//打印空格
for(j=0; j<i; j++)
{
printf(" ");
}
//打印*
for(j=0; j<n+1-i; j++)
{
printf("*");//记得每一行打印完要换行
}
printf("\n");
}
}
return 0;
}
代码展示:
#include <stdio.h>
int main()
{
int i = 0;
int j =0;
int n = 0;
while (scanf("%d", &n)==1)
{
//上
for(i=0;i<n;i++)
{
//打印空格
for(j=0; j<n-i; j++)
{
printf(" ");
}
//打印*
for(j=0; j<=i; j++)
{
printf("*");
}
printf("\n");
}
//下
for(i=0;i<n+1;i++)
{
//打印空格
for(j=0; j<i; j++)
{
printf(" ");
}
//打印*
for(j=0; j<n+1-i; j++)
{
printf("*");
}
printf("\n");
}
}
return 0;
}
三、菱形
#include <stdio.h>
int main()
{
int line = 0;
scanf("%d", &line);
int i = 0;
//上
//打印一行
for (i = 0; i < line; i++)
{
//打印空格
int j = 0;
for (j = 0; j < line - i; j++)
{
printf(" ");
}
//打印*
for (j = 0; j < 2 * i + 1; j++)
{
printf("*");
}
printf("\n");
}
//下
for (i = 0; i < line + 1; i++)//打印一行
{
//打印空格
int j = 0;
for (j = 0; j <i; j++)
{
printf(" ");
}
//打印*
for (j = 0; j < 2 * (line +1 - i) - 1; j++)
{
printf("*");
}
printf("\n");
}
return 0;
}
将这视为上半部分:有line行,打印空格的条件是line-i,(切记最后那一个空格不要忘了,不然就和下半部分最开头那个星星并齐了)打印星的条件是2 * i + 1,将上部分的打印完了以后,切记每次打完一行要换行。
打印下半部分:下半部分有line+1行,空格的控制条件是j<i,星星的控制条件是 2*(line+1-i)-1,将下部分的打印完了以后,切记每次打完一行要换行。
总结
以上就是我们这次的内容了
图形要观察规律,一般思路就是打印空格,打印星星,寻找控制条件
复杂一点的,可以将其分成两部分去解决,分开解决就把问题变得简单了