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

news2024/11/24 22:44:03

 

🔥博客主页:小王又困了

📚系列专栏:每日一练

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

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


🗒️前言:

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

 一、选择题

📝1.第一题

在上下文及头文件均正常的情况下,下列代码的输出是()

print(char* s)
{
    if (*s)
    {
        print(++s);
        printf("%c", *s);
    }
}

int main()
{
    char str[] = "Geneius";
    print(str);
    return 0;
}

💡解题思路:

这道题用到的是函数递归的思想,所以我们就要考虑递归什么时候结束。本题传递的字符串,字符串结尾有 ‘/0’ ,可以作为结束的标志。

字符串传递的是首元素的地址,所以 *s 存储的是 G 的地址,进入 if 条件判断为真,继续调用 print 函数。但这里要注意“++s” 前置 ++,要先++再使用,所以传递过去的就是 ‘e’ 的地址,经过一次次的调用,直到 ‘/0’ 不符合条件,跳出循环,开始打印,由与 “++s” 走到洗下一个字符,所以 *s 打印的也是这个字符,,无法打印第一个字符。


 

📝2.第二题

以下程序的输出结果为( )

#include <stdio.h>
//全局变量
int i;

void prt()
{
    for (i = 5; i < 8; i++)
    {
        printf("%c", '*');
    }
    printf("\t");
}

int main()
{
    for (i = 5; i <= 8; i++)
    {
        prt();
    }
    return 0;
}

💡解题思路:

想要正确的解决这道题,我们就要理解全局变量。

  • 全局变量:在函数外部定义的变量就是全局变量,全局变量为该源文件所有函数共有,它的作用域是从该文件定义的位置到源文件结束。

在 main 函数中,将 i 赋值为5,进入循环调用 ptr 函数,每次循环打印一个 ‘*’ ,当 i=8,不符合条件跳出循环,回到 main 函数中 “i++” 变为9,再次进入 main 函数的 for 循环条件不成立,无法在调用 prt 函数,结果是打印 “***”。

📝3.第三题

有如下代码,则 *(p[0]+1) 所代表的数组元素是( )

int a[3][2] = { 1, 2, 3, 4, 5, 6 };
int* p[3];
p[0] = a[1];

💡解题思路:

  • p 先与 [] 结合,所以p是数组,它的类型是 int*[] ,所以p是存放指针的指针数组
  • a[1]表示的是第二行首元素的地址,第二行的元素是3,4,所以存放的是3的地址。
  • p[0]中存放的就是3的地址,p[0]+1表示指针向后挪动一位,指向4,然后再解引用就可以得到4。

 

二、编程题

📝1.第一题

 💡解题思路:

通过题意我们得知,中心下标左侧的数据之和与右侧的数据之和相等。我们可以的到左侧数据之和加右侧数据之和加中心元素就是整个数组的和。所以当左侧数据这和乘2加下一个数据之和等于数组之和,那么这个数据就是中心元素。满足num*2+nums[i]==sum返回下标,没有符合条件的返回-1。

int pivotIndex(int* nums, int numsSize)
{
    int sum=0;
    int leftsum=0;
    int i=0;
    //计算数组之和
    for(i=0;i<numsSize;i++)
    {
        sum+=nums[i];
    }

    for(i=0;i<numsSize;i++)
    {
        if(leftsum*2+nums[i]==sum)
        {
            return i;
        }
        leftsum+=nums[i];
    }
    return -1;
}

📝2.第二题

  💡解题思路:

  • 排序+双指针

我们先将两个数组进行排序,在这里使用快速排序。然后使用两个指针遍历两个数组,如果两个数据相等,就拷贝到新的数组中;如果两个数不相等,就将较小数据的指针向后挪一位,直到一个指针超出数组范围,遍历结束。

注意:再插入时,我们要考虑插入的唯一性,所以我们要找一个 tmp 来判断插入的值是否重复,如果插入的值不等于 tmp ,将该数字插入,并且要更新 tmp 的值。

 

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

