分析:
本题与https://blog.nowcoder.net/n/9dec393062c048c9bbfefa4e45224fda
类似,与之不同的是图案要倒着打印,这里只需自减循环即可。
题解:
#include <bits/stdc++.h> using namespace std; int main() { int n = 0; while(scanf("%d", &n) != EOF) { //外循环控制打印的行数 for(int i = n; i > 0; --i) { //内循环控制列数,当前行的列数不能大于当前行 for(int j = 1; j <= i; ++j) { //如果 i == j即输出星号,否则输出空格 if(j == i) printf("*\n"); else printf("* "); } } } return 0; }
题解2:
#include <bits/stdc++.h> using namespace std; int main() { int n = 0; //题解2思路和上述一样,不同之处在于将for循环换成了while循环 while(scanf("%d", &n) != EOF) { int i = n; while(i > 0) { int j = 1; while(j <= i) { if(j == i) printf("*\n"); else printf("* "); ++j; } --i; } } return 0; }
总结:
逆序自减循环的使用,以及两重循环的使用。