打印图形
约 10 分钟
打印三角形、菱形这类图形,核心是找出"第 行要打几个空格、几个星号",把它们写成关于 的式子。以 行等腰三角形为例( 从 1 数起),若第 行前面有 个空格、中间有 个星号,整幅图就左右对称了。
int n; // 等腰三角形,共 n 行
for (int i = 1; i <= n; i++) {
for (int k = 0; k < n - i; k++) cout << ' '; // 前导空格 n-i
for (int k = 0; k < 2 * i - 1; k++) cout << '*'; // 星号 2i-1
cout << '\n'; // 每行末尾换行
}
打印字符总量大约是 。几个必踩的坑:一是先打空格再打星号,顺序不能反;二是每行结束别忘了换行;三是循环从 1 还是从 0 开始要和公式配套——若 从 0 数,等腰三角形的星号数就变成 、空格是 。菱形可以拆成"上半个正三角 + 下半个倒三角"分别打印,倒三角把 反着枚举即可。
小纸条
打印一个 5 行的直角三角形,第 3 行几个星号?
登录 后可看答案