猎风老师的习题课。
大家好,下面来看一下嵌套循环图形输出的星号正三角这道题目。题目哀求输入一个整数n,然后输出一个n行的星号正三角形。星号正三角形实在和直角三角形的差异便是居中的等腰三角形,它的星号数量每行都是一个奇数。
来看一下这张图,比如第一行是一个,第二行是三个,第三行是五个。采取的方法还是和上面的题目类似的方法,便是对每一行的输出,把它分成空格和星号这样两个部分。这道题的重点便是确定星号的数量和空格的数量。

·首先来看一下星号的数量,正三角形的星号数量是奇数,奇数可以用一个式子来表达,行号是i的时候,它的星号的数量便是两倍的i减去1,这是奇数的表达式。
·星号的数量确定了之后,空格的数量是多少个?空格的数量可以通过不雅观察也可以创造一些规律。比如第一行的时候会创造它有两个空格,它的n是即是3的,i即是1,它的空格数量2个。比如n即是3的时候,行号i即是2的时候,它的空格数量是1个。实在仔细推导一下,它的数量可以用n减i得到。
·还有一种方法,实在它的空格数量可以严格推导。假设我是第n行的时候,它的总数量该当是两倍的n减去1,就第n行n=3的时候便是5个。以是把它算作一个矩形的时候,它的每一行的总格子该当跟末了一行的格子相等,便是r n减一个,总格子是r n减一个。
·当第i行的时候,它的星号是多少?是2i-1,用总格子减去个中的星号的数量,便是剩下的,便是当前这一行的空格的数量。这个式子减下来就即是两倍的n减去两倍的i,但是这个空格是旁边对称的。左边和右边的数量是相等的。然后把这个式子再除以2就得到n减i,以是它的空格是数量是n减i,是可以严格推导的。
下面开始编写程序。首先从键盘输入一个整数n=intlinput(),然后来一个两层的for循环,表面代表有n行,for i in range1到n加1。里面分成两个部分,空格和星号。空格的数量刚才推导它是有forjin range,它有n-i个1到n减i,但是根据range的特性要多加一个,这时候要输出n减i个空格。
输完n-i个空格之后再输星号的数量,for jin range 1到星号的数量是21-1,两倍的i减一,然后再把它加一两倍的i,输出星号,然后再来一个换行。自测一下,比如输入一个55行的星号,真三角,第一交测评,精确。