1 条题解
-
0
问题分析
- 输入:一个十六进制字符串n、一个十进制整数h(代表行数)
- 规则:
- 第一行1个数,第二行2个数……第h行h个数
- 每个数 = 上一个数 + 十进制h
- 所有数字转为大写十六进制输出
- 格式:每个数占5个字符宽度、左对齐,无额外空格
C++ 实现代码
#include <iostream> #include <iomanip> // 用于 setw 格式化输出 #include <string> using namespace std; int main() { string hex_str; // 输入的十六进制数(字符串形式) int h; // 行数 cin >> hex_str >> h; // 第一步:把十六进制字符串转成十进制整数 int current = stoi(hex_str, nullptr, 16); // 第二步:循环输出 h 行,第 i 行输出 i 个数 for (int i = 1; i <= h; ++i) { for (int j = 1; j <= i; ++j) { // 格式:左对齐,占5个字符,大写十六进制 cout << left << setw(5) << hex << uppercase << current; // 每个数 + 步长 h current += h; } // 一行结束换行 cout << endl; } return 0; }代码关键说明
- 十六进制转十进制
stoi(hex_str, nullptr, 16):直接将输入的十六进制字符串转为十进制整数,方便计算。
- 格式化输出核心
left:左对齐setw(5):每个数字固定占5个字符宽度hex:以十六进制输出uppercase:十六进制字母统一大写
- 循环逻辑
- 外层循环控制行数(1~h)
- 内层循环控制每行数字个数(第i行i个)
- 每输出一个数字,
current += h得到下一个数字
输入输出示例
输入1
14 5输出1
14 19 1E 23 28 2D 32 37 3C 41 46 4B 50 55 5A输入2
F 6输出2
F 15 1B 21 27 2D 33 39 3F 45 4B 51 57 5D 63 69 6F 75 7B 81 87总结
- 先将输入的十六进制数转为十进制,方便累加计算
- 双重循环控制行数和每行数字数量
- 用格式化输出实现左对齐、5字符宽度、大写十六进制
- 代码简洁高效,完全符合题目要求,可直接提交
- 1
信息
- ID
- 252
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 2
- 已通过
- 2
- 上传者
粤公网安备44195502000195号