C语言之练习题

在这里插入图片描述

欢迎来到我的:世界

希望作者的文章对你有所帮助,有不足的地方还请指正,大家一起学习交流 !


目录

  • 前言
  • 填空题:
    • 第一题
    • 第二题
    • 第三题
    • 第四题
  • 编程题:
    • 第一题:
    • 第二题:
  • 总结

前言


填空题:

第一题

在这里插入图片描述

题解思路:
该题考察的是我们对运算符优先级掌握+对二维数组的理解;
百度:运算符优先级详解;X[ i ][ j ] 表达式中下标引用操作符优先级是最高的;所以是先如果拆开就可以更好理解其结构:
在这里插入图片描述
接下来依次看选项:选项A:*(X[ i ]+j);
下标引用操作符“ [ ] ”是比括号“( )”的优先级高的,既然是一个二维数组,可以看成是一个一维数组的集合;而这个选项是与X[i][j] 等效的;
选项B:*X( i )[ j ]; 要知道“[ ]”是先于“ * ”的,所以先是下标引用操作符先进行操作,这本就是一个错误的表达式;
选项C:*(X+i+j); 这个选项可以理解为X[i+j] 这完全和X[i][j]不相符;
选项D:((X+i)+j);这个选项可以知道与X[i][j]相符;

第二题

在上下文及头文件均正常的情况下,下列代码的输出是( )在这里插入图片描述

解题思路:
这题看似比较简单,但是有个小细节不注意可能就一盘皆输;一个函数递归问题
递归输出“Geneius”,按理输出的是“suieneG”,但这里需要特别注意:第一次递归输入的是++s,跳过了“G”,这也就没有G的打印;
在这里插入图片描述
所以最终输出的是:suiene

第三题

下列 for 循环的次数为( )

for(int i = 0 ; i || i++ < 5;);

解题思路:
这题考察的是逻辑“或”,逻辑“或”,有真则为真,两者都为假则为假; 刚刚进入循环,i=0;进入判断条件,i为0代表的是假,则看i++<5,此表达式进行了计算,此为真,则进入循环,当第二次循环时i已经++了,则i=1 此代表为真,则不会在进入i++<5表达式了; i不会进行变化,所以该表达式会陷入死循环;

次数应该是:无限次;

第四题

在这里插入图片描述

A选项,没有考虑内存对齐。 B选项,考察double类型的比较,由于浮点数存在误差,不能直接判断两个数是否相等,通常采用比较两数之差的绝对值是否小于一个很小的数字(具体的可自己设定这样一个数,作为误差)来确定是否相等。 C选项,a为数组首地址是常量不能改变, 所以A,B,C都是错的,选择D


编程题:

第一题:


地址:oj地址


在这里插入图片描述

解题思路:排序+双指针
首先对两个数组进行排序,然后使用两个指针遍历两个数组。 然后创造一个存放相交元素的数组 arr ;可以预见的是加入arr 数组的元素一定是递增的, 再为了保证加入元素的唯一性,我们需要额外记录变量 prve 表示上一次加入答案数组的元素。
初始时,两个指针分别指向两个数组的头部。
然后每次比较两个指针指向数组中的元素,若不相等,较小的指针向右移动一位;若相等,则判断为不等于prve,不是则将该存入用来存放相交数组arr中,并且更新一下prve的值,将prve的值改成刚刚相交元素的值; 然后两个指针同时向右移动一位,当至少有一个指针超出数组范围时,遍历结束。

代码:

int cmp (const void *e1,const void*e2)
{return *(int*)e1-*(int*)e2;
}int* intersection(int* nums1, int nums1Size, int* nums2, int nums2Size, int* returnSize){//首先进行排序qsort(nums1,nums1Size,sizeof(int),cmp );qsort(nums2,nums2Size,sizeof(int),cmp );//创造一个数组存放相交的数组int *arr=(int*)malloc(sizeof(int) * (nums1Size + nums2Size));//设置两个指针int sur1=0;int sur2=0;int prve=-1;//记录上一个的相交值,判断是否要存入int j=0;while(sur1<nums1Size && sur2<nums2Size){int num1=nums1[sur1],num2=nums2[sur2];if(num1==num2){if(prve!=num1)//判断出不是相同的相交值{arr[j]=num1;j++;prve=num1;sur1++;sur2++;}else{sur1++;sur2++;}}else if(num1<num2){sur1++;}else{sur2++;}}*returnSize=j;//相交数组个数return arr;
}

第二题:


地址:oj地址


在这里插入图片描述

解题思路:
先算出该数组中所以元素和记到total;当遍历到 i 时,其左侧元素之和为 sum ,那其右侧元素之和为 total- nums[i] - sum;当左右元素和相等的时候就有等式:2*sum + nums[i] =total;
在这里插入图片描述

代码:

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

总结

知识是无穷的,探索的路上是枯燥的,让我来分享一下乐趣:
鲁迅说过:打断你的腿,再给你一副拐杖,然后告诉你,没有他你连走路都走不了,所以要学会感恩。


到了最后:感谢支持

