题解 | #带空格直角三角形图案#
带空格直角三角形图案
https://www.nowcoder.com/practice/192d1039c3d44155bb868073f5482670
*
* *
* * *
* * * *
* * * * *
根据上面的图,我们可以分析出这个是先输入需要的行数,之后每行先输入空格再输入* ,所以我们可以将空格全部补齐,将整个看做一个矩形,可以分析出空格是输入的行数减去当前行的*个数,所以k 所代表的 * 是递增,j 所代表的空格是递减。了解到庆康huo可以看下面代码。
#include<stdio.h> int main() { int n = 0; while (scanf("%d", &n) != EOF) {//控制输入, for (int i = 1; i <= n; i++) {//通过 i 来控制输出的行数, for (int j = n - i; j > 0; j--) {//通过 j 控制空格的输出,前面提到j 是递减,所以从n-1开始,一直到j=1结束。 printf(" "); } for (int k = 1; k <= i; k++) {//通过 k 控制*的输出,因为是递增,所以跟进i的脚步,i是行,i对应的行就有对应个*,所以k的范围是就是 <=i printf("* "); } printf("\n");//没循环完一行后换行 } } return 0; }