【C语言】编程题专项练习+答案

目录

1.删除有序数组中重复的数

2.用除二取余的方法,把任意一个十进制正数的二进制序列输出(不考虑溢出)

2.1如果是把任意一个十进制整数的二进制序列输出呢?

3.输出一个六行六列的整形矩阵,并输出其转置矩阵。矩阵中的元素的十位数是行数,个位数是列数,比如第一行第六列的元素是16

4.编写程序把4位16进制数转换为短整型(short类型)

5.分割字符串

6.二代身份证

7.绝对素数

8.输入一个十进制数N,把他转化成R进制数输出(R是11到16之间的整数),比如R=16,输入90,输出就是5A

9.输入某年某月某日,判断这一天是那年的第几天,并输出本年还剩下多少天。

10.合并文件内容

11.检查字符串str2是否为str1的子串

12.输入10个1~100范围内的整数,删除其中1~50的数,并输出一个新数组。

13.在一个文件A.txt中取出一个矩阵,然后转置后写入到另一个文件B.txt中

14.输入年月日,输出这是今年第几天

15.能否构成三角形

16.把一个二维数组每行的最小值构成一个新的数组输出


1.删除有序数组中重复的数

2.用除二取余的方法,把任意一个十进制正数的二进制序列输出(不考虑溢出)

2.1如果是把任意一个十进制整数的二进制序列输出呢?

3.输出一个六行六列的整形矩阵,并输出其转置矩阵。矩阵中的元素的十位数是行数,个位数是列数,比如第一行第六列的元素是16

4.编写程序把4位16进制数转换为短整型(short类型)

比如FFF8=>-8,过程如下

//FFF8:4位16进制数

//1111 1111 1111 1000:二进制补码

//1000 0000 0000 0111:二进制反码

//1000 0000 0000 1000:二进制原码

法一:考查scanf和printf的占位符写法

法2:库函数法

strtol 是 C 语言标准库中的一个函数,用于将字符串转换成长整型数(long int)。这个函数定义在头文件 中。strtol 的名字是 "string to long" 的缩写,表示其功能是将一个字符串转化为一个长整型数值。

strtol 函数的原型如下:

long int strtol(const char *str, char **endptr, int base);

这个函数接受三个参数:

  • const char *str:一个指向要进行转换的以 null 结尾的 C 字符串的指针。
  • char **endptr:一个引用指针,用于存储转换后剩余部分字符串的地址。如果不需要这个值,可以传递 NULL。
  • int base:转换所采用的数制的基数,它必须在 2 和 36 之间,或者是特殊值 0。对于十进制数,这个值应该是 10;对于十六进制数,应该是 16 等等。如果 base 设置为 0,则会根据字符串格式自动推断基数(例如,以 "0x" 或 "0X" 开头的字符串会被识别为十六进制,以 "0" 开头为八进制,其余为十进制)。

此函数会读取 str,然后根据 base 的值将读取到的内容转换为一个长整型值。转换会忽略任何前导的空白字符(如空格),直到遇到第一个非有效字符或字符串末尾。如果 endptr 不是 NULL,函数还会设置 endptr 指向字符串中未进行转换的第一个字符。

对于类似的任务,比如将字符串转换成 int,可以使用 atoi或者 strtol 函数后再进行类型转换。然而如果字符串表示的数值可能超出 int 类型的范围,最好直接使用 strtol 然后检查返回值是否在 int 的范围之内。

请注意,strtol 能处理的最大数值为 LONG_MAX,最小数值为 LONG_MIN,这些极值定义在头文件 中。若字符串转换的结果超出了 long int 类型能表示的范围,则会发生溢出,并且函数将返回 LONG_MAX 或 LONG_MIN,同时设置 errno 为 ERANGE。

法3:不使用库函数strtol

5.分割字符串

编写toArray函数,其函数原型为int toArray(char* st,char c,int arr[])将字符串str用c所指定的分隔符分割并转换为整型数之后存入整形数组arr,函数返回值是该数组元素个数

运行结果

6.二代身份证

2019

法一:使用库函数

法二:不使用库函数

7.绝对素数

编写代码用来判断一个正整数是否为绝对素数,绝对素数是指这个数本身是素数,他的反置数也是素数,比如37是素数,他的反置数73也是素数,那么这两个数就是绝对素数

如果题目说是让编写一个函数int is_absolute_Prime(int n),我们现在写了好几个函数,显然不复合要求,实际上我们只要在这个is_absolute_Prime()函数中调用我们写的那好几个函数就行。

8.输入一个十进制数N,把他转化成R进制数输出(R是11到16之间的整数),比如R=16,输入90,输出就是5A

法一:转换字符

这种方法应该注意的是当我们拿到一个大于等于10的数时候,我们应该转化成A~F,在上面的代码中我们是要把数字字符转化成字符A~F,因此应该判断当前数字字符是否大于字符10,但是判断条件不能写>='10'而应该写成>'9',这是因为在C语言中'10'会被认为是一个多字符常量,他的ASCII码值并不是‘9’的ASCII码值+1,我们可以通过写一个代码打印他们两个的ASCII码来观察

