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

news2025/1/17 5:53:51

🔥博客主页:小王又困了

📚系列专栏:每日一练

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

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


目录

 一、选择题

📝1.第一题

📝2.第二题

📝3.第三题

二、编程题

📝1.第一题

📒方法一:

📒方法二:

📝2.第二题


🗒️前言:

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

 一、选择题

📝1.第一题

以下哪个选项一定可以将flag的第二个bit置0()

A. flag&=~2

B. flag|=2

C. flag^=2

D. flag>>=2

💡解题思路:

我们要将某一位置为0,只需要在这一位按位与一个0,其他位都为1即可。

  • &  --  对应的二进制位有0则为0,都为1才为1

假设 flag 有8个比特位,那么只要按位与11111101,就可以将第二个比特位置为0。想得到11111101只需将00000010按位取反即可,也就是A选项。

📝2.第二题

执行下面程序,正确的输出是( )

int x = 5, y = 7;
void swap()
{
    int z;
    z = x;
    x = y;
    y = z;
}
int main()
{
    int x = 3, y = 8;
    swap();
    printf("%d,%d\n",x, y);
    return 0;
}

💡解题思路:

通过观察代码我们看到在程序中定义了变量名相同的全局变量和局部变量,当同名时,局部变量优先使用。在 main 函数中有一个交换函数,但没有传递参数,所以它无法交换局部变量 x,y。全局变量的作用域是整个程序的生命周期,所以这里交换的是全局变量 x,y的值。在打印时,局部变量要优先使用,所以打印出的结果是3,8。

📝3.第三题

下面函数的输出结果是()

void func()
{
    int k = 1^(1 << 31 >> 31);
    printf("%d\n", k);
}

💡解题思路:

通过观察代码,第一步是将1向左移动31位,然后将结果向右移动31位,最后将得到的结果 ^ 1就得到k。移位操作符的规则:

  •  <<  --  左移

        左边丢弃,右边补0

  • >>  --  右移

        1.算术右移:右边丢弃,左边补原来的符号位

        2.逻辑右移:右边丢弃,左边直接补0

本题的右移是算数右移。

二、编程题

📝1.第一题

📒方法一:

💡解题思路:

我们可以将数字按照字符串的形式接收scanf("%s",str) ,然后将数据倒着打印出来。

  • 倒着打印的方法:计算出字符串的长度,从最后一个下标开始,依次向前打印
#include <stdio.h>
#include <string.h>
int main()
{
    char str[32] = { 0 };
    while (scanf("%s", str) != EOF)
    {
        int len = strlen(str);
        int i = 0;
        for (i = len-1; i >= 0; i--)
        {
            printf("%c", str[i]);
        }
        printf("\n");
    }
    return 0;
}

📒方法二:

💡解题思路:

我们就按照数字输入,每次通过 ‘%10’ 得到最后一位,由于题目要求要按照字符的形式打印,所以在打印时要加 ‘0’ 然后输出。这里要考虑输入的值为0时,直接打印‘0’。

int main()
{
    int n = 0;
    while (scanf("%d", &n) != EOF)
    {
        if (n == 0)
        {
            printf("%c", '0');
        }
        while (n)
        {
            printf("%c", n % 10 + '0');
            n /= 10;
        }
        printf("\n");
    }
    return 0;
}

📝2.第二题

💡解题思路:

因为题目将数组边界看成最小值,而我们只需要找到其中一个波峰,因此只要不断地往高处走,一定会有波峰。那我们可以每次找到中间元素,将数组分成两个区间,每次就较高的一边走。同时题目还要求时间复杂度为log(N)可以使用二分产找确定中间元素。

  • 先通过二分查找,找到中间元素
  • 如果中间元素大于右侧元素,说明右边是向下走,不一定会遇到波峰,所以我们在左侧继续寻找中间值
  • 如果中间元素小于右侧元素,说明右边是向上走,一定会遇到波峰,所以我们在又侧继续寻找中间值
  • 当首尾相遇时,这个点就是波峰

注意:由于只需要找一个波峰,所以我们找一侧对比就可以,这里是和右侧数据对比。

int findPeakElement(int* nums, int numsLen) 
{
    int left = 0;
    int right = numsLen - 1;

    while (left < right) 
    {
        int mid = (left + right) / 2;
        if (nums[mid] < nums[mid + 1]) 
        {
            left = mid + 1;
        }
        else 
        {
            right = mid;
        }
    }
    return right;
}

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

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

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

