牛客网华为OD前端岗位,面试题库练习记录02

news2024/11/17 15:57:26

题目一 删除字符串中出现次数最少的字符(HJ23)

在这里插入图片描述

JavaScript Node ACM 模式

const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;

void (async function () {
    // Write your code here
    while ((line = await readline())) {
        let arr = line.split("");
        let obj = {};
        arr.forEach((item) => {
            if (obj[item] != undefined) {
                obj[item]++;
            } else {
                obj[item] = 1;
            }
        });
        let min = 21;
        for (let key in obj) {
            min = Math.min(min, obj[key]);
        }
        for (let key in obj) {
            if (min == obj[key]) {
                arr.forEach((item, index) => {
                    if(item == key){
                        arr.splice(index,1)
                    }
                });
            }
        }
        console.log(arr.join(''))
    }
})();

知识笔记
① Math.min()
console.log(Math.min(-1, 4, 6, 12));//输出值:-1

题目二 字符串排序(HJ26)

在这里插入图片描述

JavaScript Node ACM 模式

const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;

void (async function () {
    // Write your code here
    while ((line = await readline())) {
        let result = line.split("");
        //先收集英文字母,对其进行排序
        let words = line.match(/[a-z]+/gi).join("").split("");
        words.sort(function (a, b) {
            a = a.toLowerCase();
            b = b.toLowerCase(); //规则1 不区分大小写
            return a < b ? -1 : 0; //升序排列(因为前面全都转化成小写,故不会改变同一字母大小写的相对顺序)
        });
        console.log('words',words)
        result.forEach((item, index) => {
            //将words中字母替换result中的字母,非英文字符不替换
            if (/[a-z]/i.test(item)) {
                //是英文字符,则替换
                result[index] = words[0];
                words.shift();
            }
        });
        console.log(result.join(""));
    }
})();

知识笔记:
解题代码借鉴的讨论区的大佬的。
大概梳理下这个想法。

① 题目理解:
将所有的字母,不区分大小写,按照从a-z排列,然后按照原文的格式输出。
② 思路解读:
1)提取所有的字母,然后按照a-z排列;
2)按照原字符串的位置序列,进行填充;

比较容易忽略的点:正则的函数。

题目三 HJ27 查找兄弟单词

在这里插入图片描述

JavaScript Node ACM 模式

const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;

void (async function () {
    // Write your code here
    let arrline = [];
    while ((line = await readline())) {
        arrline = line.split(" ");
    }
    let _n = Number(arrline[0]); // 第一个是表示有多少个单词;
    let _allword = arrline.slice(1, _n); // 单词字典
    let _keyword = arrline[_n + 1]; // 关键单词
    let _index = arrline[arrline.length - 1]; // k
    let _keyarr = [];
    _keyarr = _keyword.split(""); // 关键词的数组;
    function permuteArray(arr) {// 获取全排列
        if (arr.length === 1) {
            return [arr];
        }
        const result = [];
        for (let i = 0; i < arr.length; i++) {
            const currentElement = arr[i];
            const remainingElements = arr.slice(0, i).concat(arr.slice(i + 1));
            const permutations = permuteArray(remainingElements);
            for (const permutation of permutations) {
                result.push(([currentElement].concat(permutation)).join(''));
            }
        }
        return result;
    }
    let _broarr = [];// 兄弟数组
    const permutations = permuteArray(_keyarr);
    _allword.forEach((item)=>{
        if(permutations.indexOf(item) != -1){// 兄弟数组重组
            _broarr.push(item)
        }
    })
    console.log(_broarr.length);
    if(_broarr[_index] != undefined && _broarr[_index] != null){
        console.log(_broarr[_index])   
    }
})();

知识笔记:
需要注意的点就是,数组的全排列。

    function permuteArray(arr) {// 获取全排列
        if (arr.length === 1) {
            return [arr];
        }
        const result = [];
        for (let i = 0; i < arr.length; i++) {
            const currentElement = arr[i];
            const remainingElements = arr.slice(0, i).concat(arr.slice(i + 1));
            const permutations = permuteArray(remainingElements);
            for (const permutation of permutations) {
                result.push(([currentElement].concat(permutation)).join(''));
            }
        }
        return result;
    }

