如何不使用row变量初始化count来打印指定数字图案?
修正代码实现指定数字图案打印
问题描述
输入N(示例为4),需打印如下数字图案:
4 (input) 1 2 3 3 4 5 4 5 6 7
要求不使用row变量初始化count,而是通过记录前一行的状态确定当前行的起始值,但现有伪代码输出错误图案:
4 (input) 1 1 2 2 3 4 4 5 6 7
错误原因
现有代码在内层循环中每次将k赋值为当前打印的count值(未自增前),导致k无法正确记录下一行的起始值。例如第一行打印1后,k被设为1,使得第二行起始值错误地变为1,而非目标的2。
修正代码
调整k的更新逻辑,在内层循环结束后将k自增1(因为目标图案中每行的起始值比上一行大1),修正后的伪代码如下:
int main () { int row = 1, k = 1, col, count, N; input N; while(row <= N) { col = 1; count = k; while(col <= row){ print count; col++; count++; } row++; k++; // 更新下一行的起始值 newline; } return 0; }
代码解释
- 初始化
k为1,作为第一行的起始值。 - 每行循环中,用
k初始化count,确保不依赖row变量设置起始值。 - 内层循环完成当前行的数字打印后,将
k自增1,保证下一行的起始值比当前行大1,符合目标图案的规律。 - 输入N=4时,该代码会输出正确的目标图案。
内容的提问来源于stack exchange,提问作者Pankaj
相关产品推荐
相关产品推荐

