C语言刷题训练【第十天】

news2024/11/23 19:21:15

大家好,我是纪宁。
今天是C语言刷题训练的第十天,加油!

文章目录

  • 🎆1、求函数返回值,传入 -1 ,则在64位机器上函数返回( )
  • 🎤2、读代码选结果( )
  • 🍉3、下述赋值语句错误的是( )
  • 🧆4、若有 int w=1, x=2, y=3, z=4; 则条件表达 w < x ? w : y < z ? y : z 的值是( )
  • 🐟5、以下程序运行后的输出结果是( )
  • 🤹‍♀️找到所有数组中消失的数字
  • 🎣不用加减乘除做加法

🎆1、求函数返回值,传入 -1 ,则在64位机器上函数返回( )

int func(int x)
{
	int count = 0;
	while (x)
	{
		count++;
		x = x & (x - 1);//与运算
	} r
		eturn count;
}

A: 死循环 B: 64 C: 32 D: 16

x=x&(x-1)这个表达式执行一次就会将x的2进制中最右边的1去掉,在x变成0之前,表达式能执行几次,就去掉几个1,所以这
个代码实现了求一个有符号整数二进制补码中1的个数的功能,我们知道-1的补码是全1,而int类型4个字节32位,选 C

在这里插入图片描述

🎤2、读代码选结果( )

int count = 0;
int x = -1;
while (x){
	count++;
	x = x >> 1;
}
printf("%d", count);

A: 1 B: 2 C: 32 D: 死循环,没结果

此题一个关键,有符号数右移运算高位是补符号位的,负数的符号位是1,补码为全1,所以x永远不会变为0,是个死循环,所以选 D

🍉3、下述赋值语句错误的是( )

A: a = (b = (c = 2 , d = 3)) B: i++ C: a/b = 2 D: a = a < a + 1
C选项中a/b是表达式,表达式计算的结果是一个值不能做左值,此题选C

🧆4、若有 int w=1, x=2, y=3, z=4; 则条件表达 w < x ? w : y < z ? y : z 的值是( )

A: 1 B: 2 C: 3 D: 4
w<x?w:(y<z?y:z)加个括号应该就好理解了w<x为真,返回w,即表达式的值为1,此题选A

🐟5、以下程序运行后的输出结果是( )

 int main() {
	int a = 1, b = 2, m = 0, n = 0, k;
	k = (n = b < a) && (m = a);
	printf("%d,%d\n", k, m);
	return 0;
}

A: 0,0 B: 0,1 C: 1,0 D: 1,1

k=(n=b<a)&&(m=a);这部分的执行顺序如下:先执行n=b<a部分,其中,关系运算符优先级高于赋值运算符,所以先算b<a,
得到0,n=0赋值运算的结果将作为括号内表达式的结果,即(n=b<a)&&(m=a)转换成(0)&&(m=a),&&运算前表达式为假,则
后面的括号==(m=a)不运算==,m值还是0,最后,&&的结果是0,即k=0,此题选A

🤹‍♀️找到所有数组中消失的数字

给你一个含 n 个整数的数组 nums ,其中 nums[i] 在区间 [1, n] 内。请你找出所有在 [1, n] 范围内但没有出现在 nums 中的数字,并以数组的形式返回结果。
在这里插入图片描述
numsSize 大小的数组,其中每个元素的数据在 [1, numsSize] 区间之内,解法其实并不复杂,以数组元素的绝对值作为下标,将对应位置的数据置为负数,比如 0 号位置是 3 ,则把 3 号位置的数据重置为负值,等到数组遍历重置完毕,只有缺失的这个数字对应的位置保留正数,其他出现过的数字位置都会是负数, 要注意不要重复设置负数,因为负负得正。

示例:

[2, 3, 3, 2, 4] 注意数组10个元素,值为[1~10],但是访问下标应该在[0-9]之内,因此修改位置下标应该是值减1
0号元素是2,则将1号位置置为对应负值 [2, -3, 3, 2, 4]
1号元素是3,则将2号位置置为对应负值 [2, -3, -3, 2, 4]
2号元素是-3,绝对值为3,将2号位置为负值,但是2号位已经重置过,不需要重置,否则会变正数[2, -3, -3, 2, 4]
3号元素是-2,绝对值为2,将1号位置为负值,但是1号位已经重置过,不需要重置,否则会变正数[2, -3, -3, 2, 4]
4号元素是4,则将3号位置置为对应负值 [2, -3, -3, -2, 4]
遍历数组得到0,4两个位置的数据是大于0的,因为从数值从1开始,因此+1后得到1, 5两个缺失的数字