大概思路就是,获取单词x的单字母全排列,然后在字典单词中匹配,然后挑出来。
然后输出。

题目四 HJ29 字符串加解密

在这里插入图片描述

JavaScript Node ACM 模式

const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;

void (async function () {
    // Write your code here
    let twoarr = [];
    while ((line = await readline())) {
        twoarr.push(line);
    }
    let linearr = twoarr[0].split("");// 加密
    let _newarr = [];
    linearr.forEach((item) => {
        if (/[a-z]/.test(item)) {
            if (item == "z") {
                _newarr.push("A");
            } else {
                _newarr.push(
                    String.fromCharCode(item.charCodeAt(0) + 1).toUpperCase()
                );
            }
        } else if (/[A-Z]/.test(item)) {
            if (item == "Z") {
                _newarr.push("a");
            } else {
                _newarr.push(
                    String.fromCharCode(item.charCodeAt(0) + 1).toLowerCase()
                );
            }
        } else if (/[0-9]/.test(item)) {
            if (item == 9) {
                _newarr.push(0);
            } else {
                _newarr.push(Number(item) + 1);
            }
        }
    });

    let _linearr = twoarr[1].split("");// 解密
    let newarr = [];
    _linearr.forEach((item) => {
        if (/[a-z]/.test(item)) {
            if (item == "a") {
                newarr.push("Z");
            } else {
                newarr.push(
                    String.fromCharCode(item.charCodeAt(0) - 1).toUpperCase()
                );
            }
        } else if (/[A-Z]/.test(item)) {
            if (item == "A") {
                newarr.push("z");
            } else {
                newarr.push(
                    String.fromCharCode(item.charCodeAt(0) - 1).toLowerCase()
                );
            }
        } else if (/[0-9]/.test(item)) {
            if (item == 0) {
                newarr.push(9);
            } else {
                newarr.push(Number(item) - 1);
            }
        }
    });

    console.log(_newarr.join(""));
    console.log(newarr.join(""));
})();

知识笔记:
① 正则验证:test()方法,/[0-9]/验证是否是从1到9,/[a-z]/验证是否是从a-z;
② 大小写转化,toUpperCase()转大写,toLowerCase()转小写;
③ ASCII码转字符String.fromCharCode();
④ 字符转ASCII码string.charCodeAt();

题目五 HJ30 字符串合并处理

描述
按照指定规则对输入的字符串进行处理。

详细描述:

第一步:将输入的两个字符串str1和str2进行前后合并。如给定字符串 “dec” 和字符串 “fab” , 合并后生成的字符串为 “decfab”

第二步:对合并后的字符串进行排序,要求为:下标为奇数的字符和下标为偶数的字符分别从小到大排序。这里的下标的意思是字符在字符串中的位置。注意排序后在新串中仍需要保持原来的奇偶性。例如刚刚得到的字符串“decfab”,分别对下标为偶数的字符’d’、‘c’、‘a’和下标为奇数的字符’e’、‘f’、'b’进行排序(生成 ‘a’、‘c’、‘d’ 和 ‘b’ 、‘e’ 、‘f’),再依次分别放回原串中的偶数位和奇数位,新字符串变为“abcedf”

第三步:对排序后的字符串中的’0’‘9’、‘A’‘F’和’a’~'f’字符,需要进行转换操作。
转换规则如下:
对以上需要进行转换的字符所代表的十六进制用二进制表示并倒序,然后再转换成对应的十六进制大写字符(注:字符 a~f 的十六进制对应十进制的10~15,大写同理)。
如字符 ‘4’,其二进制为 0100 ,则翻转后为 0010 ,也就是 2 。转换后的字符为 ‘2’。
如字符 ‘7’,其二进制为 0111 ,则翻转后为 1110 ,对应的十进制是14,转换为十六进制的大写字母为 ‘E’。
如字符 ‘C’,代表的十进制是 12 ,其二进制为 1100 ,则翻转后为 0011,也就是3。转换后的字符是 ‘3’。
根据这个转换规则,由第二步生成的字符串 “abcedf” 转换后会生成字符串 “5D37BF”。

