C++使用while循环实现右对齐直角三角形星号图案问题
错误排查
- 空格打印循环逻辑错误
你初始化space = i-1后,循环内执行space++会导致space值永远大于0,程序直接陷入无限循环,应该改为每次循环后执行space--,直到space减到0时自动退出循环。 - 星号打印数量逻辑错误
当前代码每次循环都会打印n个星号,不符合逐行星号数量递减1的要求,需要将星号循环的终止条件改为j <= n - i + 1,确保每行只打印n - i + 1个星号。
修正后完整代码
#include <iostream> using namespace std; int main() { int n; cin >> n; cout << endl; int i = 1; while (i <= n) { //打印空格 int space = i - 1; while (space) { cout << " "; space--; } //打印星号 int j = 1; while (j <= n - i + 1) { cout << "*"; j++; } cout << endl; i++; } return 0; }
内容的提问来源于stack exchange,提问作者Rishabh Bokadiya
相关产品推荐
相关产品推荐

