当前位置: 首页 > news >正文

c语言编程题经典100例——(41~45例)

1,实现动态内存分配。

在C语言中,动态内存分配使用malloccallocreallocfree函数。以下是一个示例:

#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语言中&#xff0c;动态内存分配使用malloc、calloc、realloc和free函数。以下是一个示例&#xff1a; #include <stdio.h> #include <stdlib.h> int main() { int *ptr NULL; // 初始化为空 int n 5; // 假设我们想要分配5个整数…...

计算机毕业设计|基于SpringBoot+MyBatis框架健身房管理系统的设计与实现

计算机毕业设计|基于SpringBootMyBatis框架的健身房管理系统的设计与实现 摘 要:本文基于Spring Boot和MyBatis框架&#xff0c;设计并实现了一款综合功能强大的健身房管理系统。该系统涵盖了会员卡查询、会员管理、员工管理、器材管理以及课程管理等核心功能&#xff0c;并且…...

java学习part27线程死锁

基本就是操作系统的内容 138-多线程-线程安全的懒汉式_死锁_ReentrantLock的使用_哔哩哔哩_bilibili...

(二)Tiki-taka算法(TTA)求解无人机三维路径规划研究(MATLAB)

一、无人机模型简介&#xff1a; 单个无人机三维路径规划问题及其建模_IT猿手的博客-CSDN博客 参考文献&#xff1a; [1]胡观凯,钟建华,李永正,黎万洪.基于IPSO-GA算法的无人机三维路径规划[J].现代电子技术,2023,46(07):115-120 二、Tiki-taka算法&#xff08;TTA&#xf…...

区间预测 | Matlab实现BP-KDE的BP神经网络结合核密度估计多变量时序区间预测

区间预测 | Matlab实现BP-KDE的BP神经网络结合核密度估计多变量时序区间预测 目录 区间预测 | Matlab实现BP-KDE的BP神经网络结合核密度估计多变量时序区间预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.BP-KDE多变量时间序列区间预测&#xff0c;基于BP神经网络多…...

LD_PRELOAD劫持、ngixn临时文件、无需临时文件rce

LD_PRELOAD劫持 <1> LD_PRELOAD简介 LD_PRELOAD 是linux下的一个环境变量。用于动态链接库的加载&#xff0c;在动态链接库的过程中他的优先级是最高的。类似于 .user.ini 中的 auto_prepend_file&#xff0c;那么我们就可以在自己定义的动态链接库中装入恶意函数。 也…...

循环神经网络训练情感分析

文章目录 1 循环神经网络训练情感分析2 完整代码3 代码详解 1 循环神经网络训练情感分析 下面介绍如何使用长短记忆模型&#xff08;LSTM&#xff09;处理情感分类LSTM模型是循环神经网络的一种&#xff0c;按照时间顺序&#xff0c;把信息进行有效的整合&#xff0c;有的信息…...

如何绕过某讯手游保护系统并从内存中获取Unity3D引擎的Dll文件

​ 某讯的手游保护系统用的都是一套&#xff0c;在其官宣的手游加固功能中有一项宣传是对比较热门的Unity3d引擎的手游保护方案&#xff0c;其中对Dll文件的保护介绍如下&#xff0c; “Dll加固混淆针对Unity游戏&#xff0c;对Dll模块的变量名、函数名、类名进行加密混淆处理&…...

【C/C++笔试练习】公有派生、构造函数内不执行多态、抽象类和纯虚函数、多态中的缺省值、虚函数的描述、纯虚函数的声明、查找输入整数二进制中1的个数、手套

文章目录 C/C笔试练习选择部分&#xff08;1&#xff09;公有派生&#xff08;2&#xff09;构造函数内不执行多态&#xff08;3&#xff09;抽象类和纯虚函数&#xff08;4&#xff09;多态中的缺省值&#xff08;5&#xff09;程序分析&#xff08;6&#xff09;重载和隐藏&a…...

