当前位置: 首页 > news >正文

算法题(7):n进制乘法表

审题:

我们需要根据用户输入的n来确定输出什么进制的乘法表

思路:

第一步:确定内外层循环来获取数据

外层循环为行,内层循环为列,且循环次数都是n-1

第二步:进行十进制的运算

第三步:进行进制转换

进制转换需要单独写一个函数来实现

解题:

(1)获取数据并进行十进制运算

1.让i和j都初始化为1:因为都是从1开始运算的

2.让j<=i作为结束条件:由于列是始终随着i的增加而增加的,所以到最后j会等于i,所以用它来当循环结束条件

(2)进行进制转换

注意点:
1.当进制大于十的时候我们就需要使用大写字母去表示了,而既然需要用到字母,我们的数据就采用字符串的形式进行转换。(如果是不涉及字符可以使用数字拼接法

2.增加完数据之后需要再逆转一下,这样子才是正确的顺序

这里进制转换用的是取余循环相除法

具体来说就是让需要转换的十进制数每次除n(直到等于0停止)(n是需要转换的进制),取得余数最后从下往上依次排列就是转换后的进制。

这是十进制413转换为三进制的过程,所以转换后就是120022

完整代码:

#include<iostream>
using namespace std;
#include<string>
#include<algorithm>
string exchange(int num,int n)//进制转换
{int val = 0;string str;char c ;while (num > 0){val = num % n;if (val >= 10){c = 'A' + (val-10);}else{c = val + '0';}str += c;//逆序加num = num / n;}reverse(str.begin(), str.end());return str;
}
int main()
{int n = 0;int num = 0;int val = 0;cin >> n;for (int i = 1; i <= n - 1; i++)//行{for (int j = 1; j <= i ; j++)//列{num = i  * j ;//十进制numstring s = exchange(num, n);cout << exchange(i, n) << '*' << exchange(j, n) << '=' << s << ' ';}cout << endl;}
}


http://www.mrgr.cn/news/80539.html

相关文章:

  • Node.js day-01
  • /bin/bash^M: 解释器错误:没有那个文件或目录(bad interpreter: No such file or directiry)
  • 大模型GPU选择指南 - 从入门到企业级应用
  • 期末速成C++【类和对象】
  • ESP8266 Ubuntu 安装
  • 牛客周赛 Round 72 <字符串>
  • kubeadm_k8s_v1.31高可用部署教程
  • DATA-HUB 安装与启动:
  • vertx idea快速使用
  • Qt WORD/PDF(二)使用 QtPdfium库实现 PDF操作、打印等
  • 生产环境迁移——harbor篇
  • VCU--新能源汽车VCU电控开发
  • linux ibus rime 中文输入法,快速设置为:默认简体 (****)
  • k8s控制器
  • [创业之路-198]:华为的成立发展与新中国的建立与发展路径的相似性比较
  • Windows系统VSCode 搭建ESP-IDF环境
  • 【Vue.js 3.0】provide 、inject 函数详解
  • 单步调试Android Framework——App冷启动
  • SAM大模型实践(一)
  • HCIA-Access V2.5_4_1_1路由协议基础_IP路由表
  • 车牌识别之二:车牌OCR识别(包含全部免费的数据集、源码和模型下载)
  • Chinese-Clip实现以文搜图和以图搜图
  • Qt WORD/PDF(四)使用 QAxObject 对 Word 替换(QWidget)
  • 使用 DeepSpeed 微调 OPT 基础语言模型
  • 【并发容器】ConcurrentLinkedQueue:优雅地实现非阻塞式线程安全队列
  • 掌握时间,从`datetime`开始