相关文章

【OFDM系列】DFT为什么能求频率幅度谱?DFT后的X[k]与x(n)幅度的关系?DFT/IDFT底层数学原理?

文章目录 问题引入铺垫一些小公式DFT公式证明DFT公式分解为4部分先考虑k10的情况:再考虑k1≠0的情况: DFT计算后&#xff0c;X(k)与x(n)的关系&#xff1a; Matlab FFT示例代码IDFT公式证明Matlab调用FFT/IFFT并绘图 问题引入 上面是DFT和IDFT的公式&#xff0c;IDFT先不谈。在…

使用原生小程序组件Picker自定义日期时间选择器

使用原生小程序组件Picker自定义日期时间选择器 1、 Picker简单介绍 可以看到Picker类型有5种&#xff0c; 具体可以查看微信开放文档 picker。 Picker&#xff08;选择器&#xff09;是一种常见的用户界面控件&#xff0c;用于从多个选项中选择一个或多个选项。在小程序中&…

2023开学季买什么电容笔好?推荐好用不贵的电容笔

眼见开学季马上就要来了&#xff0c;那么该选哪款电容笔比较好呢&#xff1f;一款苹果原装pencil的售价&#xff0c;已经达到了近千元&#xff0c;这个价格&#xff0c;在许多人看来&#xff0c;实在是太高了。其实&#xff0c;因为平替电容笔价格很实惠&#xff0c;只需一两百…

flutter 中的动画详解 全网最全 动画一篇搞定 一万四千字

flutter 中的动画详解 全网最全 动画一篇搞定 前言一、 基础概念二、 隐式动画三、 显示动画四、 过渡五、 手势动画六、 复杂动画七、 自定义动画八、 物理动画九、 Flutter 动画库十、 动画性能和优化十一、 第三方动画库总结 前言 学习 Flutter 中的动画和过渡是构建流畅用户…

问道管理:2018年以来最低水平,A股质押风险大幅缓解

2018年A股质押巅峰期之后&#xff0c;金融监管“组合拳”继续发力&#xff0c;多地政府及金融安排活跃参加纾困&#xff0c;上市公司股票质押危险化解取得本质成效。A股上市公司现在质押股数量、质押市值、质押份额均降至2018年以来最低水平。 股权质押融资是出质人将股权作为质…

CentOS系统环境搭建(十四)——CentOS7.9安装elasticsearch-head

centos系统环境搭建专栏&#x1f517;点击跳转 关于node的安装请看上一篇CentOS系统环境搭建&#xff08;十三&#xff09;——CentOS7安装nvm&#xff0c;&#x1f517;点击跳转。 CentOS7.9安装elasticsearch-head 文章目录 CentOS7.9安装elasticsearch-head1.下载2.解压3.修…

0基础学习VR全景平台篇 第85篇:智慧眼-如何分配角色的权限?

一、功能说明 角色权限&#xff0c;是指给智慧眼的所有角色成员分配具体的操作权限。 二、后台编辑界面 1、点击“添加权限”&#xff0c;选择其可操作的“权限”。注意权限只能逐项选择&#xff0c;所以如果某个角色拥有多项权限的话&#xff0c;那么需要进行多次添加。“快…

Threejs学习02——使用dat.gui实现主动控制立方体相关操作

使用dat.gui实现主动控制立方体相关操作 这是一个非常简单基础的threejs的学习应用&#xff01;在上一章学习threesj中我们实现立方体在坐标轴中来回移动&#xff0c;那都是通过我们的代码写死的效果&#xff0c;然后立方体的颜色都是通过代码写死的&#xff0c;这一章我们来给…

从零开始学习 Java:简单易懂的入门指南之MAth、System(十二)

常见API&#xff0c;MAth、System 1 Math类1.1 概述1.2 常见方法1.3 算法小题(质数)1.4 算法小题(自幂数) 2 System类2.1 概述2.2 常见方法 1 Math类 1.1 概述 tips&#xff1a;了解内容 查看API文档&#xff0c;我们可以看到API文档中关于Math类的定义如下&#xff1a; Math类…

大数据大数据架构发展史

