【C语言的完结】:最后的测试题

看到这句话的时候证明:    此刻你我都在努力~

                               

个人主页:  Gu Gu Study                                             ​

专栏:语言的起点-----C语言

喜欢的一句话: 常常会回顾努力的自己,所以要为自己的努力留下足迹。

如果喜欢能否点个赞支持一下,谢谢啦!

                                                                                                                作者:小闭

目录

一、对无符号数的理解

二、从第一字符串中删除第二个字符串中所有的字符

三、给整数加上”,“


 

一、对无符号数的理解

#include<stdio.h>
int main() 
{unsigned char i = 7;int j = 0;for (; i > 0; i -= 3) {++j;}printf("%d\n", j);return 0;
}

 如上题目,大家伙觉得输出的答案是多少呢?

这道题只要考察的就是我们对C语言无符号数的理解了。那么下面我们一边讲解这道题目,一边来讲一下有关的知识点。


1.1 unsigned char的最小值和最大值

首先,我们审题 i是无符号数即(unsigned char),那么它的范围就是0-255,可能有些初学的小伙伴就会问为什么范围是0-255,这就要关联起char类型的8个比特位,因为unsigned char 无符号也就不需要用最高位来做符号位,那么这时unsigned char 就可以用上8个比特位来进行储存数据当8个比特位全为0时,为最小即0为最小值,当8个比特位全为1时,为最大值即2^8-1=255


1.2 无符号数的循环

无符号数和很多数都是一样的道理,在自己的范围内一直循环,当到了最大值在加1就会变成最小值,当自己最小值时在减就会变成最大值。就以unsigned char做个例子运行给大家看吧。

int main()
{unsigned char a = 0;unsigned char b = 255;a = a - 1;b = b + 1;printf("a=%u",a);printf("b=%u",b);return 0;
}

看运行结果,确实如我上面所说。


1.3 开始解题


int main() 
{unsigned char i = 7;int j = 0;for (; i > 0; i -= 3) {++j;}printf("%d\n", j);return 0;
}

再看一遍题目。 

这里我们需要判断for循环的结束条件为 i<=0,但由于此时代的 i 为unsigned char类型,那么只有i==0;时for循环才会结束。这时我们只需要知道i-=3多少次到0,才能得出j的值为多少。

因为i每次循环-=3,那么当for 循环经过3次后,i就变成了254,则254/3=84,余数为2再-=3一次,得到255,255/3=85,所以总的次数为3+84+1+85=173。所以此时 j,++了173次,故打印出来的结果为173.


二、从第一字符串中删除第二个字符串中所有的字符

输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。 例如:第一个字符串是"They are students.",第二个字符串是”aeiou"。删除之后的第一个字符串变成"Thy r stdnts."。 保证两个字符串的长度均不超过100。 输入描述:输入两行,每行一个字符串。 输出描述:输出删除后的字符串。

2.1 带空格的字符串的获取

一经审题我们发现,这道题要获取两个字符串,相信有的小伙伴可能回想用scanf来进行获取,但是我们要知道,scanf获取字符串,如果遇到空格是会直接结束读取的,故在这道题上是不能用scanf来进行读取的,这里我们就需要用到gets这个函数,这个函数是专门读取字符串的函数。不需要担心我们上面所说的空格问题。下面给大家演示一下。

2.2 scanf的读取:

int main()
{char a[20];scanf("%s", a);printf("scanf: %s\n", a);return 0;
}

2.3 gets的读取: 

int main()
{char a[20];gets(a);printf("gets: %s\n", a);return 0;
}

2.4 开始解题

先给参考答案再解析:


#include <stdio.h>
int main() {char a[100], b[100];int i = 0, j = 0;gets(a);gets(b);while (b[j]){        for (i = 0; a[i]; i++){if (b[j] == a[i]){a[i] = -1;}}j++;}for (i = 0; a[i]; i++){while(a[i]==-1){i++;}if (!a[i]){break;}printf("%c", a[i]);}return 0;
}

通过审题我们知道,两个字符串的最大长度不超过100,那么我这里直接创建两个char [100]的数组 然后用gets依次读取字符串,然后在用两个循环,将第一个字符串中再第二个字符串出现的字符全部改为-1(其它整数也行),然后我们再打印的时候直接跳过数组元素为-1的元素即可。可能有小伙伴会疑惑,万一我输入的字符串也有-1呢?其实这是不矛盾的,这里的-1是整形,当我们输入成字符串时就会变成‘-’,‘1’,两个字符放到数组里的。所以这里我们把将第一个字符串中再第二个字符串出现的字符全部改为-1或其它整数是不冲突的。以上就是这道题的解题思路了 。


三、给整数加上”,“