数据范围:输入的字符串长度满足 1 \le n \le 100 \1≤n≤100

输入描述
样例输入两个字符串,用空格隔开。

输出描述:
输出转化后的结果。
在这里插入图片描述

JavaScript Node ACM 模式

const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;

void (async function () {
    // Write your code here
    while ((line = await readline())) {
        let strarr = line.split(" ").join("").split("");
        let onearr = []; // 奇数数组;
        let twoarr = []; // 偶数数组;
        strarr.forEach((item, index) => {
            if (index % 2 == 0) {
                twoarr.push(item);
            } else {
                onearr.push(item);
            }
        });
        onearr = onearr.sort((a, b) => a.charCodeAt() - b.charCodeAt());
        twoarr = twoarr.sort((a, b) => a.charCodeAt() - b.charCodeAt());
        let _str = [];
        let len = onearr.length > twoarr.length ? onearr.length : twoarr.length;// 看谁length大,就用谁的长度来遍历
        for (let i = 0; i < len; i++) {// 遍历将两个数组合并到一起
            if (twoarr[i] != undefined) {
                _str.push(twoarr[i]);
            }
            if (onearr[i] != undefined) {
                _str.push(onearr[i]);
            }
        }
        let resultarr = [];
        _str.forEach((item) => {
            if (/[a-f]/i.test(item) || /[0-9]/.test(item)) {// 如果是a-f,0-9 则处理下
                let _item = parseInt(item, 16).toString(2);// 先转成2进制
                if (_item.length < 4) {
                    for (let i = _item.length; i < 4; i++) {
                        _item = "0" + _item.toString();// 补0
                    }
                }
                _item = _item.split("").reverse().join("");// 反转
                _item = parseInt(_item, 2).toString(16);
                if (/[a-z]/.test(_item)) {
                    _item = _item.toUpperCase();
                }
                resultarr.push(_item);
            }else{
                resultarr.push(item);
            }
        });
        console.log(resultarr.join(""));
    }
})();

知识笔记:
读题很重要。

题目六 HJ31 单词倒排

在这里插入图片描述

JavaScript Node ACM 模式

const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;

void async function () {
    // Write your code here
    while(line = await readline()){
        let linearr = line.split('');
        let _arr = []
        linearr.forEach((item)=>{
            if(/[a-z]/i.test(item)){
                _arr.push(item)
            }else{
                _arr.push(" ")
            }
        })
        let _str = _arr.join('')
        _arr = _str.split(" ")
        _arr.forEach((item)=>{
            item = item.split('').reverse().join('')
        })
        console.log(_arr.reverse().join(' '))
    }
}()

题目七 HJ32 密码截取

在这里插入图片描述

JavaScript Node ACM 模式

const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;

void (async function () {
    // Write your code here
    while ((line = await readline())) {
        let value = "";
        value = line;
        let len = 0;
         // 写一个判断是否是回文字串的方法
        const func = (val) => {
            const i = 0,
                j = val.length - 1;
            if (val[i] === val[j]) {
                if (j - i <= 2) {
                    return true;
                }
                const sub = val.substring(i + 1, j);
                if (func(sub)) {
                    return true;
                }
                return false;
            } else {
                return false;
            }
        };
        // 遍历各种可能出现的组合,寻找最长回文字串
        for (let i = 0; i < value.length; i++) {
            for (let j = i + 1; j <= value.length; j++) {
                const sub = value.substring(i, j);
                if (func(sub)) {
                    if (sub.length > len) {
                        len = sub.length;
                    }
                }
            }
        }
        console.log(len);
    }
})();

思考:
找最长的回文字符串。
比较重要的代码