Linux shell中的函数定义、传参和调用

Linux shell中的函数定义、传参和调用&#xff1a; 函数定义语法&#xff1a; [ function ] functionName [()] { } 示例&#xff1a; #!/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的计算属性是一种特殊的属性&#xff0c;它的值是通过对其他属性进行计算得到的。计算属性可以方便地对模型中的数据进行处理和转换&#xff0c;同时还具有缓存机制&#xff0c;只有在依赖的数据发生变化时才会重新计算值。这使得计算属性更加高效&#xff0c;并且可以减少重…...

Linux中文件的打包压缩、解压,下载到本地——zip,tar指令等

目录 1 .zip后缀名&#xff1a; 1.1 zip指令 1.2 unzip指令 2 .tar后缀名 3. sz 指令 4. rz 指令 5. scp指令 1 .zip后缀名&#xff1a; 1.1 zip指令 语法&#xff1a;zip [namefile.zip] [namefile]... 功能&#xff1a;将目录或者文件压缩成zip格式 常用选项&#xff1a…...

C语言——深入理解指针(4)

目录 1.回调函数 2. qsort 函数的使用 2.1 排序整型数据 2.2 排序结构体数据 3. qsort 函数的模拟实现 1.回调函数 回调函数就是通过一个函数指针调用的函数。 你把函数的地址作为参数传递给另一个函数&#xff0c;当这个指针被用来调用其所指向的函数时&#xff0c;被调…...

Linux基础命令(超全面,建议收藏!)

一、Linux的目录结构 /&#xff0c;根目录是最顶级的目录了 Linux只有一个顶级目录&#xff1a;/ 路径描述的层次关系同样使用/来表示 /home/itheima/a.txt&#xff0c;表示根目录下的home文件夹内有itheima文件夹&#xff0c;内有a.txt 二、Linux命令基础格式 无论是什么…...

LeetCode刷题---合并两个有序链表

个人主页&#xff1a;元清加油_【C】,【C语言】,【数据结构与算法】-CSDN博客 个人专栏&#xff1a;http://t.csdnimg.cn/ZxuNL http://t.csdnimg.cn/c9twt 前言&#xff1a;这个专栏主要讲述递归递归、搜索与回溯算法&#xff0c;所以下面题目主要也是这些算法做的 我讲述…...

SQL Server 2008 使用concat报错

SQL Server 2008 使用concat报错 在 SQL Server中&#xff0c;CONCAT 函数是从 SQL Server 2012 版本开始引入的&#xff0c;所以在 SQL Server 2008 中使用 CONCAT 函数会导致错误。 如果你想要连接字符串&#xff0c;有几种替代方法可以考虑&#xff1a; 使用 运算符&…...

视频后期效果制作工具Mocha Pro 2022 Plugins mac中文版软件介绍

Mocha Pro 2022 mac是一款专业的三维摄像机反求摩卡跟踪插件&#xff0c;同时也是一款视频后期效果制作工具&#xff0c;Mocha Pro 2022下载能够给数字媒体艺术家提供强大的、直观的和创新的追踪解决方案用简化的界面、加速的工作流程以及轻松追踪和操作镜头的强大性&#xff0…...

人工智能时代:AIGC的横空出世

&#x1f308;个人主页&#xff1a;聆风吟 &#x1f525;系列专栏&#xff1a;数据结构、网络奇遇记 &#x1f516;少年有梦不应止于心动&#xff0c;更要付诸行动。 文章目录 &#x1f4cb;前言一. 什么是AIGC?二. AIGC的主要特征2.1 文本生成2.2 图像生成2.3 语音生成2.4 视…...

基于ChatGPT等大模型快速爬虫提取网页内容

