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

c++课后作业

把字符串转换为整数

int main()
{char pn[21];cout << "请输入一个由数字组成的字符串: ";cin >> pn;int last = 0;int res[10];int j = strlen(pn);int idx = 2;cout << "请选择(2-二进制,10-十进制): ";cin >> idx;for (int i = 0,len = strlen(pn);i < len; i++){if (pn[i] < '0' || pn[i] > '9') { cout << "非法字符!!!"; break; }last += (pn[i] - '0') * pow(idx,j-1);j = j - 1 ;}cout << last;
}

重写strcat和strncat

char* mystrcat(char* dest, const char* src)
{memcpy(dest + strlen(dest), src, strlen(src) + 1);return dest;
}char* mystrncat(char* dest, const char* src, const size_t n)
{size_t len = strlen(dest);memcpy(dest + len, src, n);*(dest + len + n) = 0;return dest;}

重写strchr和strrchr

注意⚠️:这里不能从后往前找,因为想从后往前找就只能使用strlen,而strlen本质就是遍历一遍字符串,这样就更慢了。

const char* mystrchr(const char* s, int c)
{char* p = (char*)s;while (*p){if (*p == c) return p;p++;}return 0;
}const char* mystrrchr(const char* s, int c) //查找字符
{char* p = (char*)s;char* p1 = 0;while (*p){if (*p == c){p1 = p;}p++;}return p1;}

重写strcmp和strncmp

int mystrcmp(const char* str1, const char* str2)
{char* p1 = (char*)str1;char* p2 = (char*)str2;while (*p1 && *p2){if (*p1 != *p2){if (*(p1) > *(p2)) return -1;else return 1;}p1++;p2++;}return 0;
}int mystrncmp(const char* str1, const char* str2, size_t n)
{char* p1 = (char*)str1;char* p2 = (char*)str2;for (int i = 0; i < n; i++){if (*p1 != *p2){if (*(p1) > *(p2)) return -1;else return 1;}p1++;p2++;}return 0;}

重写strstr

char* caijimystrstr(const char* haystack, const char* needle)
{char* p1 = (char*)haystack;char* p2 = (char*)needle;char* tmp1;char* tmp2 = p2;while (*p1){while (*p1 == *p2){tmp1 = p1;for (int i = 0; i < strlen(needle); i++){if (*p1 != *p2){continue;}p1++;p2++;if (*p2 == 0){return p1-strlen(needle);}}continue;}p2 = tmp2;p1++;}return nullptr;}const char* dalaomystrstr(const char* haystack, const char* needle)
{size_t ii = 0, jj = 0; size_t len = strlen(haystack), slen = strlen(needle);while ((ii < len) && (jj < slen)){if (haystack[ii] == needle[jj]){ii++, jj++;}else{ii = ii - jj;jj = 0;ii++;}}if (jj == slen) return (haystack+(ii-jj));return 0;
}

解析XML

