拒绝摆烂!C语言练习打卡第四天

 

🔥博客主页:小王又困了

📚系列专栏:每日一练

🌟人之为学,不日近则日退 

❤️感谢大家点赞👍收藏⭐评论✍️


目录

一、选择题

📝1.第一题 

📝2.第二题

📝3.第三题

二、编程题

📝1.第一题 

📝2.第二题


🗒️前言:

在前面我们学习完C语言的所以知识,当然练习巩固也不能落下。俗话说:“无财之谓贫,学而不能行之谓病。”可见实践对我们学习的重要。接下来就让小王带着大家进行练习,巩固我们C语言的学习。

一、选择题

📝1.第一题 

下列程序的输出结果是什么( )

int main()
{
    int n = 1001;
    int ans = 0;
    for(int i = 1; i <= n; ++i)
    {
        ans ^= i % 3;
    }
    printf("%d",ans);
    return 0;
}

 💡解题思路:

这道题考查了我们对异或操作符的理解,异或的计算规则是:两个数对应的二进制位相同为0,相异为1。还有特殊的规律:两个相同的数异或为0;任何数与0异或还是这个数。

使用for循环遍历从1到n的所有整数。在每次迭代中,都会计算当前整数 i 对3取余的结果,然后将这个结果与 ans 进行异或操作。对 i 取余的结果有1,2,0循环1001次,这三个数出现333次,多出1,2。偶数对异或的结果就是0,最后剩下 1^2^0^1^2 ,最后的结果为0。

📝2.第二题

下面代码的结果是()

#include <stdio.h>

int i;

int main()
{
	i--;
	if (i > sizeof(i))
	{
		printf(">\n");
	}
	else
	{
		printf("<\n");
	}
	return 0;
}

 💡解题思路:

在C语言中,0为假,非0为真。全局变量没有给初始值时,编译器会默认将其初始化为0。

i 的初始值为0,i-- 的结果为-1,i 为整型,sizeof(i)求 i 类型的大小为4,按这样的分析来看,结果应该打印 ‘<’ ,但是sizeof的返回值的类型为无符号整型,因此编译器会自动将左侧的 i 自动转化为无符号整型的数据,-1的二进制序列的补码全为1,对应的无符号整型是非常大的数,超过4或8,所以结果应该打印 ‘>’。

📝3.第三题

下面代码的结果是()

int main()
{
	int a, b, c;
	a = 5;
	c = ++a;
	b = ++c, c++, ++a, a++;
	b += a++ + c;
	printf("a=%d b=%d c=%d\n", a, b, c);
	return 0;
}

 💡解题思路:

我们想要解决这道题要了解几个知识点:

  • ++i 与 i++ 的区别:一个是先加在使用,一个是先使用在加
  • 逗号运算符的作用:含有逗号运算符的表达式,它的值为最后一个表达式的值
  • 运算符的优先级:1.++,+的优先级比+=高                                                                                                     2.逗号运算符的优先级比赋值运算符的优先级低                                                                 3.多个+号在一起,其优先级为后置++,+,前置++,例如:a+++c,                               可拆分为(a++)+c

了解这些我们就可以开始做题啦。我们一步一步执行代码:

二、编程题

📝1.第一题 

 💡解题思路:

我们直接遍历范围内的整数,分别判断每个整数是否是自除数。在判断自除数时,要得到整数的每一位,每次对整数 %10 就可以得到整数的最后一位,然后除以10。重复该操作,依次得到整数每一位,当整数变成0就遍历完一个整数。如果每一位都可以将整数整除,那么这个数就是自除数。这里要注意:得到的最后一位是0时,由于0不能做除数,一定不是自除数。

bool isSelfDividing(int num) 
{
    int temp = num;
    while (temp > 0) 
    {
        int digit = temp % 10;
        if (digit == 0 || num % digit != 0) 
        {
            return false;
        }
        temp /= 10;
    }
    return true;
}

int* selfDividingNumbers(int left, int right, int* returnSize) 
{
    int* arr = (int*)malloc(sizeof(int) * (right - left + 1));
    int pos = 0;
    for (int i = left; i <= right; i++) 
    {
        if (isSelfDividing(i)) 
        {
            arr[pos++] = i;
        }
    }
    *returnSize = pos;
    return arr;
}

📝2.第二题

💡解题思路:

我们可以使用异或的思想,将数组中的数和 1-n 的数依次异或一遍,得到的就是重复的数和丢失的数异或的结果。因为其他数都成对出现,异或的结果就为0。我们只要在通过排序,遍历数组找到重复的数,再将重复的数与刚刚的数异或,就可以得到丢失的数。

int cmp_int(const void* p1, const void* p2)
{
    return (*(int*)p1 - *(int*)p2);
}

