【计算机本科补全计划】C++牛客网试题习题解析
正文之前
一大早醒来,外面淅淅沥沥的雨绵绵的下着,床铺真的舒服,但是我也不能就在床上刷微博看小说吧,所以想起了昨晚下载的牛客网的APP,赶紧掏出我的大宝贝---升级到iOS11的肾(各位,真的建议升级到11,不是我说,速度快了很多,虽然还有不少的bug待修复,但是真的快了好多,而且感觉内部的功耗设定都改了,比较耐用了点了。虽然最大的悲剧是变丑了很多 PS:变丑观点来自我的审美比较好的妹子),然后刷了一套C++的面试题,这些基础知识好久没看过了,最近沉迷于算法和数据结构,所以基本大脑大部分地区已经被指针占领了,C++做的好勉强,后面自己查查补补,总算写出一份攻略,欢迎品鉴,也请帮我纠正,毕竟我现在是个半吊子。
正文
第一题解析:
alp是一个指针数组,含有三个指针,分别指向三个字符串的内存区,那么 alp[1]
很自然的就是指向“DEF”这个内存区,然后 puts
虽然不知道是啥,但是琢磨着应该是把整个连续内存区的都整出来的吧!那么没问题,就是D
第二题解析:
这个代码其实写的不是很适合阅读,应该要有比较好的代码编写规范,先后,嵌套顺序明显才是优秀的!本题的代码嵌套关系如下图所示,在 if(a>b)
与后面的 printf("%dn",d);
不存在主从关系,也就是说不管你 if(a>b)
是否能深入运行,都会有 printf("%dn",d);
的执行,所以这时候就只要考虑 if(a>b)
能否改变d的值?并且自身有没有输出?然后看了下 a>b 这很明显是不可能的,所以if直接就跳出了,到了后面的 printf("%dn",d);
第三题解析:
这个我不知道啊!!所以只好借用讨论区的回答咯。错了不怪我~~大文件表空间只能包含一个文件,但是文件可以达到 4G 个数据块大小。(只能包含一个文件,但是一个文件里可以包含多个数据文件??不知道是不是这样理解)
第四题解析:
首先,第一行第二行是字符数组的复制,类似于是一个字符串,然后再第三行进行了一个字符串的操作函数,— strcpy
意思就是把字符串整个的复制给 ccString1
,那么这个时候 ccString1=”No“
,并未保留后续的 PageFault??
第四句是比较两个字符串,相等输出0,不相等输出1,那么很显然的, strcmp
输出的是1,不等于0,那么在if内部的bool型变量就是0,那么就不会执行 cout<<ccString2;
,而是直接进行
else
cout<<ccString1;
第五题解析(错题):
在 C/C++ 语言中,sizeof() 是一个判断数据类型或者表达式长度的运算符。在32位机上,所有指针类型变量占用内存字节数都为4因为32位机就是 4字节 * 8个二进制位/字节 计算出来的.如果在64位机上,指针占用内存大小就是:8个字节.
那么接下来其实就是判断括号内的变量的类型,然后根据查表得出的结果找出各自的长度。对照表如下图,对照之后就有
A:8
B:17
C:1
D:8
第六题解析:
这个没多少好说的,我全凭感觉做的,第一个的话,宏我并不记得有这么大的安全隐患,第三个,宏就是为了程序的可读性,可修改性做出的贡献,第四个,宏定义对于提高运行效率其实没啥影响吧,只是方便观看以及方便修改吧!我不太清楚,还没有精学,后面慢慢应该还会讲到吧!
第七题解析【错题】:
我记岔了,以为公有继承的派生类的话不会把父类的私有量继承过来,实际上会的,但是只是不能访问,所以说最终B里面就是三个指针,不管能不能访问, sizeof(B)
是不会错的!8*3=24咯 ~
第八题解析【错题】:
这个相对来说算是比较复杂了。我当时是理清楚了的,但是后面好像是判断错误,然后多读了一个数的样子,下面详细解释下,
int fun1(char s[], char a, int n)
{
int j;
j = n;
while (a < s[j] && j > 0) j--;
return j;
}
这个函数是要返回从s中的第七个开始往下数,第多少个能够满足不大于a的条件,就是说s是一个递增的字符数组,a处于这个递增数列的中间,从高处开始找到第一个小于或等于a的字符的码值返回, 这就是 fun1
的作用, fun2
的作用类似,从低处开始找,找到第一个大于等于a的字符的码值返回,从主函数里面知道,s的码值从1-7对应着 D F H J L N P
那么很显然的 fun1
返回的是5, fun2
的返回值为6,我是傻逼吗?当时数的时候 fun1
数出来6!!!
第九题解析:
这个题目我真的是靠感觉来的。首选,首先f1要传进去的实参必须是一个指针,所以C没毛病,然后关于D的话,我当时想的是,如果带不带括号有区别的话,那么当然是要尊重初始定义的时候的带括号的方法了。所以毫不犹豫的选了D 现在想想,如果带括号没用,带这个括号干嘛,闲的鸡儿疼吗??至于别的,同理,A需要带括号,B里面传入指针,不要 *
就好了!
第十题解析【错题】:
老实说这种题目我见所未见,也就今天第一波牛客见到了。以后慢慢来吧! 本题是16位机器, char
型占1个字节,int型占2个字节。结构体中字节对齐有两条规则:
- 数据成员自对齐,即数据成员起始地址为数据类型长度的整数倍,如该题
int
型b只能从0,2,4...等地址处开始放; - 结构体总长度是结构体中有效对齐值的整数倍,有效对齐值,如该题没明确指出,则为最长数据成员
(intb)
长度的整数倍;
根据上面两条规则,画出内存示意图。根据规则1, intb
从2处开始放,此时结构体总长度为(1 + 1 + 2 + 1 = 5);再根据规则2,结构体总长度应为2的整数倍,故应为6.描红的两个字节表示被浪费的。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- SQL优化终于干掉了“distinct”
- SAP Spartacus delivery mode页面Cannot find control with的错误消息
- codeforces 1349A(数学)
- 阔别两年,webpack 5 正式发布了!
- SAP Spartacus delivery mode continue button enable与否的逻辑
- codeforces 1342C(前缀和)
- leetcode-寻找两个正序数组的中位数
- Shell脚本常用命令一览
- 深入学习 React 合成事件
- 关于fixture.debugElement.query(By.css)这个方法的一个疑问
- codeforces 1334C(前缀和)
- Angular通过依赖注入机制注入一个对象的例子
- 简易数据分析(七):Web Scraper 抓取表格、分页器翻页数据
- codeforces 1327C(构造)
- zabbix分布式及高可用