发现这两个的ASCII码值相差了不是一点半点

因此在判断我们加上'0'之后的ch[i]是否大于'9'的时候就不能写成ch[i]>='10',应该写成ch[i]>'9',同时在转换成A~F的时候也不能直接写成ch[i]-'10'+'A',应该写成ch[i]-'0'-10+'A'。

法二:创建字符数组法

我没每次都是拿到的最低位,余数是几,那么这一位实际上就是几,比如我们拿到了余数5,实际上拿到的这一位就应该是5,打印的时候就要打印字符5,余数是10,就打印字符A。

9.输入某年某月某日,判断这一天是那年的第几天,并输出本年还剩下多少天。

例如输入2020 12 25,则输出是本年的第360天,今年还剩下6天

法一:

代码可以优化一下,让代码看起来更简洁

10.合并文件内容

有3个磁盘文件A.txt,B.txt,C.txt在同一路径下, A.txt,B.txt中各存放一行字母,要求把两个文件的信息合并,且按字母顺序排列好,然后输出到文件C.txt中去

11.检查字符串str2是否为str1的子串

检查字符串str2是否为str1的子串,如果是,返回子串在str1中的位置,如果不是,返回NULL

法一:库函数法

法二:不使用库函数,也即模拟实现strstr

12.输入10个1~100范围内的整数,删除其中1~50的数,并输出一个新数组。

13.在一个文件A.txt中取出一个矩阵,然后转置后写入到另一个文件B.txt中

14.输入年月日,输出这是今年第几天

另一种写法

实际上这道题的关键就在于讨论输入的天是否为闰年的二月之后。

15.能否构成三角形

输入三个整数作为三角形的三条边,看看能否构成三角形,如果能的话输出这个三角形的面积。

16.把一个二维数组每行的最小值构成一个新的数组输出

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/431571.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C++之map

1、map介绍 map是C STL的一个关联容器,它提供一对一的数据处理能力。其中,各个键值对的键和值可以是任意数据类型,包括 C 基本数据类型(int、double 等)、使用结构体或类自定义的类型。 第一个可以称为关键字(key)&…

盘点国内大厂的10个AI创作工具,看看你都用过哪些?

国内大厂的 AI 创作工具,目前已经非常多了,而且有很多都是大家耳熟能详的。 下面整理了一些,包含 AI 绘画、AI 视频、AI 智能体、AI 大模型等多个方向的国内大厂 AI 创作工具。 发现有几款 AI 工具,还真的非常好用。看看这些 AI…

H5小游戏,斗地主

H5小游戏源码、JS开发网页小游戏开源源码大合集。无需运行环境,解压后浏览器直接打开。有需要的,私信本人,发演示地址,可以后再订阅,发源码,含60+小游戏源码。如五子棋、象棋、植物大战僵尸、开心消消乐、扑鱼达人、飞机大战等等 <!DOCTYPE html> <html> <…

算法46:动态规划专练(力扣198: 打家劫舍 力扣740:删除并获取点数)

打家劫舍问题&#xff1a; 你是一个专业的小偷&#xff0c;计划偷窃沿街的房屋。每间房内都藏有一定的现金&#xff0c;影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统&#xff0c;如果两间相邻的房屋在同一晚上被小偷闯入&#xff0c;系统会自动报警。 给定…

每日五道java面试题之mysql数据库篇(五)

目录&#xff1a; 第一题. 联合索引是什么&#xff1f;为什么需要注意联合索引中的顺序&#xff1f;第二题. 什么是数据库事务&#xff1f;第三题. 事物的四大特性(ACID)介绍一下?第四题. 按照锁的粒度分数据库锁有哪些&#xff1f;锁机制与InnoDB锁算法?第五题. 从锁的类别上…

Linux 防火墙 操作命令【实用】

防火墙操作&#xff1a; 描述命令查看防火墙状态systemctl status firewalld、firewall-cmd --state暂时关闭防火墙systemctl stop firewalld永久关闭防火墙systemctl disable firewalld开启防火墙systemctl start firewalld开放指定端口firewall-cmd --zonepublic --add-port…

Docker常见命令使用

Docker命令是使用Docker的基础。这里记录下Docker日常运维过程中经常使用到的一些命令&#xff0c;更全面的命令还请参考Docker官网。 docker用法概述 Docker命令可以通过CLI工具实现与服务器的交互。Docker命令的语法如下&#xff1a; docker [DOCKER-COMMAND] [OPTIONS] […

基于openKylin与RISC-V的MindSpore AI项目实践

项目目标&#xff1a; 在openKylin系统上安装和配置MindSpore框架。开发一个简单的图像分类模型&#xff0c;并在RISC-V平台上进行训练和推理。根据RISC-V的特性&#xff0c;对MindSpore框架进行必要的优化。 目录 项目目标&#xff1a; 训练模型 编写训练代码&#xff0c;设…