int* findDisappearedNumbers(int* nums, int numsSize, int* returnSize){
    int i=0;
    for(i=0;i<numsSize;i++){
        if(nums[abs(nums[i])-1]>0)
        {
            nums[abs(nums[i])-1]=-nums[abs(nums[i])-1] ;
        }
    }
    int*nums2=(int*)malloc(sizeof(int)* numsSize);
    int j=0;
    for(i=0;i<numsSize;i++){
        if(nums[i]>0){
            nums2[j]=i+1;
            j++;
        }
    }
    *returnSize=j;
    return nums2;
}

在这里插入图片描述

🎣不用加减乘除做加法

写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
在这里插入图片描述
二进制相加思想:与十进制相同,先计算不考虑进位的相加结果( 0+0 得 0 , 1+1 进位得 0 , 1+0 得 1 ),使用异或可以取得; 然后计算相加的进位结果(同 1 的位置按位与后左移一位即可让它达到进位后的位置),直到进位的结果为0。

按位与(&):全部为1才为1
按位异或(^):相同为0,相异为1
使用异或可以算出没有进位的相加结果(1+1 进位得 0)
使用按位与再算出相加的进位结果,左移一位(去它应该去的位置)。

int Add(int num1, int num2 ) {
    while(num1)
    {
        int tmp=num1^num2;
        num1=(num1&num2)<<1;
        num2=tmp;
    }
    return num2;
}

在这里插入图片描述

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

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

相关文章

8.13树的总结(有新知识再更新)

二叉树题目几个重点&#xff1a; 1. 理解递归&#xff0c;优先掌握递归实现 递归三部曲&#xff1a;1.确定递归函数的参数和返回类型&#xff1b;2.确定终止条件 &#xff1b;3.确定递归逻辑 因为递归一层一层对我来说有点绕&#xff0c;主要感悟就是只针对某一个节点思考&…

Mac思维导图软件Xmind for Mac中文激活版

好的思维导图软件能帮助用户更好的发挥创作能力&#xff0c;XMind是一款流行的思维导图软件&#xff0c;可以帮助用户创建各种类型的思维导图和概念图。 多样化的导图类型&#xff1a;XMind提供了多种类型的导图&#xff0c;如鱼骨图、树形图、机构图等&#xff0c;可以满足不同…

计算机视觉中的特征检测和描述

一、说明 这篇文章是关于计算机视觉中特征检测和描述概念的简要理解。在其中&#xff0c;我们探讨了它们的定义、常用技术、简单的 python 实现和一些限制。 二、什么是特征检测和描述&#xff1f; 特征检测和描述是计算机视觉中的基本概念&#xff0c;在图像识别、对象跟踪和图…

Seaborn图表使用指南!

目录 介绍线图散点图直方图概率密度函数 &#xff08;PDF&#xff09;箱线图小提琴剧情配对图热图关节图地毯图 一、介绍 数据科学已成为一个突出的领域&#xff0c;近年来呈爆炸性增长。对精通从数据中获取见解并应用这些见解来解决现实世界问题的数据科学家的需求从未增加。…

centos 7.x 单用户模式

最近碰到 centos 7.9 一些参数设置错误无法启动系统的情况&#xff0c;研究后可以使用单用户模式进入系统进行恢复操作。 进入启动界面&#xff0c;按 e ro 替换为 rw init/sysroot/bin/sh 替换前 替换后 Ctrl-x 进行重启进入单用户模式 执行 chroot /sysroot 可以查看日…

数据库操作不再困难,MyBatis动态Sql标签解析

系列文章目录 MyBatis缓存原理 Mybatis的CachingExecutor与二级缓存 Mybatis plugin 的使用及原理 MyBatis四大组件Executor、StatementHandler、ParameterHandler、ResultSetHandler 详解 MyBatisSpringboot 启动到SQL执行全流程 数据库操作不再困难&#xff0c;MyBatis动态S…

一个软件测试面试相关的面试题目,你们会做吗?

有这样一个面试题&#xff1a;在一个Web测试页面上&#xff0c;有一个输入框&#xff0c;一个计数器&#xff08;count&#xff09;按钮&#xff0c;用于计算一个文本字符串中字母a出现的个数。请设计一系列测试用例用以测试这个Web页面。 <ignore_js_op> 有经验的测试人…

WS2812B RGB灯带使用

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; 本人持续分享更多关于电子通信专业内容以及嵌入式和单片机的知识&#xff0c;如果大家喜欢&#xff0c;别忘点个赞加个关注哦&#xff0c;让我们一起共同进步~ &#x…

