c语言打印一个菱形!!小白思路篇!!
目录
第二个for循环用于打印空格,有菱形可以看出第一行的空格为6个,所以line - 1 - i的意思是,line - 1是因为第一行已经有一个星星,所以要先减一,- i的意思是每行少一个空格。
第三个for循环则是用来打印打印星星,因为每一行星星加两个,且第一行本来就存在1个星星所以,第二个表达式中 2 * i + 1的含义是每一行多两个星星且还有第一行的第一个星星。
用C语言在屏幕上输出以下图案:
1.做题思路
一个菱形可以拆解为两个三角形一个大一个小,由此思路就是先打印上面的三角形在打印出下面的三角形。
2.怎么实现呢
第一行只有一个星星后续每一行多两个星星(前面的星星是把空格取代,后面的星星是自然多出的),再看每一行的空格数量,明显空格的数量是自第一行每一行减一的。这样就可以构思出代码。
3.代码的解释
输入要打印的上半三角的行数,后利用for循环的嵌套
第一个for循环用于打印多行
第二个for循环用于打印空格,有菱形可以看出第一行的空格为6个,所以line - 1 - i的意思是,line - 1是因为第一行已经有一个星星,所以要先减一,- i的意思是每行少一个空格。
第三个for循环则是用来打印打印星星,因为每一行星星加两个,且第一行本来就存在1个星星所以,第二个表达式中 2 * i + 1的含义是每一行多两个星星且还有第一行的第一个星星。
记得最后要换行哦!!!。
本题对于初学者而言还是挺绕的,不懂的uu可以多看看熟悉一下奥
int main()
{
int line = 0;
int i = 0;
scanf("%d", &line);//7
//打印上半部分
for(i=0; i<line; i++)
{
//打印一行
//打印空格
int j = 0;
for(j=0; j<line-1-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;
}