int* intersection(int* nums1, int nums1Size, int* nums2, int nums2Size, int* returnSize)
{
    qsort(nums1, nums1Size, sizeof(int), cmp_int);
    qsort(nums2, nums2Size, sizeof(int), cmp_int);
    *returnSize = 0;
    //开辟存放相同元素的空间
    int* destnum = malloc(sizeof(int) * (nums1Size + nums2Size));
    if (destnum == NULL)
    {
        perror("malloc");
        exit(-1);
    }

    int n = 0;
    int m = 0;

    while (n < nums1Size && m < nums2Size)
    {
        if (nums1[n] == nums2[m])
        {
            //保证唯一性   
            //当新的数组中插入第一个元素或要插入的元素与之前插入的元素不同
            if (!(*returnSize) || nums1[n] != destnum[(*returnSize) - 1])
            {
                destnum[(*returnSize)++] = nums1[n];
            }
            n++;
            m++;
        }
        else if (nums1[n] < nums2[m])
        {
            n++;
        }
        else
        {
            m++;
        }
    }
    return destnum;
}

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

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

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

相关文章

LangChain手记 Models,Prompts and Parsers

整理并翻译自DeepLearning.AILangChain的官方课程&#xff1a;Models,Prompts and Parsers 模型&#xff0c;提示词和解析器&#xff08;Models, Prompts and Parsers&#xff09; 模型&#xff1a;大语言模型提示词&#xff1a;构建传递给模型的输入的方式解析器&#xff1a;…

NAS搭建指南二——影视资源中心

1. 刮削 这一部分是利用 tinyMediaManager 进行影视资源的评分、简介以及图片的搜集工作tinyMediaManager 官方网站地址下载及安装过程&#xff1a;略我的主要修改的设置项如下所示&#xff1a; 使用方法&#xff1a; a. 点击更新媒体库 b. 选择影片–>右键单击–>…

Ubuntu 20.04(服务器版)安装 Anaconda

0、Anaconda介绍 Anaconda是一个开源的Python发行版本&#xff0c;包含了包括Python、Conda、科学计算库等180多个科学包及其依赖项。因此&#xff0c;安装了Anaconda就不用再单独安装CUDA、Python等。 CUDA&#xff0c;在进行深度学习的时候&#xff0c;需要用到GPU&#xf…

生信分析pandas数据处理 Python简明教程 | 视频18

开源生信 Python教程 生信专用简明 Python 文字和视频教程 源码在&#xff1a;https://github.com/Tong-Chen/Bioinfo_course_python 目录 背景介绍 编程开篇为什么学习Python如何安装Python如何运行Python命令和脚本使用什么编辑器写Python脚本Python程序事例Python基本语法 数…

软件开发中常用数据结构介绍:C语言链表

工作之余来写写C语言相关知识&#xff0c;以免忘记。今天就来聊聊C语言链表&#xff0c;我是分享人M哥&#xff0c;目前从事车载控制器的软件开发及测试工作。 学习过程中如有任何疑问&#xff0c;可底下评论&#xff01; 如果觉得文章内容在工作学习中有帮助到你&#xff0c;麻…

干不完根本干不完,我也不想加班,快来围观时间管理大师

时间不够用&#xff0c;怎么办&#xff1f; 成功不靠加班。生产队的驴都不加班&#xff0c;你加什么班&#xff1f;到点就下班&#xff0c;该玩玩&#xff0c;该学习认真学&#xff0c;累了就睡觉。 你可以做任何事&#xff0c;但不必做所有事。 时间管理&#xff0c;不是管…

(十七)大数据实战——Hive的hiveserver2服务安装部署

前言 HiveServer2 是 Apache Hive 的一个服务器端组件&#xff0c;用于支持客户端与 Hive 进行交互和执行查询。HiveServer2服务的作用是提供jdbc/odbc接口&#xff0c;为用户提供远程访问Hive数据的功能。HiveServer2 允许多个客户端同时连接并与 Hive 交互。这些客户端可以通…

HOT91-不同路径

leetcode原题链接&#xff1a;不同路径 题目描述 一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&#xff08;在下图中标记为 “Finish” &#xff09;…

shell编程免交互

免交互 定义&#xff1a; 一键执行&#xff0c;无需人工干预&#xff0c;不需要人为控制&#xff0c;就可以完成的操作&#xff0c;继续自动化运维 免交互在linux中的运用&#xff1a; 对于Linux操作系统中&#xff0c;有许多操作都会触及到交互&#xff08;根据系统的指示做…

OpenCV项目开发实战--相机校准—并附实例Python/C++代码实现