嵌入式linux开发工具——vscode

目录 一、工具下载及安装 下载 安装 二、工具配置 在嵌入式开发中常用的工具就两个source和vscode&#xff0c;个有利弊。之前讲过source今天来讲一下vscode。 一、工具下载及安装 下载 https://code.visualstudio.com 选择需要的版本就行 x86是32位架构&#xff0c;x64…

笔记系统项目测试

一、测试用例 1.1功能测试 1.2性能测试 1.3界面测试 1.4兼容性测试 1.5易用性测试 1.6安全性测试 二、自动化测试 那就对上面的部分用例进行自动化测试 Selenium3 Junit5 2.1注册页面自动化测试 /*** 针对两次输入密码不一致进行验证* param username* param password* pa…

无涯教程-Perl - readline函数

描述 此函数从EXPR引用的文件句柄中读取一行,并返回输出。如果要直接使用FILEHANDLE,则必须将其作为typeglob传递。 Simply readline function is equvivalent to <>. 语法 以下是此函数的简单语法- readline EXPR返回值 此函数在标量context中仅返回一行,而在列表…

预测知识 | 机器学习预测模型局限性

预测知识 | 机器学习预测模型局限性 目录 预测知识 | 机器学习预测模型局限性问题描述未来发展参考资料 问题描述 数据基础设施&#xff1a;要构建模型&#xff0c;必须有数据&#xff0c;且有多来源的大数据。这一切都离不开数据基础设施的建设和发展。 错误数据输入&#xf…

「Web3大厂」价值70亿美元的核心竞争力

经过近 5 年的研发和酝酿&#xff0c;Linea 团队在 7 月的巴黎 ETHCC 大会期间宣布了主网 Alpha 的上线&#xff0c;引起了社区的广泛关注。截止 8 月 4 日&#xff0c;据 Dune 数据信息显示&#xff0c;其主网在一周内就涌入了 100 多个生态项目&#xff0c;跨入了超 2 万枚 E…

RabbitMQ基础(2)——发布订阅/fanout模式 topic模式 rabbitmq回调确认 延迟队列(死信)设计

目录 引出点对点(simple)Work queues 一对多发布订阅/fanout模式以登陆验证码为例pom文件导包application.yml文件rabbitmq的配置生产者生成验证码&#xff0c;发送给交换机消费者消费验证码 topic模式配置类增加配置生产者发送信息进行发送控制台查看 rabbitmq回调确认配置类验…

BGP的工作过程及报文

IGP核心:路由的计算。OSPF,ISIS等 BGP核心:路由的传递,不产生路由,只是路由的搬运工,一般用于规模特别大的网络中,只要TCP可达就可以建立邻居。 大型企业分支间采用BGP进行路由传递,不同的分支属于不同的BGP的AS,它们通过BGP进行路由交互。企业与运营商之间可使用BGP进行…

编写一个函数实现n的k次方,使用递归实现

在这个问题中&#xff0c;我们要考虑k的取值正负。 代码实现&#xff1a; #include <stdio.h> double Pow(int n, int k) {if (k > 0)return n * Pow(n, k - 1);else if (k 0)return 1;elsereturn 1.0 / Pow(n, -k); }int main() {int n 0;int k 0;scanf("%d…

期权定价模型系列【4】—期权组合的Delta-Gamma-Vega中性

期权组合的Delta-Gamma-Vega中性 期权组合构建时往往会进行delta中性对冲&#xff0c;在进行中性对冲后&#xff0c;期权组合的delta敞口为0&#xff0c;此时期权组合仍然存在gamma与vega敞口。因此研究期权组合的delta-gamma-vega敞口中性是有必要的。 本文旨在对delta-gamma-…

面向未来的颠覆性技术创新

本篇文章是博主在人工智能等领域学习时&#xff0c;用于个人学习、研究或者欣赏使用&#xff0c;并基于博主对人工智能等领域的一些理解而记录的学习摘录和笔记&#xff0c;若有不当和侵权之处&#xff0c;指出后将会立即改正&#xff0c;还望谅解。文章分类在学习摘录和笔记专…

Leetcode 剑指 Offer II 039. 直方图最大矩形面积

题目难度: 困难 原题链接 今天继续更新 Leetcode 的剑指 Offer&#xff08;专项突击版&#xff09;系列, 大家在公众号 算法精选 里回复 剑指offer2 就能看到该系列当前连载的所有文章了, 记得关注哦~ 题目描述 给定非负整数数组 heights &#xff0c;数组中的数字用来表示柱状…