// 写一个判断是否是回文字串的方法
        const func = (val) => {
            const i = 0,
                j = val.length - 1;
            if (val[i] === val[j]) {
                if (j - i <= 2) {
                    return true;
                }
                const sub = val.substring(i + 1, j);
                if (func(sub)) {
                    return true;
                }
                return false;
            } else {
                return false;
            }
        };

题目八 HJ33 整数与IP地址间的转换

描述
原理:ip地址的每段可以看成是一个0-255的整数,把每段拆分成一个二进制形式组合起来,然后把这个二进制数转变成
一个长整数。
举例:一个ip地址为10.0.3.193
每段数字 相对应的二进制数
10 00001010
0 00000000
3 00000011
193 11000001

组合起来即为:00001010 00000000 00000011 11000001,转换为10进制数就是:167773121,即该IP地址转换后的数字就是它了。

数据范围:保证输入的是合法的 IP 序列
在这里插入图片描述

JavaScript Node ACM 模式

const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;

void async function () {
    // Write your code here
    while(line = await readline()){
        let _arr = []
        if(line.indexOf('.')!=-1){// 判断输入的是IP地址还是数字
            // ip地址
            _arr = line.split('.');
            let _2arr = []
            _arr.forEach((item)=>{
                let _2str = eval(item).toString(2);
                if(_2str.length<8){
                    for(let i = _2str.length;i<8;i++){
                        _2str = "0" + _2str;// 补足8位2进制
                    }
                }
                _2arr.push(_2str)
            })
            console.log(parseInt(_2arr.join(''), 2))
        }else{
            // 数字
            _arr = eval(line).toString(2)
            if(_arr.length < 32){
                for(let i = _arr.length;i<32;i++){
                    _arr = "0" + _arr// 补足32位2进制
                }
            }
            let _2numarr = []
            for(let i = 0;i<4;i++){
                let _item = _arr.substring(i*8,(i+1)*8 )// 截取
                _2numarr.push(parseInt(_item, 2))
            }
            console.log(_2numarr.join('.'))
        }
    }
}()

题目九 HJ34 图片整理

在这里插入图片描述

JavaScript Node ACM 模式

const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;

void async function () {
    // Write your code here
    while(line = await readline()){
        let arr = line.split('')
       let _arr = arr.sort()
        console.log(_arr.join(''))
    }
}()

就一个排序sort()

题目十 HJ38 求小球落地5次后所经历的路程和第5次反弹的高度

牛客网的题目难度参考下就行,不要较真。

在这里插入图片描述

JavaScript Node ACM 模式

const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;

void (async function () {
    // Write your code here
    while ((line = await readline())) {
        let _n = Number(line);
        let _all = 0;
        for (let i = 1; i <= 5; i++) {
            _all = _all + (Math.pow(2, -i) + Math.pow(2, -i + 1)) * _n;
        }
        _all  = _all - Math.pow(2, -5) * _n
        console.log(_all);
        console.log(Math.pow(2, -5) * _n);
    }
})();

思考:
这是数学的应用题,让你用代码的形式写出来,看来还是要多看数学呀。
大概落下过程是:
原始是n;
第一次落地,经历n;
第二次落地,经历1/2*n的弹起,加上1/4n的落下,即(1/2+1/4)n,2^(-1) * n + 2^(-2) * n ;
第三次落地,经历1/8
n的弹起,加上1/16n的落下,即(1/8+1/16)*n,2^(-3) * n + 2^(-4) * n;
……
第 i 次落地,经历2^(-i) * n + 2^(-i-1) * n;
总的长度就是n + 2^(-1) * n + 2^(-2) * n +2^(-3) * n + 2^(-4) * n + ……+2^(-i) * n + 2^(-i-1) * n;
搞个for循环遍历下;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/887049.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【JavaEE基础学习打卡04】JDBC之MySQL数据库安装

目录 前言一、JDBC与数据库二、MySQL数据库1.MySQL数据库2.MySQL服务下载安装3.MySQL服务启动停止4.MySQL命令 三、MySQL客户端安装总结 前言 &#x1f4dc; 本系列教程适用于JavaWeb初学者、爱好者&#xff0c;小白白。我们的天赋并不高&#xff0c;可贵在努力&#xff0c;坚持…