bool xmlbuffer(const char* xmlbuf, const char* fieldname, char* value = 0, const size_t ilen = 0)
{if (xmlbuf == 0 || fieldname == 0) return false;//创建字段int lenfieldname = strlen(fieldname);//开辟空间char* sfieldname = new char[lenfieldname + 3];char* efieldname = new char[lenfieldname + 4];//初始化memset(sfieldname, 0, lenfieldname +3);  // 错误代码 memset(sfieldname, 0, sfieldname); 原因:new出来的空间不能用memsetmemset(efieldname, 0, lenfieldname +4);//创建字段strcpy(sfieldname, "<"); strcat(sfieldname, fieldname); strcat(sfieldname,">");strcpy(efieldname, "</"); strcat(efieldname, fieldname); strcat(efieldname, ">");//找字段;char* start;char* end;start = (char*)strstr(xmlbuf, sfieldname);end = (char*)strstr(xmlbuf, efieldname);//没找到if (start == 0 || end == 0){delete[] sfieldname;delete[] efieldname;return 0;}size_t vallen = (end - start - lenfieldname - 2);  //指针减去指针等于数值,表示的是从 start 到 end 的距离减去了 lenfieldname(<fieldname> 的长度)和 2(< 和 > 的长度)。if (ilen == 0){strncpy(value, start + lenfieldname + 2, vallen);value[vallen] = 0;}else if (vallen <= ilen){strncpy(value, start + lenfieldname + 2, vallen);value[vallen] = 0;}else{strncpy(value, start + lenfieldname + 2, ilen);value[ilen] = 0;}delete[] sfieldname;delete[] efieldname;return 1;}

不重复的随机数

void rrand(int arr[], const size_t len, const int minvalue = 0)
{srand(time(0));for (int i = 0; i < len; i++){while (1){int tmp = rand() % len + minvalue;int j = 0;for (j = 0; j < i; j++){if (tmp == arr[j]) break;}if (j == i){arr[i] = tmp;break;}}}
}

重写strcpy和strncpy

char* my2strcpy(char* dest, const char* src)
{int i = 0;while (src[i]){dest[i] = src[i];i++;}dest[i] = 0;return dest;
}char* my2strncpy(char* dest, const char* src , const size_t n )
{if (n < 0) return 0;size_t lens = strlen(src);if (n > lens){my2strcpy(dest, src);}int i = 0;for (i = 0; i < n; i++){dest[i] = src[i];}dest[i++] = 0;return dest;}

相关文章:

c++课后作业

把字符串转换为整数 int main() {char pn[21];cout << "请输入一个由数字组成的字符串&#xff1a; ";cin >> pn;int last 0;int res[10];int j strlen(pn);int idx 2;cout << "请选择&#xff08;2-二进制&#xff0c;10-十进制&#xf…...

SpringBoot+Vue实现简单的文件上传(txt篇)

SpringBootVue实现简单的文件上传 1 环境 SpringBoot 3.2.1&#xff0c;Vue 2&#xff0c;ElementUI 2 页面 3 效果&#xff1a;只能上传txt文件且大小限制为2M&#xff0c;选择文件后自动上传。 4 前端代码 <template><div class"container"><el-…...

LLMs之RAG:GraphRAG(本质是名词Knowledge Graph/Microsoft微软发布)的简介、安装和使用方法、案例应用之详细攻略

LLMs之RAG&#xff1a;GraphRAG(本质是名词Knowledge Graph/Microsoft微软发布)的简介、安装和使用方法、案例应用之详细攻略 导读&#xff1a;2024年7月3日&#xff0c;微软正式开源发布GraphRAG。GraphRAG可以提高大型语言模型在私有数据集上的推理能力。 背景痛点&#xff1…...

Linux 之前的 Unix 桌面沉浮启示录

It takes more than open source, it takes open standards and consensus 仅仅开源还不足以实现开放&#xff0c;还需开放标准和建立共识 Steven J. Vaughan-Nichols Sat 27 Jan 2024 // 12:33 UTC 现在&#xff0c;由于有了安卓和 ChromeOS&#xff0c;Linux 已成为重要的终端…...

面试问题梳理:项目中防止配置中的密码泄露-Jasypt

背景 想起面试的时候&#xff0c;面试官问我现在大家用Spring框架&#xff0c;数据库、ES之类的密码都是配置在配置文件中的&#xff0c;有很大的安全隐患&#xff0c;你有考虑过怎么解决嘛&#xff1f; 当时我回答是可以在项目启动的过程中的命令行追加的方式&#xff0c;感觉…...

engine.addImportPath()用于向 QML 引擎添加新的模块搜索路径

engine.addImportPath() 是 QQmlApplicationEngine 类中的一个方法&#xff0c;用于向 QML 引擎添加新的模块搜索路径。这在需要加载自定义模块或从非标准位置加载 QML 文件时非常有用。通过使用 addImportPath() 方法&#xff0c;可以让 QML 引擎在额外的路径中查找 QML 模块。…...

ServiceNow UI Jelly模板注入漏洞复现(CVE-2024-4879)

0x01 产品简介 ServiceNow 是一个业务转型平台。通过平台上的各个模块,ServiceNow 可用于从人力资源和员工管理到自动化工作流程或作为知识库等各种用途。 0x02 漏洞概述 由于ServiceNow的Jelly模板输入验证不严格,导致未经身份验证的远程攻击者可通过构造恶意请求利用,在…...

项目部署笔记

1、安全组需开放&#xff08;如果不开放配置nginx也访问不到&#xff09; 2、域名解析配置IP(子域名也需配置IP&#xff0c;IP地址可以不同) 3、如果出现图片获其他的文件找不到的情况请仔细检查一下路径是否正确 4、服务器nginx配置SSL证书后启动报错&#xff1a; nginx: […...

PyCharm\VsCode——Python第三方库下载换源

为什么要换源&#xff1f; Python第三方库下载默认镜像源在国外&#xff0c;因为特殊的原因在国内的你我利用这个镜像源往往速度会非常地慢&#xff0c;因此为了提速将这个默认镜像源换成国内的镜像源是非常有必要的。 镜像源的种类有哪些&#xff1f; 国外镜像源——官方 http…...

图片上传裁剪react-cropper

效果图 安装插件 npm i react-cropper 或者 yarn add react-cropper 主要代码 import React, { useRef, useState } from react; import Cropper from react-cropper; import cropperjs/dist/cropper.css; import ./index.less; import { UploadOutlined } from ant-d…...

跨越空间的编码:在PyCharm中高效使用远程解释器

跨越空间的编码&#xff1a;在PyCharm中高效使用远程解释器 PyCharm的强大功能之一是支持远程解释器&#xff0c;这使得开发者能够在远程服务器或虚拟机上运行、调试代码&#xff0c;享受本地开发环境的便利。本文将详细介绍如何在PyCharm中配置和使用远程解释器&#xff0c;包…...

Vue3单文件jsx输出多组件示例遇到的坑

感谢博主减肥吧Evan提供的SFC实现多组件的思路和实现&#xff0c;小卷在大佬的基础上再完善下实现。 我们从tsx的API使用上得到启发&#xff0c;可以在vue的单文件组件&#xff08;sfc&#xff09;中使用defineComponent来定义和导出多个独立的小组件。此时sfc中的<templat…...

OpenCV中的轮廓检测cv2.findContours()

文章目录 前言一、查找轮廓二、绘制轮廓轮廓面积轮廓周长 前言 轮廓提取的前提&#xff0c;将背景置为黑色&#xff0c;目标为白色&#xff08;利用二值化或Canny&#xff09; 边缘检测&#xff0c;例如Canny等&#xff0c;利用梯度变化&#xff0c;记录图像中的边缘像素点&a…...

JFlash读取和烧录加密stm32程序

JFlash读取和烧录加密stm32程序 安装后JFlash所在的目录&#xff1a;C:\Program Files\SEGGER\JLink 一、烧写加密程序 1、打开C:\Program Files\SEGGER\JLink目录&#xff0c;找到JFlash.exe,双击它&#xff0c;就可以打开该执行程序。见下图&#xff1a; 2、选择“Create …...

【总结】实际业务场景中锁、事务、异常如何考虑使用?

文章目录 锁处理目的&#xff1a;考虑锁控制思路&#xff1a;生命周期接口并发控制解决方案&#xff1a;测试锁是否生效&#xff1a;模拟多线程并发场景的2种方式&#xff1a; 事务处理目的&#xff1a;考虑事务控制思路&#xff1a;解决方案&#xff1a; 总结 锁处理 目的&am…...

Pytorch使用Dataset加载数据

1、前言&#xff1a; 在阅读之前&#xff0c;需要配置好对应pytorch版本。 对于一般学习&#xff0c;使用cpu版本的即可。参考教程点我 导入pytorch包&#xff0c;使用如下命令即可。 import torch # 注意虽然叫pytorch&#xff0c;但是在引用时是引用torch2、神经网络获取…...

【nginx】nginx的优点

目录 一、高性能1.1 高并发处理1.2 低内存消耗1.3 快速响应 二、高扩展性2.1 模块化设计2.2 动态模块扩展 三、高可靠性3.1 核心框架稳定3.2 进程管理3.3 负载均衡与健康检查3.4 热部署 四、功能丰富4.1 反向代理4.2 HTTP缓存4.3 安全功能 五、易于配置和管理5.1 配置文件简单5…...

K8S ingress 初体验 - ingress-ngnix 的安装与使用

准备环境 先把 google 的vm 跑起来… gatemanMoreFine-S500:~/projects/coding/k8s-s/service-case/cloud-user$ kubectl get nodes NAME STATUS ROLES AGE VERSION k8s-master Ready control-plane,master 124d v1.23.6 k8s-no…...

qt 获取父控件

在 Qt 中&#xff0c;你可以通过调用 QWidget 的 parentWidget() 方法来获取一个控件的父控件。这个方法会返回一个指向父控件的指针&#xff0c;如果该控件没有父控件&#xff0c;则返回 nullptr。 以下是一个简单的示例&#xff0c;展示了如何获取一个按钮的父控件&#xff…...

flask基础配置详情

前言 一个简单的应用 app Flask(__name__) app.route("/") def hello_world():return "<p>Hello,World!"运行Flask应用 #flask命令运行flask --app hello run#使用Python命令进行运行python -m flask # 作为一个捷径&#xff0c;如果文件名为 app…...

Oracle EBS关联公司段的设计逻辑和设计哲学

从设计逻辑 → 核心原理 → 完整配置事例 → 业务分录实例 → 常见坑的完整说明&#xff0c;全部围绕 “关联公司段&#xff08;Intercompany Company Segment&#xff09;” 在 EBS R12 里的设计与实现&#xff0c;不绕弯一、关联公司段的 “设计核心逻辑”1. 本质定义关联公司…...

设计模式 之 责任链模式

一搜网上讲责任链的写法都感觉好复杂&#xff1f;我用简单实现让你秒懂并马上用到项目里 前言 搜了一圈责任链模式的文章&#xff0c;要么搬出 UML 类图画半天&#xff0c;要么搞一堆 Handler、HandlerChain、AbstractHandler 层层嵌套&#xff0c;看得人头大。 今天分享一个我…...

项目介绍 基于java+vue的跨境电商销售预测与可视化平台设计与实现(含模型描述及部分示例代码)专栏近期有大量优惠 还请多多点一下关注 加油 谢谢 你的鼓励是我前行的动力 谢谢支持 加油 谢谢

基于javavue的跨境电商销售预测与可视化平台设计与实现的详细项目实例 请注意此篇内容只是一个项目介绍 更多详细内容可直接联系博主本人 或者访问对应标题的完整博客或者文档下载页面&#xff08;含完整的程序&#xff0c;GUI设计和代码详解&#xff09; 跨境电商销售预测…...

DeepSeek总结的从 DuckDB 迁移到 chDB基准测试

来源: https://github.com/chdb-io/cookbook/tree/main/migration-from-duckdbBENCHMARK.md 迁移基准测试 —— 深度探讨 本文是从 DuckDB 迁移到 chDB指南的配套文档。指南的第 5 节将环境/场景/结果/摘要内联呈现&#xff1b;本文件则包含不适合指南风格流程的部分&#xf…...

高中化学碳酸盐受热分解,常考易错

一、详细总结 1. 碳酸正盐&#xff08;含 ( \text{CO}_3^{2-} )&#xff09; 碳酸正盐的热稳定性与金属阳离子的极化能力密切相关&#xff0c;大致规律如下&#xff1a;类别代表物热稳定性与分解产物化学方程式&#xff08;条件&#xff1a;加热&#xff09;ⅠA族&#xff08;除…...

CVE-2021-4034深度解析:pkexec权限绕过与Linux提权原理

1. 这个漏洞不是“又一个提权”&#xff0c;而是Linux权限模型的照妖镜你可能已经看过几十篇讲CVE-2021-4034的文章&#xff0c;标题都带着“高危”“远程”“一键提权”这类字眼。但实话讲&#xff0c;我第一次在客户环境里复现它时&#xff0c;手是抖的——不是因为怕搞崩系统…...

MySQL 5.7.12 + Druid 连接池“只读事务”异常深度剖析(Cannot execute statement in a READ ONLY transaction)

一、故障现象 在 MySQL 5.7.12 环境下&#xff0c;使用 Druid 连接池的应用偶尔会抛出以下异常&#xff1a; Cannot execute statement in a READ ONLY transaction诡异特征&#xff1a; 偶发性出现&#xff0c;并非每次操作都复现conn.isReadOnly() 返回 false&#xff0c;但 …...

【AI Agent审计实战白皮书】:20年审计专家亲授7大高危场景识别法与合规落地路径

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;AI Agent审计的核心范式演进 传统软件系统审计聚焦于代码合规性、日志完整性与权限边界&#xff0c;而AI Agent的自主决策、多步推理与动态工具调用能力&#xff0c;正推动审计范式从静态验证转向“意图…...

速学linux命令教程

概述&#xff1a;用户使用shell跟内核交互&#xff0c;Linux中有很多命令&#xff0c;不同的命令有不同的功能。多个命令合起来可以完成一个大的功能。命令很多我们不可能记得每条命令的用法。 所以&#xff0c;我们必须有一种方法来快速知道一个命令是如何使用的&#xff0c;…...

实战指南:如何高效使用Python构建CharacterAI智能对话系统

实战指南&#xff1a;如何高效使用Python构建CharacterAI智能对话系统 【免费下载链接】CharacterAI Unofficial Python API for character.ai 项目地址: https://gitcode.com/gh_mirrors/ch/CharacterAI 想要为你的Python项目添加智能对话功能吗&#xff1f;CharacterA…...