1.背景 随着数据量的暴增和数据实时性要求越来越高&#xff0c;以及大数据技术的发展驱动企业不断升级迭代&#xff0c;传统数仓经历了以下发展过程&#xff1a;传统数仓架构 -> 离线大数据架构 -> Lambda架构 -> Kappa架构 -> 新一代实时数仓。&#xff08;大部分…

Vitis高层次综合学习——FPGA

高层次综合 什么是高层次综合&#xff1f;就是使用高级语言&#xff08;如C/C&#xff09;来编写FPGA算法程序。 在高层次综合上并不需要制定微架构决策&#xff0c;如创建状态机、数据路径、寄存器流水线等。这些细节可以留给 HLS 工具&#xff0c;通过提供输入约束&#xff…

ATX

导航 (返回顶部) 1. ATX (Advanced Technology Extended)2. 主板3. 电源 3.1 主要版本简表3.2 更换电源需要考虑的问题3.3 电源效率3.4 80 Plus 4. 退役的电源 4.1 24pin主供电接口4.2 12v的CPU供电接口4.3 12v的PCI-E供电接口4.4 SATA电源接口4.5 D型大4pin接口 1. ATX (Adv…

Android Studio Giraffe控制台乱码

这几天在使用Android Studio Giraffe进行一个App的开发&#xff0c;在项目构建的时候&#xff0c;控制台输出中文都是乱码&#xff0c;看着很不爽&#xff0c;进行了两项配置&#xff0c;中文就可以正常输出了&#xff0c;看起来就爽多了。 第一个配置&#xff1a;点击Help菜单…

冠达管理:A股利好!国家队最新出手!拜登紧急发声

号称“国家队”的大基金二期最新出手。 8月15日晚间&#xff0c;华润微公告&#xff0c;子公司润鹏半导体拟增资扩股并引进大基金二期等外部出资者&#xff0c;本次买卖完成后&#xff0c;润鹏半导体注册资本将由24亿元添加至150亿元。其间&#xff0c;大基金二期持股份额将达2…

uni-app根据经纬度逆解析详细地址

uni-app中的getLocation()方法可以获取到用户当前的地理位置&#xff08;经纬度&#xff09;、速度。 但是返回参数中的address在app中才会显示&#xff0c;小程序中不会显示&#xff0c;所以我们需要进行逆解析其地址&#xff0c;解析出它的地址信息。 1.首先要在腾讯位置服务…

解决多模块内核心模块有接口打包成jar后被依赖并调用遇到的问题(springcloud集成ruoyi.quartz)

项目准备开发个新功能&#xff0c;刚好很喜欢ruoyi写的任务调度&#xff0c;因此想到了集成ruoyi.quartz模块 &#xff0c;遇到了很多问题: 首先因为ruoyi.quartz模块依赖了ruoyi.common模块&#xff0c;因此第一步我需要把common模块一部分依赖项复制到了quartz模块内&#xf…

查看端口号被应用程序占用

打开资源监视器 找到被占用的端口&#xff0c;记住她的PID 打开任务管理器 把占用端口的程序关掉

SAP LTMC 批导创建物料

LTMC这个事务代码是HANA 版本的LSMW。其实就是一个批导工具 我们来用LTMC 来做一下物料的期初批导 1.首先在GUI中输入T-CODE &#xff1a; LTMC 2.输入你的账号密码和客户端之后会进入这个界面 3.点击CREATE 4.在下图框中的位置选择我们要进行的任务 5.download template 6.…

第六章:用FATE从零实现纵向线性回归

第六章 用FATE从零实现纵向线性回归 6.1 数据集的获取与描述6.2纵向数据集切分6.3 纵向联邦训练6.3.1 数据输入6.3.2 样本对齐6.3.3 模型训练 6.4 模型评估 代码 本章利用FATE从零开始实现一个简单的纵向线性回归模型&#xff0c;本章以实验为主。 与第5章一样&#xff0c;本章…

GEWE框架 ipad协议

GEWE框架 是一套完整的的第三方服务平台&#xff0c;包含微信API服务、企微API服务、SCRM系统定制、企微系统定制、服务类软件定制等模块&#xff0c;本文档主要讲述个微API服务相关&#xff0c;以下简称API&#xff0c;它能处理用户微信中的各种事件&#xff0c;提供了开发者…