C++倒三角输出错误求助:期望与实际输出不符
问题分析与修正方案
你写的代码有几个关键问题,导致输出没有按预期呈现每行递减的倒三角,而是所有星号挤在一行:
错误点拆解
- 外层循环逻辑错误:你写的
for (row = size; row <= size; row--)条件逻辑混乱。初始row等于size,第一次循环后row减1变成size-1,此时row <= size依然成立,循环会持续到row变为负数才触发break。正确的写法应该直接让循环从size递减到1,既直观又避免多余判断。 - 内层循环星号数量控制错误:内层循环用
column <= size会导致每行都输出size个星号,无法实现递减效果。应该改成column <= row,让每行的星号数量等于当前的row值。 - 缺少换行操作:每行星号输出完成后没有添加换行,所以所有内容都挤在了同一行。
修正后的代码
#include<iostream> using namespace std; int main (void) { int row, column, size; cout << "Please enter the size: "; cin >> size; // 外层循环:从输入的size值递减到1,控制总共有多少行 for (row = size; row >= 1; row--) { // 内层循环:输出当前行对应的row个星号 for (column = 1; column <= row; column++) { cout << "*"; } // 每行星号输出完毕后换行,实现倒三角的分行效果 cout << endl; } return 0; }
效果演示
当输入9时,输出会是:
********* ******** ******* ****** ***** **** *** ** *
这样就完全符合你想要的倒三角格式啦。
内容的提问来源于stack exchange,提问作者nafis195
相关产品推荐
相关产品推荐

