文章

【GESP】C++二级练习 luogu-T259140, 三角形

GESP二级练习,多层循环练习,难度★✮☆☆☆。

luogu-T259140

题目要求

题目描述

给出 $n$,请输出一个直角边长度是 $n$ 的数字直角三角形。所有数字都是 $2$ 位组成的,如果没有 $2$ 位则加上前导 $0$。

提示:输出使用 printf("%02d",x); 可以自动给 1 位数补上前导0。

输入格式

输入一个正整数 $n$。

输出格式

输出如题目要求的数字直角三角形。

样例输入 #1

1
5

样例输出 #1

1
2
3
4
5
0102030405
06070809
101112
1314
15

数据范围

数据保证,$1\le n\le13$。


题目分析

这是一个简单的数学问题,我们可以使用两个嵌套的循环来打印数字直角三角形。外层循环控制行数,内层循环控制每行的数字个数。我们使用一个变量b来表示当前的数字,每次打印完一个数字后,b自增1。当b是一位数时,我们使用printf函数打印,保留两位小数。当b是两位数时,我们直接打印。

示例代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <cstdio>
#include <iostream>
using namespace std;
int main() {
    int a; // 定义变量a
    cin >> a; // 输入a
    int b = 1; // 定义变量b并初始化为1
    for (int i = a; i > 0; i--) { // 外层循环,控制行数
        for (int j = 1; j <= i; j++) { // 内层循环,控制每行的数字个数
            if (b / 10 == 0) { // 如果b是一位数
                printf("%.02d", b); // 输出b,保留两位小数
            } else { // 如果b是两位数
                printf("%d", b); // 直接输出b
            }
            b++; // b自增
        }
        cout << endl; // 换行
    }
    return 0; // 返回0,表示程序正常结束
}

所有代码已上传至Github:https://github.com/lihongzheshuai/yummy-code

GESP各级别考纲要点、知识拓展和练习题目清单详见C++学习项目主页

luogu-”系列题目已加入洛谷Java、C++初学团队作业清单,可在线评测,团队名额有限,欢迎加入。

bcqm-”系列题目可在编程启蒙题库进行在线评测。

本文由作者按照 CC BY 4.0 进行授权