Mysql之存储过程与函数

Mysql之存储过程与函数 存储过程概述分类创建存储过程一般的语法格式完整的语法格式案例一案例二 调用存储过程调用语法格式 创建存储函数存储过程与函数的查看&#xff0c;修改和删除 存储过程概述 官网解释是&#xff1a;存储过程的英文是 Stored Procedure 。它的思想很简单…

微信小程序开发:循环定时删除阿里云oss上传的文件

上文有说到我们开发了定时删除阿里云oss的功能&#xff0c;但是一次只能删除10条。 本文我们做到一次删除全部过期的文件。 实现&#xff1a;使用while循环&#xff0c;在循环里获取是否还有已过期的&#xff0c;没有就break掉&#xff0c;有就走删除逻辑。 开始代码部分&am…

鸿蒙系统适配的流程

鸿蒙系统适配的流程通常涉及以下关键步骤&#xff0c;以下是鸿蒙系统适配的一般流程&#xff0c;具体流程可能会根据项目的具体需求和开发团队的情况进行调整和优化。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作。 1. 准备工作&#…

常见限流算法及其实现

一、背景 在分布式系统中&#xff0c;随着业务量的增长&#xff0c;如何保护核心资源、防止系统过载、保证系统的稳定性成为了一个重要的问题。限流算法作为一种有效的流量控制手段&#xff0c;被广泛应用于各类系统中。本文将详细介绍四种常见的限流算法、两种常用的限流器工…

贝叶斯优化双向门控循环单元BO-BIGRU时序预测的matlab实现【源代码】

贝叶斯优化双向门控循环单元简介&#xff1a; 贝叶斯优化双向门控循环单元&#xff08;BO-BIGRU&#xff09;是一种结合了贝叶斯优化和双向门控循环单元&#xff08;BIGRU&#xff09;的神经网络模型。BIGRU是一种改进的循环神经网络&#xff08;RNN&#xff09;&#xff0c;它…

ArcGIS学习(十三)多源数据下的城市街道功能评估

ArcGIS学习(十三)多源数据下的城市街道功能评估 本任务带来的内容是多元数据下的城市街道功能评估。本任务包括两个关卡: 城市街道空间中观解读 城市街道功能详细评价 首先,我们来看看本任务的分析思路。 1.城市街道空间中观解读 下面我们正式进入第一关的内容一- 城市…

学习Python类型和对象,看这篇文章足矣!

类型与对象 一点基础理论: 对象代表现实世界中像轿车、狗、自行车这些事物。对象具有数据和行为两个主要特征。 在面向对象编程中&#xff0c;我们把数据当作属性&#xff0c;把行为当作方法。即&#xff1a; 数据 → 属性 和 行为 → 方法 类型是创造单个对象实例的蓝本。…

Vue基础入门(2)- Vue的生命周期、Vue的工程化开发和脚手架、Vue项目目录介绍和运行流程

Vue基础入门&#xff08;2&#xff09;- Vue的生命周期、Vue的工程化开发和脚手架、Vue项目目录介绍和运行流程 文章目录 Vue基础入门&#xff08;2&#xff09;- Vue的生命周期、Vue的工程化开发和脚手架、Vue项目目录介绍和运行流程5 生命周期5.1 Vue生命周期钩子5.2 在creat…

面向对象高级编程上

面向对象高级编程 一、面向对象高级编程上&#xff08;1&#xff09;C代码基本形式&#xff08;2&#xff09;Header中的防卫式声明&#xff08;3&#xff09;不带指针类的实现过程1. 防卫式声明2. 访问级别3.构造函数4.重载4.1 成员函数&#xff08;有this&#xff09;4.2 非成…

Igraph入门指南 1

Igraph入门指南 一、图的结构 图是顶点和边的集合&#xff0c;而边是通过顶点来描述。顶点和边&#xff0c;要用集合的理念去操作。 1、igraph中与图结构相关的函数 .igraph(), add_edges(), add_vertices(), complementer(),compose(), connect(), contract(), delete_ed…

自我对比: 通过不一致的解决视角更好地进行反思

一、写作动机&#xff1a; LLM 在自我评价时往往过于自信或随意性较大&#xff0c;提供的反馈固执或不一致&#xff0c;从而导致反思效果不佳。为了解决这个问题&#xff0c;作者提倡 "自我对比"&#xff1a; 它可以根据要求探索不同的解决角度&#xff0c;对比差异…

并发编程并发安全性之Lock锁及原理分析

ReentrantLock 用途:锁是用来解决线程安全问题的 重入锁-> 互斥锁 满足线程的互斥性意味着同一个时刻&#xff0c;只允许一个线程进入到加锁的代码中。多线程环境下&#xff0c;满足线程的顺序访问 锁的设计猜想 一定会涉及到锁的抢占&#xff0c;需要有一个标记来实现互…