对于一个较大的整数 N(1<=N<=2,000,000,000) 比如 980364535,我们常常需要一位一位数这个数字是几位数,但是如果在这 个数字每三位加一个逗号,它会变得更加易于朗读。 因此,这个数字加上逗号成如下的模样:980,364,535请写一个程序帮她完成这件事情

3.1 直接审题解答

还是老样子先给答案再进行解析:

#include <stdio.h>
int main() {int a, b;int i = 0,count=0;char arr[14] = {0};scanf("%d", &a);while (a){if (count == 3){arr[i++] = ',';count = 0;}else{b = a % 10;a /= 10;arr[i] = b + '0';if (a == 0)break;i++;count++;}}for (int j = i; j >= 0; j--){printf("%c", arr[j]);}return 0;
}

 首先我们知道这里最大的数算上”,“也就13位,但是字符串末尾会有个’\0‘,所以我们创建一个长度为14的数组arr,然后我们采用我们模10,除10的组合技(%10,/10),不断从右到左放到数组里,然后创建一个count来进行计数,每储存3个数就再往后一个元素储存一个”,“,这样等到循环结束我们就可以得到一个数组,但是这个数组的数是倒过来的,我们只需打印的时候,将数组反过来打印即可。


好了今天的文章就结束了。好了这篇文章就到此结束了。点个赞我们下次再见。  

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PZK via OWF

参考文献&#xff1a; [SMP88] Santis A, Micali S, Persiano G. Non-Interactive Zero-Knowledge with Preprocessing[C]//Advances in Cryptology—CRYPTO’88.[LS90] Lapidot D, Shamir A. Publicly verifiable non-interactive zero-knowledge proofs[C]//Advances in Cry…

解决WordPress无法强制转换https问题

原因&#xff1a;我在用cs的时候&#xff0c;突然老鸟校园网突然断了&#xff0c;客户端cs连不上了&#xff0c;进程也杀不死&#xff0c;cpu占用100%&#xff0c;只能重启&#xff0c;但是重启后我的blog网站打不开了 开始以为是Nginx的问题&#xff0c;重启它说配置出了问题…

python学习笔记B-14:序列结构之元组--元组的访问与遍历

下面是几种元组的方位与遍历方法&#xff1a; t ("hello","python","world") print("原元组",t) print("t[1]",t[1]) print("t[0:3:2]",t[0:3:2]) #切片操作&#xff0c;从索引值0到索引值为2&#xff0c;步长为…

利用大语言模型(KIMI)构建智能产品的控制信息模型

数字化的核心是数字化建模&#xff0c;为一个事物构建数字模型是一项十分复杂的工作。不同的应用场景&#xff0c;对事物的关注重点的不同的。例如&#xff0c;对于一个智能传感器而言&#xff0c;从商业的角度看&#xff0c;产品的信息模型中应该包括产品的类型&#xff0c;名…

修改Ubuntu远程登录欢迎提示信息

无论何时登录公司的某些生产系统&#xff0c;你都会看到一些登录消息、警告或关于你已登录服务器的信息&#xff0c;如下所示。 修改方式 1.打开ubuntu终端,进入到/etc/update-motd.d目录下面 可以发现目录中的文件都是shell脚本, 用户登录时服务器会自动加载这个目录中的文件…

ThreeJS:坐标辅助器与轨道控制器

ThreeJS与右手坐标系 使用ThreeJS创建3D场景时&#xff0c;需要使用一个坐标系来定位和控制对象的位置和方向。 ThreeJS使用的坐标系是右手坐标系&#xff0c;即&#xff1a;X轴向右、Y轴向上、Z轴向前&#xff0c;如下图所示&#xff0c; ThreeJS-右手坐标系 Tips&#xff1a;…

【C++】命名冲突了怎么办?命名空间来解决你的烦恼!!!C++不同于C的命名方式——带你认识C++的命名空间

命名空间 导读一、什么是C?二、C的发展三、命名空间3.1 C语言中的重名冲突3.2 什么是命名空间&#xff1f;3.3 命名空间的定义3.4 命名空间的使用环境3.5 ::——作用域限定符3.6 命名空间的使用方法3.6.1 通过作用域限定符来指定作用域3.6.2 通过关键字using和关键字namespace…

云服务器+ASF实现全天挂卡挂时长

目录 前言正文1.安装下载2.编辑配置文件3.设置Steam社区证书4.启动ASF5.给游戏挂时长6.进阶-ASF自动启动且后台保活 前言 我遇到的最大的问题是&#xff0c;网络问题 其实不然&#xff0c;各大厂商的云服务器后台都有流量监控&#xff0c;意味着依靠一般方法是不能正常访问St…

变量内存和存储单位