int* findErrorNums(int* nums, int numsSize, int* returnSize)
{
    int* newarr = (int*)malloc(sizeof(int*) * 2);
    int i = 0;
    int num = 0;
    
    for (i = 0; i < numsSize; i++)
    {
        num ^= nums[i];
    }
    for (i = 1; i <= numsSize; i++)
    {
        num ^= i;
        //会得到重复的数和丢失的数异或的结果
    }
    //排序
    qsort(nums, numsSize, sizeof(int), cmp_int);
    for (i = 0; i < numsSize - 1; i++)
    {
        //找重复的数
        if (nums[i] == nums[i + 1])
        {
            break;
        }
    }
    //得到丢失的数
    num ^= nums[i];

    newarr[0] = nums[i];
    newarr[1] = num;
    *returnSize = 2;
    return newarr;
}

本次的内容到这里就结束啦。希望大家阅读完可以有所收获,同时也感谢各位读者三连支持。文章有问题可以在评论区留言,博主一定认真认真修改,以后写出更好的文章。你们的支持就是博主最大的动力。

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

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

相关文章

要跟静音开关说再见了!iPhone15新变革,Action按钮引领方向

有很多传言称iPhone 15 Pro会有很多变化&#xff0c;但其中一个变化可能意味着iPhone体验从第一天起就有的一项功能的终结。我说的是静音开关&#xff0c;它可以让你轻松地打开或关闭iPhone的铃声。 根据越来越多的传言&#xff0c;iPhone 15 Pro和iPhone 15 Pro Max将拆除静音…

FPGA:RS编码仿真过程

FPGA&#xff1a;RS编码仿真过程 RS码是一种纠错性能很强的线性纠错码&#xff0c;能够纠正随机错误和突发错误。RS码是一种多进制BCH码&#xff0c;能够同时纠正多个码元错误。 之前已经记录了在MATLAB中进行rs编解码的过程&#xff0c;现在利用FPGA的IP核实现RS编码的过程&…

vue项目预览pdf功能(解决动态文字无法显示的问题)

最近&#xff0c;因为公司项目需要预览pdf的功能&#xff0c;开始的时候找了市面上的一些pdf插件&#xff0c;都能用&#xff0c;但是&#xff0c;后面因为pdf变成了需要根据内容进行变化的&#xff0c;然后&#xff0c;就出现了需要动态生成的文字不显示了。换了好多好多的插件…

步步向前,曙光已现:百度的大模型之路

大模型&#xff0c;是今年全球科技界最火热&#xff0c;最耀眼的关键词。在几个月的狂飙突进中&#xff0c;全球主要科技公司纷纷加入了大模型领域。中国AI产业更是开启了被戏称为“百模大战”的盛况。 但喧嚣与热闹之后&#xff0c;新的问题也随之而来&#xff1a;大模型的力量…

算法通关村第十关 | 快速排序

1.快速排序的基本过程 快速排序是分治法运用到排序问题的典型例子&#xff0c;基本思想是&#xff1a;通过一个标记pivot元素将n个元素的序列划分为左右两个子序列left和right&#xff0c;其中left中的元素都比pivot小&#xff0c;right的都比pivot的大&#xff0c;然后再次对l…

前端打开后端返回的HTML格式的数据

前端打开后端返回的 HTML格式 的数据&#xff1a; 后端返回的数据格式如下示例&#xff1a; 前端通过 js 方式处理&#xff08;核心代码如下&#xff09; console.log(回调, path); // path 是后端返回的 HTML 格式数据// 必须要存进localstorage&#xff0c;否则会报错&am…

STM32 CubeMX (第四步Freertos内存管理和CPU使用率)

STM32 CubeMX STM32 CubeMX &#xff08;第四步Freertos内存管理和CPU使用率&#xff09; STM32 CubeMX一、STM32 CubeMX设置时钟配置HAL时基选择TIM1&#xff08;不要选择滴答定时器&#xff1b;滴答定时器留给OS系统做时基&#xff09;使用STM32 CubeMX 库&#xff0c;配置Fr…

面试官:JVM是如何判定对象已死的?学JVM必会的知识!

本文已收录至GitHub&#xff0c;推荐阅读 &#x1f449; Java随想录 文章目录 引用计数算法可达性分析算法引用类型Dead Or Alive永久代真的"永久"吗&#xff1f;垃圾收集算法标记-清除算法标记-复制算法标记-整理算法标记-清除 VS 标记-整理 作为一名Java程序员&…

Unity 变量修饰符 之protected ,internal,const , readonly, static