介绍 相机标定是计算机视觉中的一项基本任务在 3D 重建、对象跟踪、增强现实和图像分析等各种应用中至关重要。准确的校准通过校正失真和估计相机的内在和外在参数来确保精确的测量和可靠的分析。这本综合指南深入探讨了相机校准的原理、技术和算法。我们探索获取相机的内在和…

在 Linux 虚拟机上使用 Azure 自定义脚本扩展版本

参考 azure创建虚拟机,创建虚拟机注意入站端口规则开放80端口、 2.转到资源&#xff0c;点击扩展应用程序&#xff0c;创建存储账户&#xff0c;创建容器&#xff0c;上传文件&#xff0c;选择文件&#xff0c;会自动执行部署。 apt-get update -y && apt-get insta…

电信流失用户画像

三大运营商电信、联通、移动&#xff0c;都想扩大自己的客户群体。据研究&#xff0c;获取新客户所需的成本远高于保留现有客户的成本。因此为了满足在激烈竞争中的优势&#xff0c;提前预测出用户是否会流失&#xff0c;采取保留措施成为一大挑战。本文和你一起探索电信流失客…

挤牙膏的iPhone15真不值,实在太敷衍,看完基本没了购买欲望

随着苹果大概会如往年那样在9月13日发布iPhone15&#xff0c;目前iPhone15四款手机的消息已经基本剧透&#xff0c;没啥秘密可言&#xff0c;从透露的消息可以看出低配的iPhone15实在太鸡肋&#xff0c;不值得消费者购买。 据悉iPhone15和iPhone15 plus将采用灵动岛设计&#x…

systrace: 系统级跟踪工具的解析

关于作者&#xff1a;CSDN内容合伙人、技术专家&#xff0c; 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 &#xff0c;擅长java后端、移动开发、人工智能等&#xff0c;希望大家多多支持。 目录 一、导读二、概览三、获取systrace文件3.1 通过python命令获取3.1.…

HCIP学习-ospf3

前置内容 HICA学习--ospf动态路由协议_板栗妖怪的博客-CSDN博客 HCIA学习--ospf配置_板栗妖怪的博客-CSDN博客 HCIP学习--ospf1_板栗妖怪的博客-CSDN博客 HICP学习--ospf2_板栗妖怪的博客-CSDN博客 5类、7类路由类型 概念 5、7类的路由会纯在一个类型1和类型2的区别 设备…

Jlink RTT工具打印日志

背景 平常调试代码中使用串口打印log&#xff0c;往往需要接出串口引脚&#xff0c;比较麻烦&#xff0c;并且串口打印速度较慢&#xff0c;串口的中断可能会影响代码的执行效率。 SEGGER RTT支持使用J-link调试器输出来自目标微控制器的信息&#xff0c;也可以接收输入&#…

Python 潮流周刊#15:如何分析异步任务的性能?

△点击上方“Python猫”关注 &#xff0c;回复“1”领取电子书 你好&#xff0c;我是猫哥。这里每周分享优质的 Python、AI 及通用技术内容&#xff0c;大部分为英文。标题取自其中一则分享&#xff0c;不代表全部内容都是该主题&#xff0c;特此声明。 本周刊精心筛选国内外的…

dubbo3-高级特性

dubbo-admin 1.dubbo-admin管理平台&#xff0c;是图形化的管理页面 2.从注册中心中获取所有的提供者/消费者进行配置管理 3.路由规则&#xff0c;动态配置&#xff0c;服务降级&#xff0c;访问控制&#xff0c;权重调整&#xff0c;负载均衡等管理功能 dubbo-admin是一个前…

一文读懂!一年耗能堪比2个三峡电站的大数据中心,背后竟隐藏着这些秘密......

全国大数据中心1年的能耗规模相当于2个三峡电站一整年的发电量&#xff0c;这是为什么&#xff1f; 大数据中心每耗费1度电&#xff0c;只有一半用在了“计算”上面&#xff0c;其他的都应用在散热、照明等方面到底是怎么回事&#xff1f; 为什么说在算力上每投入1元&#xff0…

【CI/CD】基于 Jenkins+Docker+Git 的简单 CI 流程实践(下)

基于 JenkinsDockerGit 的简单 CI 流程实践&#xff08;下&#xff09; 5.环境测试 5.1 远程 clone 代码测试 clone 云主机 docker-git 上的仓库 tomcat-java-demo.git&#xff1a; [rootdocker-jenkins ~]# yum install git vim wget -y [rootdocker-jenkins ~]# git confi…