基本数据类型及其占位符 存储单位 内存中的数据存储单元是由一个一个的二进制组成的&#xff0c;每个二进制只能存储0 和1 科学家为了更加方便存储更多的数据&#xff0c;把内存中8个二进制分为一组&#xff0c;叫做一个字节&#xff0c;Byte字节是最小的存储单位。(重点⭐⭐⭐…

聚焦Spring后置处理器分析对比

目录 一、理解Spring后置处理器 二、Spring后置处理器在IOC容器和bean对象生命周期的切入时机分析 &#xff08;一&#xff09;IOC 容器生命周期中的切入时机 &#xff08;二&#xff09;Bean 对象生命周期中的切入时机 三、BeanPostProcessor后置器分析 &#xff08;一&…

OpenCV(三)—— 车牌筛选

本篇文章要介绍如何对从候选车牌中选出最终进行字符识别的车牌。 无论是通过 Sobel 还是 HSV 计算出的候选车牌都可能不止一个&#xff0c;需要对它们进行评分&#xff0c;选出最终要进行识别的车牌。这个过程中会用到两个理论知识&#xff1a;支持向量机和 HOG 特征。 1、支…

Redis__事务

文章目录 &#x1f60a; 作者&#xff1a;Lion J &#x1f496; 主页&#xff1a; https://blog.csdn.net/weixin_69252724 &#x1f389; 主题&#xff1a;Redis__事务 ⏱️ 创作时间&#xff1a;2024年05月02日 ———————————————— 这里写目录标题 文章目…

SSM+Vue在线OA办公系统

在线办公分三个用户登录&#xff0c;管理员&#xff0c;经理&#xff0c;员工。 SSM架构&#xff0c;maven管理工具&#xff0c;数据库Mysql&#xff0c;系统有文档&#xff0c;可有偿安装调试及讲解&#xff0c;项目保证质量。需要划到 最底 下可以联系到我。 功能如下&am…

蓝桥杯练习系统(算法训练)ALGO-950 逆序数奇偶

资源限制 内存限制&#xff1a;256.0MB C/C时间限制&#xff1a;1.0s Java时间限制&#xff1a;3.0s Python时间限制&#xff1a;5.0s 问题描述 老虎moreD是一个勤于思考的青年&#xff0c;线性代数行列式时&#xff0c;其定义中提到了逆序数这一概念。不过众所周知我们…

nginx--location详细使用和账户认证

在没有使用正则表达式的时候&#xff0c;nginx会先在server中的多个location选取匹配度最高的一个uri&#xff0c;uri是用户请求的字符串&#xff0c;即域名后面的web文件路径&#xff0c;然后使用该location模块中的正则url和字符串串&#xff0c;如果匹配成功就结束搜索&…

C语言----贪吃蛇(补充)

各位看官好&#xff0c;我想大家应该已经看过鄙人的上一篇博客贪吃蛇了吧。鄙人在上一篇博客中只是着重的写了贪吃蛇的实现代码&#xff0c;但是前期的一些知识还没有具体的介绍&#xff0c;比如确认光标位置&#xff0c;句柄等。那么我这一篇博客就来补充上一篇博客所留下来的…

神经网络中的优化方法

一、引入 在传统的梯度下降优化算法中&#xff0c;如果碰到平缓区域&#xff0c;梯度值较小&#xff0c;参数优化变慢 &#xff0c;遇到鞍点&#xff08;是指在某些方向上梯度为零而在其他方向上梯度非零的点。&#xff09;&#xff0c;梯度为 0&#xff0c;参数无法优化&…

数据结构-AVL树

目录 什么是 AVL 树 ASL 度量查找效率 结构体定义 平衡调整 调整类型 左旋和右旋 右旋 左旋 左、右平衡调整 左平衡调整 右平衡调整 插入数据 模拟建立 AVL 树 什么是 AVL 树 二叉排序树的形状取决于数据集&#xff0c;当二叉树的高度越小、结构越合理&#xff0c…

thinkphp家政上门预约服务小程序家政保洁师傅上门服务小程序上门服务在线派单安装教程

介绍 thinkphp家政上门预约服务小程序家政保洁师傅上门服务小程序上门服务在线派单安装教程 上门预约服务派单小程序家政小程序同城预约开源代码独立版安装教程 程序完整&#xff0c;经过安装检测&#xff0c;可放心下载安装。 适合本地的一款上门预约服务小程序&#xff0…

计算机网络——初识网络

一、局域网与广域网 1.局域网&#xff08;LAN&#xff09; 局域网&#xff1a;即Local Area Network&#xff0c;简称LAN。Local即标识了局域⽹是本地&#xff0c;局部组建的⼀种私有⽹络。局域⽹内的主机之间能⽅便的进⾏⽹络通信&#xff0c;⼜称为内⽹&#xff1b;局域⽹和…