Markdown编辑器 Mac版Typora功能介绍

Typora mac是一款跨平台的Markdown编辑器&#xff0c;支持Windows、MacOS和Linux操作系统。它具有实时预览功能&#xff0c;能够自动将Markdown文本转换为漂亮的排版效果&#xff0c;让用户专注于写作内容而不必关心格式调整。 Typora Mac版除了支持常见的Markdown语法外&#…

数据库连接池(c3p0和德鲁伊)

目录 连接池介绍 c3p0连接池 传统方法引入jar包 配置文件 德鲁伊连接池 德鲁伊工具类 传统jdbc数据库使用DriverManger来获取&#xff0c;每次向数据库建立连接需要将Connection加载到内存中&#xff0c;频繁的操作会造成占用很多系统资源&#xff0c;造成服务器崩溃&…

【计算机网络】13、ARP 包:广播自己的 mac 地址和 ip

机器启动时&#xff0c;会向外广播自己的 mac 地址和 ip 地址&#xff0c;这个即称为 arp 协议。范围是未经过路由器的部分&#xff0c;如下图的蓝色部分&#xff0c;范围内的设备都会在本地记录 mac 和 ip 的绑定信息&#xff0c;若有重复则覆盖更新&#xff08;例如先收到 ma…

python编程等级证书,python程序员证书

大家好&#xff0c;本文将围绕python编程等级证书展开说明&#xff0c;python证书含金量是一个很多人都想弄明白的事情&#xff0c;想搞清楚python程序员证书需要先了解以下几个事情。 全文共4231字&#xff0c;预计学习时长10分钟 图源&#xff1a;unsplash 在数据科学职业生涯…

工程项目管理系统源码+功能清单+项目模块+spring cloud +spring boot em

​ 工程项目管理软件&#xff08;工程项目管理系统&#xff09;对建设工程项目管理组织建设、项目策划决策、规划设计、施工建设到竣工交付、总结评估、运维运营&#xff0c;全过程、全方位的对项目进行综合管理 工程项目各模块及其功能点清单 一、系统管理 1、数据字典&#…

创建KVM虚拟机

文章目录 安装KVM虚拟机环境准备硬件虚拟化添加一块磁盘分区并格式化创建挂载目录并挂载分区上传镜像&#xff1a; virt-manager图形化安装下载virt-manager开始安装 virsh-install命令行安装安装组件使用virt-install安装 virsh管理虚拟机基本命令拓展命令 安装KVM虚拟机 环境…

JavaWeb-Listener监听器

目录 监听器Listener 1.功能 2.监听器分类 3.监听器的配置 4.ServletContext监听 5.HttpSession监听 6.ServletRequest监听 监听器Listener 1.功能 用于监听域对象ServletContext、HttpSession和ServletRequest的创建&#xff0c;与销毁事件监听一个对象的事件&#x…

jenkins gitlab 安装

目录 一 准备安装环境 二 安装gitlab软件 三 配置gitlab 四 重新加载配置启动gitlab 五 修改密码 五 创建用户组 一 准备安装环境 sudo yum update sudo yum install -y curl policycoreutils-python openssh-server安装 Postfix 邮件服务器&#xff0c;以便 Git…

OpenCV importerror:dll load failed

从预编译的二进制文件安装OpenCV&#xff0c;从github下载opencv-4.8.0-windows.exe 编译好的文件。按照官方文档拖入cv2.pyd文件。 https://docs.opencv.org/4.8.0/d5/de5/tutorial_py_setup_in_windows.html 使用pycharm运行时&#xff0c;出现报错&#xff0c;importerror…

机器学习基础之《分类算法(2)—K-近邻算法》

一、K-近邻算法(KNN) 1、定义 KNN K&#xff1a;就是一个自然数 N&#xff1a;nearest&#xff0c;最近的 N&#xff1a;neighbourhood&#xff0c;邻居 如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别&#xff0c;则该样本也属于这…

