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

这篇具有很好参考价值的文章主要介绍了拒绝摆烂!C语言练习打卡第二天。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

拒绝摆烂!C语言练习打卡第二天,每日一练,数据结构,链表,c++,算法,c语言

🔥博客主页:小王又困了

📚系列专栏:每日一练

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

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


目录

 一、选择题

📝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。

拒绝摆烂!C语言练习打卡第二天,每日一练,数据结构,链表,c++,算法,c语言

📝3.第三题

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

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

💡解题思路:

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

  •  <<  --  左移

        左边丢弃,右边补0

  • >>  --  右移

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

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

本题的右移是算数右移。

拒绝摆烂!C语言练习打卡第二天,每日一练,数据结构,链表,c++,算法,c语言

二、编程题

📝1.第一题

拒绝摆烂!C语言练习打卡第二天,每日一练,数据结构,链表,c++,算法,c语言

📒方法一:

💡解题思路:

我们可以将数字按照字符串的形式接收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.第二题

拒绝摆烂!C语言练习打卡第二天,每日一练,数据结构,链表,c++,算法,c语言💡解题思路:

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

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

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

拒绝摆烂!C语言练习打卡第二天,每日一练,数据结构,链表,c++,算法,c语言

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;
}

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

到了这里,关于拒绝摆烂!C语言练习打卡第二天的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

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

      🔥 博客主页: 小王又困了 📚 系列专栏: 每日一练 🌟 人之为学,不日近则日退  ❤️ 感谢大家点赞👍收藏⭐评论✍️ 🗒️前言: 在前面我们学习完C语言的所以知识,当然练习巩固也不能落下。俗话说:“ 无财之谓贫,学而不能行之谓病 。”可见实践对我们学习的

    2024年02月13日
    浏览(38)
  • 拒绝摆烂!C语言练习打卡第六天

    🔥 博客主页: 小王又困了 📚 系列专栏: 每日一练 🌟 人之为学,不日近则日退  ❤️ 感谢大家点赞👍收藏⭐评论✍️ 目录 一、选择题 📝1.第一题  📝2.第二题 📝3.第三题 📝4.第四题 二、编程题 📝1.第一题  📝2.第二题 🗒️前言: 在前面我们学习完C语言的所以知

    2024年02月11日
    浏览(28)
  • 每日打卡day8——差分练习

    输入一个长度为 n 的整数序列。 接下来输入 m 个操作,每个操作包含三个整数 l,r,c,表示将序列中 [l,r] 之间的每个数加上 c。 请你输出进行完所有操作后的序列。 输入格式 第一行包含两个整数 n 和 m。 第二行包含 n 个整数,表示整数序列。 接下来 m 行,每行包含

    2024年02月17日
    浏览(33)
  • 每日一练 | 华为认证真题练习Day54

    1、现有一台交换机通过一个端口和对端设备的指定端口直连,但是该端口不转发任何报文,却可以通过接收BPDU来监听网络变化,那么该端口的角色应该是()。 A. Root端口 B. Designated端口 C. Alternate端口 D. Disable端口 2、交换机MAC地址表如下,下列说法正确的有? A. 交换机收到

    2024年02月08日
    浏览(65)
  • 每日一练 | 华为认证真题练习Day48

    1、运行OSPF协议的路由器所有接口必须属于同一个区域。 A. 对 B. 错 2、在华为设备中,OSPF选举Router ID的方法可以是下列哪种?(多选) A. 通过手工定义一个任意的合法Router ID B. 如果未配置Loopback接口,则在其他接口的IP地址中选取最大的IP地址作为Router ID C. 华为交换机可能使

    2024年02月07日
    浏览(25)
  • 每日一练 | 华为认证真题练习Day51

    1、如下图所示,IPSec传输模式中AH的头部应该插入到以下哪个位置? A. 1 B. 2 C. 3 D. 4 2、以下哪种远程登录方式最安全? A. Telnet B. Stelnet v100 C. Stelnet v2 D. Stelnet v1 3、以下业务模块的ACL默认动作为permit的是? A. HTTP B. SNMP C. Telnet D. 流策略 4、IPv6地址2019::8:AB对应的Solicited-node组播

    2024年02月07日
    浏览(27)
  • 每日一练 | 华为认证真题练习Day64

    1、如下图所示的网络,所有路由器运行0SPF协议,链路上方为Cost值的大小,则RA路由表中到达网络10.0.0.0/8的Cost值是多少? A. 70 B. 20 C. 60 D. 100 2、如下图所示的网络,主机A没有配置网关,主机B存在网关的ARP缓存,下列说法正确的有?(多选)  A. 在路由器的G0/0/1端口开启ARP代

    2024年02月11日
    浏览(34)
  • 每日一练 | 华为认证真题练习Day69

    1、STP协议在以下哪个状态下进行端口角色的选举? A. Blocking B. Disabled C. Learning D. Listening 2、RSTP BPDU报文中的Flag字段的总长度为多少bit? A. 6 B. 4 C. 8 D. 2 3、以下哪项不是RSTP可以提高收敛速度的原因? A. 边缘端口的引入 B. 取消了Forward Delay C. 根端口的快速切换 D. P/A机制 4、以

    2024年02月11日
    浏览(27)
  • 每日一练 | 华为认证真题练习Day104

    1、下面关于免费ARP报文的作用描述错误的是()。 A. 在VRRP备份组中用来通告主备发生变换 B. 用于通告一个新的现AC地址:发送方更换网卡,AC地址发生改变,为了能够在AP表项老化前通告所有主机,发送方可以发送一个免费ARP C. 用于检查重复的IP地址:正常情况下不会收到

    2024年02月11日
    浏览(32)
  • 每日一练 | 华为认证真题练习Day183

    1、用于过滤路由信息以及为通过过滤的路由信息设置路由属性的是哪一个 A. AS-PATH-FILTER B. IP-PREFIX C. ROUTE-POLICY D. POLICY-BASED-ROUTE 2、AGGREATE命令的DETAIL-SUPPRESSED选项的作用是什么 A. 抑制生成的聚合路由下发IP路由表 B. 抑制被聚合的明细路由下发IP路由表 C. 仅通告聚合路由给其他

    2024年02月19日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包