IInput
一个整数n(1 <= n <= 50)。
Output
如上边长为n的三角形。
Sample Input
5
Sample Output
* *** ***** ******* ********* ******* ***** *** *
分析题目:先看上半部分1.每一行 要求输出的图形由空格和星号组成,它们的数量与n有关,找出规律,控制每一行中的数量;
2.行与行之间 行与行之间空格的个数与星号的个数有规律地变化,找出规律;
3.列数 列数与菱形的边长即所输入的n有联系,找出联系。
思路:1.2. 第一行空格4个,最后一行0个,可见是从第一行开始空格数量由(n-1)个开始,随行数增加逐个递减
已知次数的循环可用for语句实现,设i初值为1,第i行就有n-i个;行末需要换行;
3.
列数控制也可用for语句; 图形共有2(n-1)列;看做(n)+(n-1)列;上半部分有n列;下半部分同
理可得。
问题: 实践过程中发现:每一行需要进行不同次数的循环,而n输入后值是固定的,若试图使它的值改变,又会
带来其他的影响。
解决: i是变化的,可以与通过与它建立联系,使每一行实现不同的循环次数。
代码:
#include <stdio.h>
int main()
{
int n,i,j,k;
scanf ("%d",&n);
for(i=1;i<=n;i++)//控制列数
{
for(j=n-1;j>i-1;j--)//控制行数
{
printf("%c",' ');
}
for(k=0;k<(2*i-1);k++)//;与数值可变又有规律可循的i建立联系
{
printf("*");
}
printf("\n");
}
//后面部分同理可得
for(i=1;i<=n-1;i++)
{
for(j=0;j<=(i-1);j++)
{
printf("%c",' ');
}
for(k=0;k<(2*(n-i)-1);k++)
{
printf("*");
}
printf("\n");
}
return 0;
}