c语言编程题经典100例——(41~45例)
1,实现动态内存分配。
在C语言中,动态内存分配使用malloc、calloc、realloc和free函数。以下是一个示例:
#include <stdio.h>
#include <stdlib.h> int main() { int *ptr = NULL; // 初始化为空 int n = 5; // 假设我们想要分配5个整数的空间 // 使用malloc分配内存 ptr = (int*)malloc(n * sizeof(int)); if(ptr == NULL) { printf("Memory not allocated.\n"); exit(0); } else { printf("Memory successfully allocated using malloc.\n"); for(int i = 0; i < n; ++i) // 为新分配的内存赋值 ptr[i] = i + 1; printf("The elements of the array are: "); for(int i = 0; i < n; ++i) // 打印数组元素 printf("%d, ", ptr[i]); } free(ptr); // 使用完之后,使用free函数释放内存 return 0;
}
这个程序首先使用malloc函数动态分配了足够的内存来存储5个整数。然后,它检查是否成功分配了内存。如果内存分配失败,程序将打印错误消息并退出。如果内存分配成功,程序将使用这块内存来存储一些数据,并打印出这些数据。最后,当程序不再需要这块内存时,它使用free函数来释放这块内存。
2,实现字符串的操作(反转、连接、截取等)。
C 语言提供了许多用于字符串操作的标准函数,以下是一些示例:
a 字符串反转:
#include <stdio.h>
#include <string.h> void reverse_string(char* str) { int len = strlen(str); char temp; for(int i = 0; i < len / 2; i++) { temp = str[i]; str[i] = str[len - i - 1]; str[len - i - 1] = temp; }
} int main() { char str[] = "Hello, World!"; reverse_string(str); printf("%s\n", str); // 输出:!dlroW ,olleH return 0;
}
这个函数通过交换字符串的前半部分和后半部分来反转字符串。
b 字符串连接:
#include <stdio.h>
#include <string.h> void string_concat(char* dest, const char* src) { strcat(dest, src); // 使用标准库函数strcat来实现连接
} int main() { char dest[50] = "Hello, "; const char* src = "World!"; string_concat(dest, src); printf("%s\n", dest); // 输出:Hello, World! return 0;
}
这个函数使用标准库函数strcat来连接两个字符串。注意,目标字符串需要有足够的空间来存储结果。
c 字符串截取:
#include <stdio.h>
#include <string.h> void substring(char* str, int start, int end) { // 使用标准库函数strncpy来实现截取 strncpy(str, str + start, end - start + 1); str[end - start + 1] = '\0'; // 添加字符串结束标志
} int main() { char str[] = "Hello, World!"; substring(str, 7, 12); // 从第7个字符开始,截取到第12个字符(不包括第12个字符) printf("%s\n", str); // 输出:World! return 0;
}
这个函数使用标准库函数strncpy来截取字符串的一部分。注意,目标字符串需要有足够的空间来存储结果,并且截取的结束位置是不包括在内的。
3,实现日期格式化。
在C语言中,可以使用标准库函数strftime()来格式化日期。这个函数可以将日期格式化为指定的字符串格式。
下面是一个示例代码,演示如何使用strftime()函数来格式化日期:
#include <stdio.h>
#include <time.h> int main() { time_t t = time(NULL); // 获取当前时间 struct tm* tm = localtime(&t); // 转换为本地时间 char date[20]; strftime(date, sizeof(date), "%Y-%m-%d", tm); // 格式化日期 printf("今天的日期是:%s\n", date); return 0;
}
在这个示例中,我们首先使用time()函数获取当前时间,并将其转换为structtm类型,以便于进行日期格式化。然后,我们使用strftime()函数将日期格式化为指定的字符串格式,这里使用了%Y-%m-%d格式,表示年-月-日。最后,我们使用printf()函数输出格式化后的日期字符串。
需要注意的是,strftime()函数的第一个参数是一个指向字符数组的指针,用于存储格式化后的日期字符串。第二个参数是字符数组的大小,以字节为单位。第三个参数是日期字符串的格式,可以使用不同的格式化标记来指定不同的日期格式。第四个参数是一个指向structtm类型的指针,用于指定要格式化的日期和时间。
4,实现进制转换(十进制转其他进制)。
以下是一个使用C语言实现将十进制数转换为其他进制的示例代码:
#include <stdio.h> void decimalToBase(int decimal, int base) { int remainder = decimal % base; int quotient = decimal / base; if (quotient == 0) { printf("%d", remainder); } else { decimalToBase(quotient, base); printf("%d", remainder); }
} int main() { int decimal, base; printf("Enter a decimal number: "); scanf("%d", &decimal); printf("Enter the base to convert to (2-16): "); scanf("%d", &base); printf("The base %d representation of %d is: ", base, decimal); decimalToBase(decimal, base); printf("\n"); return 0;
}
在这个示例中,我们定义了一个decimalToBase()函数,用于将十进制数转换为其他进制。该函数使用递归算法实现。首先,我们计算出十进制数除以目标基数的商和余数。如果商为0,则说明当前余数就是转换后的最低位;否则,递归调用decimalToBase()函数,继续处理商,最后输出余数。在main()函数中,我们通过调用decimalToBase()函数,将输入的十进制数转换为指定的其他进制。用户需要输入要转换的十进制数和目标进制。程序将输出转换后的结果。需要注意的是,此示例中仅支持将十进制数转换为2-16的进制。如果需要支持更大的进制范围,需要相应地调整代码。
5,实现数字转字符串。
在C语言中,将数字转换为字符串可以通过几种不同的方法,包括使用sprintf()函数,或使用一个一个字符地构建字符串。这里有两种简单的示例:
方法一:使用sprintf()函数
#include <stdio.h> int main() { int num = 12345; char str[20]; sprintf(str, "%d", num); printf("The string is: %s\n", str); return 0;
}
在这个例子中,sprintf()函数被用来将整数num转换为字符串,并存储在str中。
方法二:一个一个字符地构建字符串
这种方法涉及到数字转化的每个数字除以10,然后取余数得到该位的数字,再通过ASCII码将数字转换为字符。
#include <stdio.h> void intToStr(int num) { char str[20]; int i = 0; while(num != 0) { int digit = num % 10; str[i++] = '0' + digit; // 通过ASCII码将数字转换为字符 num /= 10; } str[i] = '\0'; // 在字符串末尾添加结束符 printf("The string is: %s\n", str);
} int main() { int num = 12345; intToStr(num); return 0;
}
在这个例子中,我们定义了一个名为intToStr的函数,该函数将整数转换为字符串。然后在main函数中调用该函数。
相关文章:
c语言编程题经典100例——(41~45例)
1,实现动态内存分配。 在C语言中,动态内存分配使用malloc、calloc、realloc和free函数。以下是一个示例: #include <stdio.h> #include <stdlib.h> int main() { int *ptr NULL; // 初始化为空 int n 5; // 假设我们想要分配5个整数…...
计算机毕业设计|基于SpringBoot+MyBatis框架健身房管理系统的设计与实现
计算机毕业设计|基于SpringBootMyBatis框架的健身房管理系统的设计与实现 摘 要:本文基于Spring Boot和MyBatis框架,设计并实现了一款综合功能强大的健身房管理系统。该系统涵盖了会员卡查询、会员管理、员工管理、器材管理以及课程管理等核心功能,并且…...
java学习part27线程死锁
基本就是操作系统的内容 138-多线程-线程安全的懒汉式_死锁_ReentrantLock的使用_哔哩哔哩_bilibili...
(二)Tiki-taka算法(TTA)求解无人机三维路径规划研究(MATLAB)
一、无人机模型简介: 单个无人机三维路径规划问题及其建模_IT猿手的博客-CSDN博客 参考文献: [1]胡观凯,钟建华,李永正,黎万洪.基于IPSO-GA算法的无人机三维路径规划[J].现代电子技术,2023,46(07):115-120 二、Tiki-taka算法(TTA…...
区间预测 | Matlab实现BP-KDE的BP神经网络结合核密度估计多变量时序区间预测
区间预测 | Matlab实现BP-KDE的BP神经网络结合核密度估计多变量时序区间预测 目录 区间预测 | Matlab实现BP-KDE的BP神经网络结合核密度估计多变量时序区间预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.BP-KDE多变量时间序列区间预测,基于BP神经网络多…...
LD_PRELOAD劫持、ngixn临时文件、无需临时文件rce
LD_PRELOAD劫持 <1> LD_PRELOAD简介 LD_PRELOAD 是linux下的一个环境变量。用于动态链接库的加载,在动态链接库的过程中他的优先级是最高的。类似于 .user.ini 中的 auto_prepend_file,那么我们就可以在自己定义的动态链接库中装入恶意函数。 也…...
循环神经网络训练情感分析
文章目录 1 循环神经网络训练情感分析2 完整代码3 代码详解 1 循环神经网络训练情感分析 下面介绍如何使用长短记忆模型(LSTM)处理情感分类LSTM模型是循环神经网络的一种,按照时间顺序,把信息进行有效的整合,有的信息…...
如何绕过某讯手游保护系统并从内存中获取Unity3D引擎的Dll文件
某讯的手游保护系统用的都是一套,在其官宣的手游加固功能中有一项宣传是对比较热门的Unity3d引擎的手游保护方案,其中对Dll文件的保护介绍如下, “Dll加固混淆针对Unity游戏,对Dll模块的变量名、函数名、类名进行加密混淆处理&…...
【C/C++笔试练习】公有派生、构造函数内不执行多态、抽象类和纯虚函数、多态中的缺省值、虚函数的描述、纯虚函数的声明、查找输入整数二进制中1的个数、手套
文章目录 C/C笔试练习选择部分(1)公有派生(2)构造函数内不执行多态(3)抽象类和纯虚函数(4)多态中的缺省值(5)程序分析(6)重载和隐藏&a…...
Linux shell中的函数定义、传参和调用
Linux shell中的函数定义、传参和调用: 函数定义语法: [ function ] functionName [()] { } 示例: #!/bin/bash# get limit if [ $# -eq 1 ] && [ $1 -gt 0 ]; thenlimit$1echo -e "\nINFO: input limit is $limit" e…...
YoloV8改进策略:基于RevCol,可逆的柱状神经网络的完美迁移,YoloV8的上分利器
文章目录 摘要论文:《RevCol:可逆的柱状神经网络》1、简介2、方法2.1、Multi-LeVEl ReVERsible Unit2.2、可逆列架构2.2.1、MACRo设计2.2.2、MicRo 设计2.3、中间监督3、实验部分3.1、图像分类3.2、目标检测3.3、语义分割3.4、与SOTA基础模型的系统级比较3.5、更多分析实验&l…...
九章量子计算机:引领量子计算的新篇章
九章量子计算机:引领量子计算的新篇章 一、引言 随着科技的飞速发展,量子计算已成为全球科研领域的前沿议题。九章量子计算机作为中国自主研发的量子计算机,具有划时代的意义。本文将深入探讨九章量子计算机的原理、技术特点、应用前景等方面,带领读者领略量子计算的魅力…...
什么是vue的计算属性
Vue的计算属性是一种特殊的属性,它的值是通过对其他属性进行计算得到的。计算属性可以方便地对模型中的数据进行处理和转换,同时还具有缓存机制,只有在依赖的数据发生变化时才会重新计算值。这使得计算属性更加高效,并且可以减少重…...
Linux中文件的打包压缩、解压,下载到本地——zip,tar指令等
目录 1 .zip后缀名: 1.1 zip指令 1.2 unzip指令 2 .tar后缀名 3. sz 指令 4. rz 指令 5. scp指令 1 .zip后缀名: 1.1 zip指令 语法:zip [namefile.zip] [namefile]... 功能:将目录或者文件压缩成zip格式 常用选项:…...
C语言——深入理解指针(4)
目录 1.回调函数 2. qsort 函数的使用 2.1 排序整型数据 2.2 排序结构体数据 3. qsort 函数的模拟实现 1.回调函数 回调函数就是通过一个函数指针调用的函数。 你把函数的地址作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,被调…...
Linux基础命令(超全面,建议收藏!)
一、Linux的目录结构 /,根目录是最顶级的目录了 Linux只有一个顶级目录:/ 路径描述的层次关系同样使用/来表示 /home/itheima/a.txt,表示根目录下的home文件夹内有itheima文件夹,内有a.txt 二、Linux命令基础格式 无论是什么…...
LeetCode刷题---合并两个有序链表
个人主页:元清加油_【C】,【C语言】,【数据结构与算法】-CSDN博客 个人专栏:http://t.csdnimg.cn/ZxuNL http://t.csdnimg.cn/c9twt 前言:这个专栏主要讲述递归递归、搜索与回溯算法,所以下面题目主要也是这些算法做的 我讲述…...
SQL Server 2008 使用concat报错
SQL Server 2008 使用concat报错 在 SQL Server中,CONCAT 函数是从 SQL Server 2012 版本开始引入的,所以在 SQL Server 2008 中使用 CONCAT 函数会导致错误。 如果你想要连接字符串,有几种替代方法可以考虑: 使用 运算符&…...
视频后期效果制作工具Mocha Pro 2022 Plugins mac中文版软件介绍
Mocha Pro 2022 mac是一款专业的三维摄像机反求摩卡跟踪插件,同时也是一款视频后期效果制作工具,Mocha Pro 2022下载能够给数字媒体艺术家提供强大的、直观的和创新的追踪解决方案用简化的界面、加速的工作流程以及轻松追踪和操作镜头的强大性࿰…...
人工智能时代:AIGC的横空出世
🌈个人主页:聆风吟 🔥系列专栏:数据结构、网络奇遇记 🔖少年有梦不应止于心动,更要付诸行动。 文章目录 📋前言一. 什么是AIGC?二. AIGC的主要特征2.1 文本生成2.2 图像生成2.3 语音生成2.4 视…...
SCAU期末笔记 - 数据分析与数据挖掘题库解析
这门怎么题库答案不全啊日 来简单学一下子来 一、选择题(可多选) 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘:专注于发现数据中…...
渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止
<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet: https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...
基础测试工具使用经验
背景 vtune,perf, nsight system等基础测试工具,都是用过的,但是没有记录,都逐渐忘了。所以写这篇博客总结记录一下,只要以后发现新的用法,就记得来编辑补充一下 perf 比较基础的用法: 先改这…...
Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级
在互联网的快速发展中,高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司,近期做出了一个重大技术决策:弃用长期使用的 Nginx,转而采用其内部开发…...
现代密码学 | 椭圆曲线密码学—附py代码
Elliptic Curve Cryptography 椭圆曲线密码学(ECC)是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础,例如椭圆曲线数字签…...
Unit 1 深度强化学习简介
Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库,例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体,比如 SnowballFight、Huggy the Do…...
vue3+vite项目中使用.env文件环境变量方法
vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量,这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...
ArcGIS Pro制作水平横向图例+多级标注
今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作:ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等(ArcGIS出图图例8大技巧),那这次我们看看ArcGIS Pro如何更加快捷的操作。…...
html-<abbr> 缩写或首字母缩略词
定义与作用 <abbr> 标签用于表示缩写或首字母缩略词,它可以帮助用户更好地理解缩写的含义,尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时,会显示一个提示框。 示例&#x…...
零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)
本期内容并不是很难,相信大家会学的很愉快,当然对于有后端基础的朋友来说,本期内容更加容易了解,当然没有基础的也别担心,本期内容会详细解释有关内容 本期用到的软件:yakit(因为经过之前好多期…...
