C++程序员笔试训练

ops/2024/10/19 5:28:31/

面试题1:使用库函数将数字转换位字符串

  • 考点:c语言库函数中数字转换位字符串的使用

在这里插入图片描述

char *gcvt(double number, int ndigit, char *buf);

参数说明:

number:待转换的double类型数值。
ndigit:保留的小数位数。
buf:用于存储转换后的字符串的缓冲区。

  • 示例代码如下
void func()
{int numInt = 1333;double numDouble = 123.12;char strInt[20];char strDouble[20];char buffer[20];_itoa(numInt, strInt, 10);_gcvt(numDouble, 5, strDouble);sprintf(buffer, "%d", numInt);cout << strInt << endl;cout << strDouble << endl;cout << buffer << endl;}

面试题2:不使用库函数将整数转换为字符串

  • 考点:对数字转换为字符串,相关ASCII码的理解

解题思路:将整数的每一位上加上’0’转换成char类型并存到字符数组中

void func()
{int number = 12333;char str[20];int count = 0;while (number){int num = number % 10;str[count++] = num + '0';number = number / 10;}//对顺序进行调整char newstr[20];for (int i = 0; i < count; i++){newstr[i] = str[count - 1 - i];}newstr[count] = '\0';cout << newstr << endl;}

面试题3:编程实现strcpy函数

  • 考点:字符串复制的实现
    在这里插入图片描述
  • 示例代码如下
char* My_strcpy(char* strDest, const char* strSrc)
{int strSrc_len=strlen(strSrc);for (int i = 0; i < strSrc_len; i++){strDest[i] = strSrc[i];}strDest[strSrc_len] = '\0';return strDest;
}int getStrLen(const char* strSrc)
{int len = 0;while (*strSrc++ != '\0'){len++;}return len;
}int main()
{char strSrc[] = "abcdefg";char strDest[20];int len = 0;len=getStrLen( My_strcpy(strDest, strSrc));cout << strDest << endl;cout << "len=" << len << endl;system("pause");return 0;
}

在这里插入图片描述

面试题4:编程实现memcpy函数

  • 内存复制的实现
void *memcpy(void *dest, const void *src, size_t n);

其中,dest是目标地址,src是源地址,n是要复制的字节数。

memcpy函数可以用来复制任意长度的内存数据,但注意对于复杂数据类型(如结构体、类等),要确保其成员的内存布局是连续的,否则可能会导致数据被破坏。

  • 示例代码如下
void* memcpy2(void *dest,const void *src,size_t size)
{assert((dest != NULL) && (src != NULL));//强制转换char* newDest = (char*)dest;char* newSrc = (char*)src;while (size-- > 0){*newDest++ = *newSrc++;}return newDest;
}int main()
{char src[] = "asdfghjk";char dest[20];int len=strlen(src);memcpy2(dest, src, len);dest[len] = '\0';cout << dest << endl;system("pause");return 0;
}

面试题5:strcpy与memcpy的区别

  • strcpy和memcpy都是用来复制内存区域的函数,但是二者之间有几个关键的区别:
  1. strcpy用于复制字符串,其原型为char* strcpy(char* dest, const char* src)。它会从源字符串的地址开始复制字符,直到遇到空字符\0为止。因此,strcpy只能用来复制字符串,并且不需要指定复制的长度。

  2. memcpy用于复制任意类型的内存数据,其原型为void* memcpy(void* dest, const void* src, size_t n)。它需要传入要复制的数据的起始地址和长度,可以复制任意类型的数据,包括字符串。因此,memcpy是更通用的函数,可以处理任意类型的数据。

  3. strcpy会在目标字符串的末尾添加\0结束符,而memcpy则不会。因此,在使用memcpy复制字符串时,需要手动添加结束符。

  • 总的来说,strcpy主要用于复制字符串,而memcpy用于复制任意类型的内存数据。在复制字符串时,可以使用strcpy来保证字符串的正确复制及添加结束符。

http://www.ppmy.cn/ops/48670.html

相关文章

Jetson AGX Orin基于BlueZl蓝牙协议栈AOJ红外蓝牙体温计开发(低功耗蓝牙ble)

一、准备工作 安装blueZ以及相关的蓝牙测试工具&#xff1a; sudo apt update sudo apt install bluez sudo apt install bluez-hcidump然后看下蓝牙设备是否识别到&#xff0c;已经是否处于开启状态&#xff1a; roottest-desktop:~# hciconfig -a hci0: Type: Primary …

开源AI大模型项目推荐

开源项目一直以来都是技术社区的重要组成部分&#xff0c;它们不仅促进了技术的创新和共享&#xff0c;也为无数开发者提供了学习和成长的平台。以下是几个当前热门且值得关注的开源大模型项目&#xff0c;希望能激发你的兴趣&#xff1a; 1. Hugging Face Transformers 简介…

flask部署mtcnn

目录 打印人脸检测信息 输出结果 保存检测结果 浏览器查看nginx&#xff08;nginx配置这里就不多介绍了&#xff09; url图片检测人脸 输出结果 Flask hello-world Flaskmtcnn python调flaskmtcnn 打印人脸检测信息 import cv2 from mtcnn.mtcnn import MTCNNimg cv2.c…

jenkins使用注意问题

1.在编写流水线时并不知道当前处在哪个目录&#xff0c;导致名使用不当&#xff0c;以及文件位置不清楚 流水线任务默认路径是&#xff0c;test4_mvn为jenkins任务名 [Pipeline] sh (hide)pwd /var/jenkins_home/workspace/test4_mvn maven任务也是&#xff0c;看来是一样的…

2024高校网络安全管理运维赛题目--复现+题目+wp

比赛官网 比赛官网 部分writeup Signin 如图所示GIF提取&#xff0c;然后简单的ROT13 flag{welcome-to-signin-quiz} 邮件 ----如图所示简单的base64 邮件flag{WeLCoMeto} 邮箱flag{phishHUntInG} Babyre 解析&#xff1a;放到IDA分析&#xff0c;看伪代码 得到AncsA6g…

Qt系统相关

本文目录 1.Qt事件事件的处理标签事件鼠标事件滚轮事件按键事件定时器事件窗口事件事件派发器 2.Qt文件操作QFile的基本使用 3.Qt多线程使用线程线程锁connect的第五个参数 条件变量和信号量 4.Qt网络编程UDP SocketTCP SocketQTcpServerQTcpSocket HTTP的编写 5.QT多媒体播放音…

springboot-自动配置

一、自动配置的原理 Spring Boot 的自动配置基于以下几个核心概念&#xff1a; 条件注解 (Conditional Annotations)&#xff1a;Conditional 系列注解用于根据特定条件判断是否加载某个配置类或 Bean。 自动配置类 (Auto-configuration Classes)&#xff1a;这些类通过 META-…

【计算机网络】个人学习笔记——第六章 应用层:域名系统DNSWWW万维网FTPHTTPSMTPPOP3DHCP

文章目录 第六章 应用层一、应用层概述1.应用层的功能2.应用层的重要协议3.应用层的常见模型 二、域名系统DNS【重点】1.DNS域名解析系统概述2.域名结构3.域名类型4.域名服务器5.域名解析方式6.域名查询过程的理解 三、文件传输协议【重点】1.文本传送协议FTP2.简单文件传送协议…