本文将介绍一种基于ChatGPT等大模型快速爬虫提取网页内容的方法。传统的爬虫方法需要花费较大精力分析页面的html元素&#xff0c;而这种方法只需要两步就可以完成。下面将从使用步骤、方法扩展和示例程序三部分进行介绍。RdFast智能创作机器人小程序预计本周2023-11-30之前集成…...

JavaScript WebAPI(三)(详解)

这次介绍一下webAPI中的一些知识&#xff1a; 回调函数 回调函数是指 如果将函数A做为参数传递给函数B时&#xff0c;我们称函数A为回调函数 例如&#xff1a; // 立即执行函数中传递的函数是一个回调函数 (function(){ console.log("我是回调函数") })(); // …...

LeetCode哈希表:最长连续序列

LeetCode哈希表&#xff1a;最长连续序列 题目描述 给定一个未排序的整数数组 nums &#xff0c;找出数字连续的最长序列&#xff08;不要求序列元素在原数组中连续&#xff09;的长度。 请你设计并实现时间复杂度为 O(n) 的算法解决此问题。 示例 1&#xff1a; 输入&…...

SpringBoot+redis实现接口防刷

写一个RedisService&#xff0c;实现获取Redis 的set、get、incr&#xff08;相当于计数器&#xff09; 写inferface注解类 做一个拦截器&#xff0c;因为要先于控制器判断 将拦截器注入Springboot 文章目录 目录 文章目录 前言 一、引入依赖 二、使用步骤 2.1 RedisServic…...

5G承载网和大客户承载的演进

文章目录 移动4/5G承载网联通和电信4/5G承载网M-OTN&#xff08;Metro-optimized OTN&#xff09;&#xff0c;城域型光传送网PeOTN&#xff08;packet enhanced optical transport network&#xff09;&#xff0c;分组增强型OTN板卡增强型PeOTN集中交叉型PeOTN VC-OTN&#x…...

智慧工地一体化解决方案(里程碑管理)源码

智慧工地为管理人员提供及时、高效、优质的远程管理服务&#xff0c;提升安全管理水平&#xff0c;确保施工安全提高施工质量。实现对人、机、料、法、环的全方位实时监控&#xff0c;变被动“监督”为主动“监控”。 一、建设背景 施工现场有数量多、分布广&#xff0c;总部统…...

熬夜会秃头——beta冲刺Day2

这个作业属于哪个课程2301-计算机学院-软件工程社区-CSDN社区云这个作业要求在哪里团队作业—beta冲刺事后诸葛亮-CSDN社区这个作业的目标记录beta冲刺Day2团队名称熬夜会秃头团队置顶集合随笔链接熬夜会秃头——Beta冲刺置顶随笔-CSDN社区 目录 一、团队成员会议总结 1、成员…...

【linux】信号——信号保存+信号处理

信号保存信号处理 1.信号保存1.1信号其他相关概念1.2信号在内核中的表示 2.信号处理2.1信号的捕捉流程2.2sigset_t2.3信号集操作函数2.4实操2.5捕捉信号的方法 3.可重入函数4.volatile5.SIGCHLD信号 自我名言&#xff1a;只有努力&#xff0c;才能追逐梦想&#xff0c;只有努力…...

雷军:我的程序人生路

今天有朋友发给我一篇我在20年前在BBS上写的帖子。那还是1996年&#xff0c;我们通过电话线拨号连接到西点BBS上飙帖子玩的年代。那是一个互联网混沌初开的年代&#xff0c;那是一个BBS和Email几乎主宰了全部互联网的年代&#xff0c;那是一个青春的理想和热血沸腾的年代。 我…...

Linux 磁盘分区处理

最近实施过程中遇到客户提供给我们的服务器操作系统和Docke容器环境都已经安装完成&#xff0c;但磁盘的分区没有进行整理好。磁盘总共270G&#xff0c;系统安装分配了60G&#xff0c;剩余未创建分配需要处理。由于分区情况每家不一样&#xff0c;但大致流程都是相同的&#xf…...