笔面试编程题总结
8/6诺瓦星云
修改程序
void point(int *p){*p = p[2];};
int main() {int c[] ={1,2,3,4,5},*p = c;point(p+1);for(;p <c+5;){printf("%d",*p++);}return 0;
}
1、分隔字符串 strtok

//c语言
#include <stdio.h>
#include <string.h>// 函数声明
char* findLongestWord(char* str);int main() {char* str = "This is a test string";char* longestWord = findLongestWord(str);if (longestWord != NULL) {printf("The longest word is: %s\n", longestWord);} else {printf("No words found in the string.\n");}return 0;
}// 函数定义
char* findLongestWord(char* str) {if (str == NULL) return NULL; // 检查输入字符串是否为空//分隔char *token;char *tokens[100]; // 假设最多分割出100个子字符串int i = 0;char delimiters[] = " "; // 定义分隔符// 复制输入字符串,因为strtok会修改原字符串char *strCopy = strdup(str);// 用strtok分割字符串,要分割的字符串,第一次调用时传入需要分割的字符串,之后传入 NULLtoken = strtok(strCopy, delimiters);while (token != NULL) {tokens[i++] = token; // 保存分割后的子字符串token = strtok(NULL, delimiters); // 继续获取下一个子字符串}// 打印分割后的结果int max = -1;char* longestWord = NULL; // 指向最长单词的指针for (int j = 0; j < i; j++) {//printf("%s\n", tokens[j]);int len_tmp = strlen(tokens[j]);if(len_tmp>max){max = len_tmp;longestWord = tokens[j];}}// 释放复制的字符串free(strCopy);return longestWord;
}
2、后缀法解 最长无重复子串
//C 最长无重复子串
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//得到字符串最长的无重复的前缀长度
int longestlen(char * p)
{int hash[256];int len = 0;memset(hash,0,sizeof(hash));while (*p && !hash[*p]){hash[*p] = 1;++ len;++ p;}return len;
}//使用后缀数组解法
int max_unique_substring4(char * str)
{int maxlen = -1;int begin = 0;char *a[99999];int n = 0;while(*str != '\0'){a[n++] = str++;}for (int i=0; i<n; i++){int temlen = longestlen(a[i]);if (temlen > maxlen){maxlen = temlen;begin = i;}}printf("%.*s\n", maxlen, a[begin]);return maxlen;
}
int main() {char *test_str = "abcabcbb";printf("Length of the longest substring without repeating characters: %s\n", max_unique_substring4(test_str));return 0;
}
3、双向链表
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <string.h>// 定义链表节点结构体
typedef struct list_node_t {struct list_node_t *p_before; // 上一级节点struct list_node_t *p_next; // 下一级节点void *p_data; // 存储数据节点uint32_t data_size; // 存储数据大小
} list_node_t;// 插入数据到链表尾部
int insert_data_to_list(void *p_list_head, const void *data, uint32_t data_size) {if (!p_list_head || !data) {return -2; // 传入指针为空错误}// 创建新节点list_node_t *new_node = (list_node_t *)malloc(sizeof(list_node_t));if (!new_node) {return -1; // 内存申请错误}new_node->p_data = malloc(data_size);if (!new_node->p_data) {free(new_node);return -1; // 内存申请错误}memcpy(new_node->p_data, data, data_size);new_node->data_size = data_size;new_node->p_before = NULL;new_node->p_next = NULL;// 找到链表尾部list_node_t *current = (list_node_t *)p_list_head;while (current->p_next) {current = current->p_next;}// 插入新节点到尾部current->p_next = new_node;new_node->p_before = current;return 0; // 正确
}// 从链表中删除节点并释放空间
int delete_list_node(void *p_node) {if (!p_node) {return -2; // 传入指针为空错误}list_node_t *node = (list_node_t *)p_node;// 重新连接链表if (node->p_before) {node->p_before->p_next = node->p_next;}if (node->p_next) {node->p_next->p_before = node->p_before;}// 释放节点数据和节点本身free(node->p_data);free(node);return 0; // 正确
}// 示例用法
int main() {list_node_t head = {NULL, NULL, NULL, 0}; // 初始化链表头部int data1 = 100;int data2 = 20;insert_data_to_list(&head, &data1, sizeof(data1));insert_data_to_list(&head, &data2, sizeof(data2));// 遍历链表并打印数据list_node_t *current = head.p_next;while (current) {printf("%d\n", *(int *)current->p_data);current = current->p_next;}// 删除所有节点current = head.p_next;while (current) {list_node_t *next = current->p_next;delete_list_node(current);current = next;}return 0;
}
4、背包问题
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <string.h>// 定义链表节点结构体
typedef struct list_node_t {struct list_node_t *p_before; // 上一级节点struct list_node_t *p_next; // 下一级节点void *p_data; // 存储数据节点uint32_t data_size; // 存储数据大小
} list_node_t;// 插入数据到链表尾部
int insert_data_to_list(void *p_list_head, const void *data, uint32_t data_size) {if (!p_list_head || !data) {return -2; // 传入指针为空错误}// 创建新节点list_node_t *new_node = (list_node_t *)malloc(sizeof(list_node_t));if (!new_node) {return -1; // 内存申请错误}new_node->p_data = malloc(data_size);if (!new_node->p_data) {free(new_node);return -1; // 内存申请错误}memcpy(new_node->p_data, data, data_size);new_node->data_size = data_size;new_node->p_before = NULL;new_node->p_next = NULL;// 找到链表尾部list_node_t *current = (list_node_t *)p_list_head;while (current->p_next) {current = current->p_next;}// 插入新节点到尾部current->p_next = new_node;new_node->p_before = current;return 0; // 正确
}// 从链表中删除节点并释放空间
int delete_list_node(void *p_node) {if (!p_node) {return -2; // 传入指针为空错误}list_node_t *node = (list_node_t *)p_node;// 重新连接链表if (node->p_before) {node->p_before->p_next = node->p_next;}if (node->p_next) {node->p_next->p_before = node->p_before;}// 释放节点数据和节点本身free(node->p_data);free(node);return 0; // 正确
}// 示例用法
int main() {list_node_t head = {NULL, NULL, NULL, 0}; // 初始化链表头部int data1 = 100;int data2 = 20;insert_data_to_list(&head, &data1, sizeof(data1));insert_data_to_list(&head, &data2, sizeof(data2));// 遍历链表并打印数据list_node_t *current = head.p_next;while (current) {printf("%d\n", *(int *)current->p_data);current = current->p_next;}// 删除所有节点current = head.p_next;while (current) {list_node_t *next = current->p_next;delete_list_node(current);current = next;}return 0;
}
相关文章:
笔面试编程题总结
8/6诺瓦星云 修改程序 void point(int *p){*p p[2];}; int main() {int c[] {1,2,3,4,5},*p c;point(p1);for(;p <c5;){printf("%d",*p);}return 0; }1、分隔字符串 strtok //c语言 #include <stdio.h> #include <string.h>// 函数声明 char* fin…...
[other][知识]八大行星的英文各是什么?
1、水星英文名 Mercury,水星最接近太阳,是太阳系中体积和质量最小的行星; 2、金星英文名 Venus,太阳系中第六大行星,太阳系中温度最高的行星,中国古代称之为太白或太白金星; 3、地球英文 E…...
如何使用 AWS CLI 创建和运行 EMR 集群
为初学者提供清晰易懂的教程 为初学者提供清晰易懂的教程 Apache Spark 和 AWS EMR 上的 Spark 集群 添加图片注释,不超过 140 字(可选) 欢迎来到雲闪世界。Spark 被认为是“大数据丛林之王”,在数据分析、机器学习、流媒体和图形…...
HDFS写入数据的流程图
1.客户端向namenode发送请求,请示写入数据 2.namenode接受请求后,判断这个用户是否有写入权限,如果不具备直接报错;如果有写入权限,接着判断在要写入的目录下是否已经存在这个文件,如果存在,直…...
【Material-UI】使用指南:快速入门与核心功能解析
文章目录 一、快速入门1.1 安装和导入1.2 组件的独立性 二、全局设置2.1 响应式元标签2.2 CssBaseline2.3 默认字体 三、响应式设计3.1 Grid系统 四、最佳实践4.1 组件的一致性4.2 性能优化4.3 可访问性 五、总结 Material-UI是一个功能强大且灵活的React UI框架,为…...
【Java 第十三篇章】MyBatis 持久化框架的介绍
一、MyBatis 的历史 MyBatis 的前身是 iBATIS,它最早在 2001年由 Clinton Begin 发起。iBATIS 在早期就因其简单易用和灵活的特性受到了开发者的关注。 随着时间的推移,iBATIS 不断发展和改进。然而,在 2010年,iBATIS 项目团队决…...
AI新应用:概要设计与详细设计自动生成解决方案
近日,CoCode旗下的Co-Project智能项目管理平台V4.0.0升级发布,新增AI生成概要设计和AI生成详细设计功能,大大提高了设计的效率和质量。 CoCode旗下的Co-Project智能项目管理平台 一键智绘蓝图自现 平台设计板块新增概要设计功能,…...
【物联网设备端开发】使用QEMU模拟ESP硬件运行ESP-IDF
目录 一,开发环境搭建 1.1 安装ESP-IDF 1.2 安装vscode插件 1.3 在ESP-IDF插件配置ESP-IDF开发配置 1.4 下载IOTDeviceSDK 设备端开发代码 1.5 通过ESP-IDF插件编译好镜像 1.6 构建QEMU docker镜像 1.7 使用QEMU容器运行镜像 二,搭建QEMU环境步…...
#子传父父传子props和emits #封装的table #vue3
#子传父&父传子props和emits #封装的table #vue3 父组件:emits defineEmits props 子组件: 子组件 <template><el-table v-bind"$attrs" ref"innerTableRef" v-loading"loading" border :data"tabl…...
尚硅谷谷粒商城项目笔记——四、使用docker安装redis【电脑CPU:AMD】
四、使用docker安装redis 注意: 因为电脑是AMD芯片,自己知识储备不够,无法保证和课程中用到的环境一样,所以环境都是自己根据适应硬件软件环境重新配置的,这里的虚拟机使用的是VMware。 在解决了 Docker 安装的问题之…...
Java在无人驾驶方向的就业方向
在无人驾驶领域,Java作为一种主流编程语言,尽管不是最常见的选择(例如,C和Python通常更受欢迎),但它仍然有很多应用场景和就业机会。以下是一些Java在无人驾驶方向的就业方向: 1. 后台服务开发 …...
机器学习中的关键距离度量及其应用
引言 在当今的数据驱动世界中,机器学习算法扮演着至关重要的角色,它们在图像分类、面部识别、在线内容审核、零售目录优化和推荐系统等多个领域发挥着重要作用。这些算法的核心在于它们能够识别和利用数据之间的相似性。而实现这一点的关键,…...
Redis中缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等问题
目录 1.什么是缓存雪崩1.1 导致雪崩的原因1.2 如何解决 2.什么是缓存穿透2.1 导致穿透的原因2.2 如何解决 3.什么是缓存预热3.1 如何解决 4.什么是缓存降级4.1 缓存降级的目的4.2 解决方案4.3 服务降级的目的 5.缓存更新 1.什么是缓存雪崩 就是存储在缓存里面的大量数据&#…...
【C++】vector 的模拟实现
📢博客主页:https://blog.csdn.net/2301_779549673 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! 📢本文由 JohnKi 原创,首发于 CSDN🙉 📢未来很长&#…...
【C++】模版详解
1、概念 C模版分两类:函数模版和类模版 1)函数模板的格式 template <class 形参名,class 形参名,......> 返回类型 函数名(参数列表) {函数体 }例如: template <class T> void swap(T& a, T& b…...
应用商店故障(UOS系统)
应用商店故障(UOS系统) 1. 安装应用商店内的应用无法下载,更新系统时提示依赖关系被破坏,怎么办? 问题描述 安装应用商店内的应用无法下载,更新系统时均提示依赖关系被破坏 解决方案 1、可先建议用户尝试修…...
8月8号前端日报:web在线进行eps32固件升级
最近几天在开发固件更新的功能,学习了不少相关的知识。 在arduino中对esp32进行固件更新,本质是使用esp官方的esptool,使用一个python exe程序,执行一段脚本,该脚本会将固件文件按照对应的位置来写入到esp芯片中。一共…...
win7安装python3.10
到这下载 PythonWin7/3.10.1 at master adang1345/PythonWin7 GitHub...
【Liunx】线程与进程的经典面试题总结
在这个浮躁的时代 只有自律的人才能脱颖而出 -- 《觉醒年代》 线程与进程的面试题总结 1 简述什么是LWP2 简述LWP与pthread_create创建的线程之间的关系3 简述轻量级进程ID与进程ID之间的区别4 请简述什么是线程互斥,为什么需要互斥5 简述你了解的进程间通信方式…...
Python中的 `break` 语句:掌握循环控制的艺术
Python中的 break 语句:掌握循环控制的艺术 下滑即可查看博客内容 🌈 欢迎莅临我的个人主页 👈这里是我静心耕耘深度学习领域、真诚分享知识与智慧的小天地!🎇 🎓 博主简介:985高校的普通本硕…...
SDXL-Turbo快速上手指南:无需插件、纯Diffusers架构的极简部署方案
SDXL-Turbo快速上手指南:无需插件、纯Diffusers架构的极简部署方案 你有没有想过,AI绘画能快到什么程度?是等上几十秒,还是几分钟?如果我告诉你,现在有一种方案,能让AI在你敲下键盘的瞬间就给出…...
用C51玩转LED:从流水灯代码里,我悟出了嵌入式模块化设计的精髓
用C51玩转LED:从流水灯代码里,我悟出了嵌入式模块化设计的精髓 第一次用C51点亮LED时,那种成就感至今难忘。但当我尝试把简单的流水灯代码扩展成更复杂的灯光效果时,代码很快变成了一团乱麻——全局变量四处游走,延时函…...
Jellyfin豆瓣插件:5分钟打造中文影视库的完整教程
Jellyfin豆瓣插件:5分钟打造中文影视库的完整教程 【免费下载链接】jellyfin-plugin-douban Douban metadata provider for Jellyfin 项目地址: https://gitcode.com/gh_mirrors/je/jellyfin-plugin-douban 还在为Jellyfin媒体库缺少中文元数据而烦恼吗&…...
SEO 查看哪些页面最重要
SEO查看哪些页面最重要:深度解析与实用建议 在当今数字营销的世界中,搜索引擎优化(SEO)无疑是每个网站运营者都必须关注的关键环节。为了提升网站在搜索引擎结果中的排名,了解哪些页面对SEO最重要是至关重要的。本文将…...
别再猜了!Unity URP灯光数量上限到底在哪设?详解Universal RP Asset配置
Unity URP灯光数量上限配置全指南:从原理到实战 刚接触Unity URP渲染管线的开发者,经常会遇到一个令人困惑的问题:明明在场景中放置了多个灯光,为什么有些灯光会莫名其妙地消失或闪烁?这背后其实涉及到URP对灯光数量的…...
OpenClaw+Qwen3.5-9B:学术论文阅读助手开发实录
OpenClawQwen3.5-9B:学术论文阅读助手开发实录 1. 项目背景与需求 作为一名经常需要阅读大量学术论文的研究人员,我长期被两个问题困扰:一是PDF文献的快速消化效率低下,二是跨领域专业术语的理解成本高昂。传统解决方案要么依赖…...
(一篇入门)汽车电子电器之整车控制器VCU功能解析与测试实践
1. 整车控制器VCU:新能源汽车的"大脑" 第一次拆解新能源汽车时,我盯着那个巴掌大的金属盒子看了半天——这就是传说中的VCU(整车控制器)。它就像乐高套装里的核心积木,所有其他模块都得听它指挥。记得有次测…...
如何利用 SEO 优化平台提高网站排名
如何利用 SEO 优化平台提高网站排名 在当前数字化时代,网站排名是吸引流量、提升业务的重要因素。搜索引擎优化(SEO)在这一过程中扮演着不可或缺的角色。本文将详细探讨如何利用 SEO 优化平台来提高网站在搜索引擎中的排名,涵盖问…...
数据库死锁的排查:从现象到根因
在软件测试工作中,数据库的稳定性和数据一致性是评估系统质量的关键维度。死锁问题,作为数据库并发控制中的“顽疾”,其随机性、隐蔽性和破坏性常常让测试人员感到棘手。它不仅是性能测试中的“拦路虎”,更可能在线上引发严重故障…...
CANopen网络管理NMT避坑指南:从心跳报文0x7F看懂节点状态与PDO失效原因
CANopen网络管理NMT实战诊断:从心跳报文解码到PDO失效精准定位 当你在调试一个由二十多个CANopen节点组成的自动化产线时,突然发现3号工位的传感器数据停止更新——这种场景对工业现场工程师来说再熟悉不过。更棘手的是,CAN分析仪上不断刷新的…...
