当前位置: 首页 > 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;}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Oracle左连接过滤条件注意事项
  • 【Linux杂货铺】3.程序地址空间
  • UART编程
  • 基于复旦微JFMQL100TAI的全国产化FPGA+AI人工智能异构计算平台,兼容XC7Z045-2FFG900I
  • 全面揭秘:ChatGPT-4o带来的下一代AI能力
  • 环境管理开发实战
  • 卸载docker
  • Python input NameError: name ‘xxx‘ is not defined.
  • 智充科技营收增速放缓:经营成本飙升,应收账款大幅增长
  • Halcon机器视觉15种缺陷检测案例_4产品毛剌检测
  • 【2024年全国青少信息素养大赛c++初中复赛集训第一天编程题分享】
  • 3、Chronos
  • 数学建模·模糊评价法
  • ffmpeg新旧函数对比
  • 微信视频号的视频怎么下载到本地?快速教你下载视频号视频
  • Laravel 菜鸟晋级之路
  • PHP那些事儿
  • Promise面试题2实现异步串行执行
  • rc-form之最单纯情况
  • Redash本地开发环境搭建
  • Traffic-Sign Detection and Classification in the Wild 论文笔记
  • vue2.0开发聊天程序(四) 完整体验一次Vue开发(下)
  • XML已死 ?
  • 测试开发系类之接口自动化测试
  • 微信开放平台全网发布【失败】的几点排查方法
  • 为什么要用IPython/Jupyter?
  • SAP CRM里Lead通过工作流自动创建Opportunity的原理讲解 ...
  • ​​快速排序(四)——挖坑法,前后指针法与非递归
  • ​2021半年盘点,不想你错过的重磅新书
  • ​数据链路层——流量控制可靠传输机制 ​
  • $ is not function   和JQUERY 命名 冲突的解说 Jquer问题 (
  • (01)ORB-SLAM2源码无死角解析-(56) 闭环线程→计算Sim3:理论推导(1)求解s,t
  • (2022版)一套教程搞定k8s安装到实战 | RBAC
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第2节(共同的基类)
  • (Matalb时序预测)PSO-BP粒子群算法优化BP神经网络的多维时序回归预测
  • (pt可视化)利用torch的make_grid进行张量可视化
  • (Qt) 默认QtWidget应用包含什么?
  • (ZT)出版业改革:该死的死,该生的生
  • (安卓)跳转应用市场APP详情页的方式
  • (二)PySpark3:SparkSQL编程
  • (附源码)spring boot网络空间安全实验教学示范中心网站 毕业设计 111454
  • (蓝桥杯每日一题)love
  • (三维重建学习)已有位姿放入colmap和3D Gaussian Splatting训练
  • (一)Docker基本介绍
  • (转)nsfocus-绿盟科技笔试题目
  • (转)负载均衡,回话保持,cookie
  • (转)关于多人操作数据的处理策略
  • *++p:p先自+,然后*p,最终为3 ++*p:先*p,即arr[0]=1,然后再++,最终为2 *p++:值为arr[0],即1,该语句执行完毕后,p指向arr[1]
  • .[hudsonL@cock.li].mkp勒索病毒数据怎么处理|数据解密恢复
  • .bat批处理(一):@echo off
  • .net oracle 连接超时_Mysql连接数据库异常汇总【必收藏】
  • .net 调用海康SDK以及常见的坑解释
  • .NET 使用配置文件
  • .net对接阿里云CSB服务
  • // an array of int