文章目录 protectedinternalconstreadonlystatic protected 当在Unity中使用C#编程时&#xff0c;protected是一种访问修饰符&#xff0c;用于控制类成员&#xff08;字段、方法、属性等&#xff09;的可见性和访问权限。protected修饰的成员可以在当前类内部、派生类&#xf…

Windows上使用FFmpeg实现本地视频推送模拟海康协议rtsp视频流

场景 Nginx搭建RTMP服务器FFmpeg实现海康威视摄像头预览&#xff1a; Nginx搭建RTMP服务器FFmpeg实现海康威视摄像头预览_nginx rtmp 海康摄像头_霸道流氓气质的博客-CSDN博客 上面记录的是使用FFmpeg拉取海康协议摄像头的rtsp流并推流到流媒体服务器。 如果在其它业务场景…

嵌入式设计中对于只有两种状态的变量存储设计,如何高效的对循迹小车进行偏差量化

前言 &#xff08;1&#xff09;在嵌入式程序设计中&#xff0c;我们常常会要对各类传感器进行数据存储。大多时候的传感器&#xff0c;例如红外光传感器&#xff0c;返回的数据要么是0&#xff0c;要么是1。因此&#xff0c;只需要一bit就能够存储。而很多人却常常使用char型数…

SkyEye操作指南:连接TI CCS的IDE调试

现代电力电子控制系统的开发中&#xff0c;DSP芯片以其优越的运算性能在控制算法领域得到越来越广泛的应用。传统的DSP开发过程往往需要在完成控制系统仿真与程序设计后&#xff0c;才能根据比对结果进行程序修改&#xff0c;全过程还需要硬件电路工程师的配合&#xff0c;开发…

ES的索引结构与算法解析

提到ES&#xff0c;大多数爱好者想到的都是搜索引擎&#xff0c;但是明确一点&#xff0c;ES不等同于搜索引擎。不管是谷歌、百度、必应、搜狗为代表的自然语言处理(NLP)、爬虫、网页处理、大数据处理的全文搜索引擎&#xff0c;还是有明确搜索目的的搜索行为&#xff0c;如各大…

Git判断本地是否最新

场景需求 需要判断是否有新内容更新,确定有更新之后执行pull操作&#xff0c;然后pull成功之后再将新内容进行复制到其他地方 pgit log -1 --prettyformat:"%H" HEAD -- . "origin/HEAD" rgit rev-parse origin/HEAD if [[ $p $r ]];thenecho "Is La…

【Android】设置-显示-屏保-启用时机-默认选中“一律不“

设置-屏保-启用时机-默认选中"一律不" 解决步骤&#xff08;1&#xff09;理清思路&#xff08;2&#xff09;过程&#xff08;3&#xff09;效果图 解决步骤 &#xff08;1&#xff09;理清思路 操作步骤&#xff1a; 首先手机进入设置—》点进显示选项—》进入后…

D. Anton and School - 2

范德蒙德恒等式 考虑统计每一个右括号位置的贡献&#xff0c;也就是每个右括号作为右边起点的贡献 其中i0的时候&#xff0c;r-1<r-0,故i0时贡献为0&#xff0c;直接套用恒等式不会有影响 #include <bits/stdc.h> using namespace std; typedef long long int ll; # d…

分布式锁实现方式

分布式锁 1 分布式锁介绍 1.1 什么是分布式 一个大型的系统往往被分为几个子系统来做&#xff0c;一个子系统可以部署在一台机器的多个 JVM(java虚拟机) 上&#xff0c;也可以部署在多台机器上。但是每一个系统不是独立的&#xff0c;不是完全独立的。需要相互通信&#xff…

【数据结构OJ题】有效的括号

原题链接&#xff1a;https://leetcode.cn/problems/valid-parentheses/ 目录 1. 题目描述 2. 思路分析 3. 代码实现 1. 题目描述 2. 思路分析 这道题目主要考查了栈的特性&#xff1a; 题目的意思主要是要做到3点匹配&#xff1a;类型、顺序、数量。 题目给的例子是比较…

神经网络基础-神经网络补充概念-02-逻辑回归

概念 逻辑回归是一种用于二分分类问题的统计学习方法&#xff0c;尽管名字中带有"回归"一词&#xff0c;但实际上它用于分类任务。逻辑回归的目标是根据输入特征来预测数据点属于某个类别的概率&#xff0c;然后将概率映射到一个离散的类别标签。 逻辑回归模型的核…

Django实现音乐网站 ⑾

使用Python Django框架制作一个音乐网站&#xff0c; 本篇主要是前端开发前的一些必要配置和首页展示开发。 目录 配置应用路由 创建应用路由文件 应用路径加入项目路径 创建项目模板 创建项目及应用模板路径 设置模板路径 设置静态资源路径 创建静态资源路径 配置静态…