阅读下面的 C++ 代码。执行后如输入 $5$,其输出的字符图形是( )。
int n, i, j, k;
cin >> n;
for (i = 0; i < n; i++) {
for (j = 0; j < n - i - 1; j++)
cout << " ";
for (k = 0; k < 2 * i + 1; k++)
cout << "*";
cout << endl;
}A.
*****
****
***
**
*B.
*
***
*****
*******
*********C.
*
**
***
****
*****D.
*
**
***
****
*****答案B。追踪程序输出时注意整数除法截断和循环条件的边界值。变量初始值对结果影响很大。
整数除法截断容易忽略!if(n%i==0)中%是取余运算不是除法。
【考点】循环控制|二维数组遍历
GESP 二级"程序设计基础"模块,考察嵌套循环控制与二维输出嵌套。命题人卡住的是考生对"循环变量与输出量关系"的直觉——看到 2*i+1 和 n-i-1 混在一起时,多数人凭感觉选 C 或 A。