【C语言】习题练手套餐 2
每日习题分享。
字符串函数的运用
首先回顾一下字符串函数。
字符串长度
strlen(const char *s);
功能:计算字符串的长度,不包含终止符\0
。
字符串连接
char *strcat(char *dest, const char *src);
char *strncat(char *dest, const char *src, size_t n);
功能:将src
追加到dest
后。strncat
最多追加n
个字符。
字符串连接
char *strcat(char *dest, const char *src);
char *strncat(char *dest, const char *src, size_t n);
功能:将src
追加到dest
后。strncat
最多追加n
个字符。
字符串比较
int strcmp(const char *s1, const char *s2);
int strncmp(const char *s1, const char *s2, size_t n);
功能:比较字符串。返回值为 0 表示相等,<0 表示s1
小于s2
,>0 表示s1
大于s2
。strncmp
最多比较n
个字符。
字符串分割
char *strtok(char *str, const char *delim);
功能:将字符串按分隔符delim
分割成多个子串。(例如 ,.)
习题一
#include <stdio.h>
#include <string.h>
#define MAXLEN 1000
int main()
{char s[MAXLEN + 1], t[MAXLEN + 1];int len_s, len_t;if(fgets(s, sizeof(s), stdin) != NULL){// 去掉末尾的换行符len_s = strlen(s);if (len_s > 0 && s[len_s - 1] == '\n') {s[len_s - 1] = '\0';len_s--;}}if (fgets(t, sizeof(t), stdin) != NULL){len_t = strlen(t);if (len_t > 0 && t[len_t - 1] == '\n'){t[len_t - 1] = '\0';len_t--;}}// 检查连接后的字符串长度是否超过1000个字符if (len_s + len_t > MAXLEN){printf("错误:连接将导致字符串长度超限。\n");printf("%s\n", s);}else {// 连接字符串 t 到 s 的末尾strcat(s, t);printf("%s\n", s);}return 0;}
本题其实没有任何难度,但是仅仅使用strcat函数的话是不会通过的。需要考虑众多的因素。
例如:
这里把考虑长度的部分删除,直接strcat,输出。
习题二
#include <stdio.h>
#include <string.h>int main()
{char s[1001];int pos, len;// 读取字符串(包含空格)if (fgets(s, sizeof(s), stdin) == NULL) {return 1;}// 移除换行符size_t len_s = strlen(s);if (len_s > 0 && s[len_s - 1] == '\n') {s[--len_s] = '\0';}// 读取位置和长度if (scanf("%d %d", &pos, &len) != 2) {return 1;}// 调整为0-based索引pos--;// 检查位置有效性if (pos >= len_s) {printf("%s\n", s);return 0;}// 计算实际删除长度int delete_len = (pos + len > len_s) ? len_s - pos : len;// 移动剩余字符覆盖删除部分memmove(s + pos, s + pos + delete_len, len_s - (pos + delete_len) + 1);// 输出结果printf("%s\n", s);return 0;
}
习题三
首先我们需要考虑下标与位置的关系,由题目可知 6指的是下标5。易错点
其他的在按题目要求来书写。
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>#define MAX_LEN 1000int main()
{char s[MAX_LEN + 2]; // 主串缓冲区,足够容纳输入和换行符fgets(s, sizeof(s), stdin); // 读取主串// 去除末尾的换行符size_t len_s = strlen(s);if (len_s > 0 && s[len_s - 1] == '\n'){s[len_s - 1] = '\0';len_s--;}int pos, len;scanf("%d %d", &pos, &len); // 题目保证参数合法,无需检查// 直接截取并输出,无需调整int i;
for (i = 0; i < len && (s + pos - 1)[i] != '\0'; i++)
{putchar((s + pos - 1)[i]);
}
putchar('\n');return 0;
}
习题四
这是一道题的测试点,如果提交后没有通过,需要通过这些来修改代码。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>char* insertString(char* s, char* t, int pos) {int len_s = strlen(s);int len_t = strlen(t);// Check if pos is validif (pos < 1 || pos > len_s + 1) {return NULL;}// Allocate memory for the new stringchar* result = (char*)malloc((len_s + len_t + 1) * sizeof(char));if (result == NULL) {return NULL;}// Copy the first part of s to resultstrncpy(result, s, pos - 1);result[pos - 1] = '\0';// Append t to resultstrcat(result, t);// Append the remaining part of s to resultstrcat(result, s + pos - 1);return result;
}int main() {char s[1000], t[1000];int pos;// Read the input strings and positionfgets(s, sizeof(s), stdin);s[strcspn(s, "\n")] = 0; // Remove newline characterfgets(t, sizeof(t), stdin);t[strcspn(t, "\n")] = 0; // Remove newline characterscanf("%d", &pos);// Insert t into s at position poschar* result = insertString(s, t, pos);if (result == NULL) {printf("错误:指定插入位置不存在。\n");printf("%s\n", s);} else {printf("%s\n", result);free(result);}return 0;
}
相关文章:

【C语言】习题练手套餐 2
每日习题分享。 字符串函数的运用 首先回顾一下字符串函数。 字符串长度 strlen(const char *s);功能:计算字符串的长度,不包含终止符\0。 字符串连接 char *strcat(char *dest, const char *src); char *strncat(char *dest, const char *src, si…...

[项目总结] 基于Docker与Nginx对项目进行部署
🌸个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 🏵️热门专栏: 🧊 Java基本语法(97平均质量分)https://blog.csdn.net/2301_80050796/category_12615970.html?spm1001.2014.3001.5482 🍕 Collection与…...

神经正切核推导(2)
对神经正切核的理解和推导(1)-CSDN博客 这篇文章包括很多概念的理解 声明: 本篇文章来自于Neural Tangent Kernel (NTK)基础推导 - Gearlesskai - 博客园 旨在对上述推导过程进行再推导与理解 手写推导部分与其他颜…...
Python模型优化技巧
在机器学习与数据分析领域,模型优化是提升预测准确性、缩短训练时间、降低资源消耗的核心环节。本文结合实战经验,从数据预处理、特征工程、模型调优、代码优化到部署监控,系统梳理Python模型优化的关键技巧,助你打造高效能模型。…...
Redis 面试场景
文章目录 项目地址一、Redis使用场景1.1 统计网站访问次数1.2 产品分类树1.3 分布式锁(常见)1.4 排行榜1.5 记录用户登录状态(记录)1.6 限流1.7 缓存加速1.8消息队列1.9 全局ID生成1.10 订餐系统场景1 . 单体版2. 故事板二、OutBox Pattern2.1 项目3. Saga状态机4. 日志4. …...
MySQL 索引失效及其解决办法
一、前言 在数据库优化中,索引(Index)是一项至关重要的技术手段,可以显著提升查询性能。然而,在实际开发过程中,MySQL 索引并不总是如预期生效。本文将从原理出发,系统地介绍索引失效的常见场景及其解决方案,帮助开发者有效规避性能陷阱。 二、索引基础回顾 MySQL 支…...

Ctrl+鼠标滚动阻止页面放大/缩小
项目场景: 提示:这里简述项目相关背景: 一般在我们做大屏的时候,不希望Ctrl鼠标上下滚动的时候页面会放大/缩小,那么在有时候,又不希望影响到别的页面,比如说这个大屏是在另一个管理后台中&am…...
开发积累总结
export default 和export const 均用于从模块导出函数、对象或原始值,区别在于: export default:一个文件中只能有一个,为默认导出,在引用时指定名字。 export const:一个文件中有多个,为命名…...
C++虚函数与类对象模型深度解析
目录 1. 引言 2. 单继承下的虚函数表 2.1 基本概念 2.2 示例分析 3. 多重继承下的虚函数表 3.1 基本概念 3.2 示例分析 4. 虚函数表指针(vptr)的存储 4.1 单继承 4.2 多重继承 5. 常见面试题解析 问题1:D 继承 B1 和 B2࿰…...

3d世界坐标系转屏幕坐标系
世界坐标 ——> NDC标准设备坐标 ——> 屏幕坐标 标准设备NDC坐标系 屏幕坐标系 .project方法将 将向量(坐标)从世界空间投影到相机的标准化设备坐标 (NDC) 空间。 手动实现HTML元素定位到模型位置,实现模型标签效果(和css2Render原理同理&#…...

【2025】基于Springboot + vue + 协同过滤算法实现的旅游推荐系统
项目描述 本系统包含管理员和用户两个角色。 管理员角色: 用户管理:管理系统中所有用户的信息,包括添加、删除和修改用户。 配置管理:管理系统配置参数,如上传图片的路径等。 权限管理:分配和管理不同角…...

AI数据治理破局的战略重构
AI数据治理破局的战略重构 AI正在颠覆传统数据治理模式动态策略驱动的AI治理新模式构建AI时代的数据防护栏结语 人工智能正重塑商业世界,那些真正理解当代数据治理变革的企业将占据决定性优势。 旧日的数据治理手册已经无法应对AI时代的全新挑战,我们需要…...

QT6安装与概念介绍
文章目录 前言installModulesQt Core元对象系统属性系统对象模型对象树和所有者信号 & 槽 前言 QT不是纯粹的C标准,它在此基础上引入MOC编译器,在调用C编译器之前会使用该编译器将非C的内容如 Q_OBJECT、signal:等进行处理。此外QT还引入了对象间通…...
Python包管理工具uv 国内源配置
macOS 下 .config/uv/uv.toml内 pip源 [[index]] url "https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple/" default true#uv python install 下载源配置无效,需要在项目里配置 # python-install-mirror "https://mirror.nju.edu.cn/githu…...
ABP VNext + Webhook:订阅与异步回调
🚀 ABP VNext Webhook:订阅与异步回调 📚 目录 🚀 ABP VNext Webhook:订阅与异步回调🎯 一、背景切入:如何优雅地支持第三方回调?🏗 二、系统架构设计🔍 三…...

Docker(二):开机自启动与基础配置、镜像加速器优化与疑难排查指南
引言 docker 的快速部署与高效运行依赖于两大核心环节:基础环境搭建与镜像生态优化。本期博文从零开始,系统讲解 docker 服务的管理配置与镜像加速实践。第一部分聚焦 docker 服务的安装、权限控制与自启动设置,确保环境稳定可用;…...

Lua基础语法
文章目录 一、注释二、 数据类型1. 注意事项2. 全局/局部变量 三、 标识符1. 保留字2. 变量3. 动态类型 四、 运算符1. 算术运算符2. 关系运算符3. 逻辑运算符4. 其他运算符 五、 函数1. 固定参函数2. 可变参函数3. 可返回多个值4. 函数作为参数 六、循环控制语句1. while...do…...

2025年渗透测试面试题总结-匿名[实习]安全工程师(安全厂商)(题目+回答)
网络安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 一面技术问题 1. Burp插件原理 2. JavaWeb项目经验 3. CC1-7链原理(以CC6为例࿰…...

【node.js】实战项目
个人主页:Guiat 归属专栏:node.js 文章目录 1. 项目概览与架构设计1.1 实战项目:企业级电商管理系统1.2 技术栈选择 2. 项目初始化与基础架构2.1 项目结构设计2.2 基础配置管理 3. 用户服务实现3.1 用户服务架构3.2 用户模型设计3.3 用户服务…...
从AD9361 到 ADSY1100 ,中间的迭代产品历史
从 AD9361 到 ADSY1100 的演进,是 Analog Devices(ADI)在射频收发器(RF Transceiver)集成化、高性能、宽带宽、低功耗和波束赋形能力方面持续推进的一个路线。以下是其中的重要芯片节点和核心参数对比: 1. …...

免费插件集-illustrator插件-Ai插件-查找选中颜色与pantone中匹配颜色
文章目录 1.介绍2.安装3.通过窗口>扩展>知了插件4.功能解释5.总结 1.介绍 本文介绍一款免费插件,加强illustrator使用人员工作效率,实现查找选中颜色与pantone中匹配颜色。首先从下载网址下载这款插件https://download.csdn.net/download/m0_6731…...
redis集合类型
练习命令使用,具体如下: 练习无序集合类型命令 sadd smembers scard srem sinter sunion sdiff sismember srandmember spop 练习有序集合类型命令 无序集合中的每个元素都是不同的,且没有顺序 创建/追加/删除/查看 127.0.0.1:6379>…...

[爬虫实战] 爬微博图片:xpath的具体运用
博客配套代码发布于github:微博图片 相关知识点:图片懒加载 [爬虫知识] 数据解析 相关爬虫专栏:JS逆向爬虫实战 爬虫知识点合集 爬虫实战案例 这里我们以网页微博图片为例,尝试获取该页面下所有图片并保存。 一、分析网站 刷…...

MySQL中简单的操作
一.数据库 1.1数据库的建立: create database 库名; 1.2数据库的查看: show databases; 1.3数据库的删除: drop database 库名; 二.数据库中的表 2.1表的建立: create table 表名&…...
NNG和DDS
NNG (Nanomsg Next Generation) 和 DDS (Data Distribution Service) 是两种不同的通信协议,各自在不同场景下具有其优势。下面我将对这两种技术进行详细解释,并通过具体的例子来说明它们如何应用在实际场景中。 1. NNG (Nanomsg Next Generation) NNG简…...

防震基座在半导体晶圆制造设备抛光机详细应用案例-江苏泊苏系统集成有限公司
在半导体制造领域,晶圆抛光作为关键工序,对设备稳定性要求近乎苛刻。哪怕极其细微的振动,都可能对晶圆表面质量产生严重影响,进而左右芯片制造的成败。以下为您呈现一个防震基座在半导体晶圆制造设备抛光机上的经典应用案例。 企…...
框架开发与原生开发的权衡:React案例分析(原生JavaScript)
文章目录 框架开发与原生开发的权衡:React案例分析引言框架开发的优势开发效率提升状态管理的便捷性组件复用与生态系统团队协作与规范统一 原生开发的优势性能优化空间学习曲线平缓精细控制与定制化避免版本依赖与迁移成本 实际应用案例分析大型企业应用性能关键型…...

Lua5.4.2常用API整理记录
一、基础函数 1.type(value) 返回值的类型(如 "nil", "number", "string", "table", "function" 等)。 代码测试: a 0 print(type(a)) a nil print(type(a)) a "aaaaaaaa&…...

Python打卡训练营学习记录Day36
仔细回顾一下神经网络到目前的内容,没跟上进度的同学补一下进度。 作业:对之前的信贷项目,利用神经网络训练下,尝试用到目前的知识点让代码更加规范和美观。 import pandas as pd #用于数据处理和分析,可处理表格数…...
### Mac电脑推送文件至Gitee仓库步骤详解
**核心流程及命令说明:** #### 1. **配置全局Git用户信息** bash git config --global user.name "shenguanling" git config --global user.email "3259125968qq.com" - **作用**:设置提交代码时的作者信息࿰…...