我还想告诉你的是:
------------对过程全力以赴,对结果淡然处之
也是对我自己讲的

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

cookie和session区别

一.Cookie详解 &#xff08;1&#xff09;Cookie是什么 &#xff1f; Cookie&#xff0c;有时也用其复数形式Cookies。类型为“小型文本文件”&#xff0c;是某些网站为了辨别用户身份&#xff0c;进行Session跟踪而储存在用户本地终端上的数据&#xff08;通常经过加密&#…

目标检测后的图像上绘制边界框和标签

效果如图所示&#xff0c;有个遗憾就是CV2在图像上显示中文有点难&#xff0c;也不想用别的了&#xff0c;所以改成了英文&#xff0c;代码在下面了&#xff0c;一定要注意一点&#xff0c;就是标注文件的读取一定要根据自己的实际情况改一下&#xff0c;我的所有图像的标注文件…

宠物赛道,用AI定制宠物头像搞钱项目教程

今天给大家介绍一个非常有趣&#xff0c;而粉丝价值又极高&#xff0c;用AI去定制宠物头像或合照的AI项目。 接触过宠物行业应该知道&#xff0c;获取1位铲屎官到私域&#xff0c;这类用户的价值是极高的&#xff0c;一个宠物粉&#xff0c;是连铲个屎都要花钱的&#xff0c;每…

基于ETLCloud的自定义规则调用第三方jar包实现繁体中文转为简体中文

背景 前面曾体验过通过零代码、可视化、拖拉拽的方式快速完成了从 MySQL 到 ClickHouse 的数据迁移&#xff0c;但是在实际生产环境&#xff0c;我们在迁移到目标库之前还需要做一些过滤和转换工作&#xff1b;比如&#xff0c;在诗词数据迁移后&#xff0c;发现原来 MySQL 中…

应用TortoiseSVN的SubWCRev管理VisualStudio C#项目编译版本号

首先要安装 TortoiseSVN, 并确保TortoiseSVN的bin目录被加入到系统环境变量Path中。 1、拷贝Porperties目录下的文件AssemblyInfo.cs生成副本AssemblyInfo.template, 作为版本管理的模板文件。 2、修改模板文件中的想要管理的版本号信息 // [assembly: AssemblyVersion(&quo…

深入了解OpenStack:创建定制化QCOW2格式镜像的完全指南

OpenStack 创建自定义的QCOW2格式镜像 前言 建议虚机网络配置为 NAT 或 桥接&#xff0c;因为未来 KVM虚机 需要借助 虚机 的外网能力进行联网安装软件包 虚机在启动前&#xff0c;必须在 VMware Workstation 上为其开启虚拟化引擎 虚拟化 Intel VT-x/EPT 或 AMD-V 安装kvm …

Mybatis学习|第一个Mybatis程序

1.创建一个数据库以及一个用户表&#xff0c;并插入三条数据用来测试 2.创建一个空的maven项目 在pom.xml中导入本次测试用到的三个依赖&#xff0c;mysql驱动、mybatis依赖、以及单元测试junit依赖 将这个 空的maven项目当成一个父项目&#xff0c;再创建一个空的maven子项目用…

文件传输协议

文章目录 一、FTP1. 定义2. 端口3. 数据传输方式主动方式被动方式 二、TFTP三、常用命令 首先可以看下思维导图&#xff0c;以便更好的理解接下来的内容。 一、FTP 1. 定义 文件传输协议&#xff08;FTP&#xff09;是一种用于在客户端和服务器之间进行文件传输的标准网络协…

【NLP】手把手使用PyTorch实现Transformer以及Transformer-XL

手把手使用PyTorch实现Transformer以及Transformer-XL Abstract of Attention is all you need使用PyTorch实现Transformer1. 构建Encoder-Decoder模型1.1 导入依赖库1.2 创建Encoder-Decoder类1.3 创建Generator类 2. 构建Encoder2.1 定义复制模块的函数2.2 创建Encoder2.3 构…

快手Java一面,全是基础

现在已经到了面试招聘比较火热的时候&#xff0c;准备面试的过程中&#xff0c;一定要多看面经&#xff0c;多自测&#xff01; 今天分享的是一位贵州大学的同学分享的快手一面面经。 快手一面主要会问一些基础问题&#xff0c;也就是比较简单且容易准备的常规八股&#xff0…

阿里云部署开源MQTT平台mosquitto的docker操作

MQTT&#xff08;Message Queuing Telemetry Transport&#xff09;是一种轻量级的消息传输协议&#xff0c;广泛用于物联网和传感器网络中。Mosquitto是一个流行的开源MQTT代理&#xff0c;可以在Docker中进行配置和部署。本文将详细介绍如何在Docker中配置Mosquitto MQTT代理…

Qt+C++桌面计算器源码

程序示例精选 QtC桌面计算器源码 如需安装运行环境或远程调试&#xff0c;见文章底部个人QQ名片&#xff0c;由专业技术人员远程协助&#xff01; 前言 这篇博客针对<<QtC桌面计算器源码>>编写代码&#xff0c;代码整洁&#xff0c;规则&#xff0c;易读。 学习与…