CS5263替代停产IT6561连接DP转HDMI音视频转换器ASL 集睿致远CS5263设计电路原理图

ASL集睿致远CS5263是一款DP1.4到HDMI2.0b转换器芯片&#xff0c;设计用于将DP1.4源连接到HDMI2.0b接收器。 CS5263功能特性&#xff1a; DP接口包括4条主通道、辅助通道和HPD信号。接收器支持每通道5.4Gbps&#xff08;HBR2&#xff09;数据速率。DP接收机结合了HDCP1.4和HDCP…

SharkTeam:Worldcoin运营数据及业务安全分析

Worldcoin的白皮书中声明&#xff0c;Worldcoin旨在构建一个连接全球人类的新型数字经济系统&#xff0c;由OpenAI创始人Sam Altman于2020年发起。通过区块链技术在Web3世界中实现更加公平、开放和包容的经济体系&#xff0c;并将所有权赋予每个人。并且希望让全世界每一个人都…

tauri-vue:快速开发跨平台软件的架子,支持自定义头部UI拖拽移动和窗口阴影效果

Tauri Vue Typescript 一个使用 taurivuets 开发跨平台软件的模板&#xff0c;支持窗口头部自定义 UI 和拖拽和窗口阴影&#xff0c;不用再自己做适配了&#xff0c;拿来即用&#xff0c;非常 nice。而且已经封装好了 tauri 的 http 请求工具&#xff0c;省去很多弯路。开源…

【HCIP】BGP总结

一、bgp介绍 1.概念 边界网关协议BGP&#xff08;Border Gateway Protocol&#xff09;是一种实现自治系统AS之间的路由可达&#xff0c;并选择最佳路由的路径矢量路由协议。目前在IPV4环境下主要使用BGPV4&#xff0c;目前市场上也存BGPV4&#xff0c;BGPV4在BGPV4的基础上支…

VectorStyler for Mac: 让你的创意无限绽放的全新设计工具

VectorStyler for Mac是一款专为Mac用户打造的矢量设计工具&#xff0c;它结合了功能强大的矢量编辑器和创意无限的样式编辑器&#xff0c;让你的创意无限绽放。 VectorStyler for Mac拥有直观简洁的用户界面&#xff0c;让你能够轻松上手。它提供了丰富的矢量绘图工具&#x…

深度学习中的优化器原理(SGD,SGD+Momentum,Adagrad,RMSProp,Adam)

SGD 梯度下降 记住这里是减去&#xff0c;因为梯度的方向指出了函数再给定上升最快的方向&#xff0c;或者说指引函数值增大的方向&#xff0c;所以我们需要沿着梯度的反方向走&#xff0c;才能尽快达到极小值&#xff08;使其损失函数最小&#xff09;。 SGDMomentum 加上动量…

Linux 进程替换

一、进程替换 把一个进程替换为另外一个进程。对于进程&#xff0c;如果单纯只看复制或者单纯只看替换&#xff0c;没有太大的意义。将复制和替换结合在一起&#xff08;forkexec&#xff09;&#xff0c;就是系统去产生一个全新进程的一种方式。 将复制和替换结合在一起&…

Android glide框架及框架涉及到的设计模式

目录 原文链接Android glide框架 简单使用介绍Glide 框架整体结构设计Glide 框架的优点基本使用&#xff1a;Glide占位符 Android glide框架涉及到的设计模式 原文链接 Android glide框架 简单使用介绍 Glide&#xff1a;快速高效的Android图片加载库&#xff0c;可以自动加载…

第十三课:QtCmd 命令行终端应用程序开发

功能描述&#xff1a;开发一个类似于 Windows 命令行提示符或 Linux 命令行终端的应用程序 一、最终演示效果 QtCmd 不是因为它是 Qt 的组件&#xff0c;而是采用 Qt 开发了一个类似 Windows 命令提示符或者 Linux 命令行终端的应用程序&#xff0c;故取名为 QtCmd。 上述演示…