【计算机本科补全计划】C++牛客网试题习题解析

正文之前

一大早醒来,外面淅淅沥沥的雨绵绵的下着,床铺真的舒服,但是我也不能就在床上刷微博看小说吧,所以想起了昨晚下载的牛客网的APP,赶紧掏出我的大宝贝---升级到iOS11的肾(各位,真的建议升级到11,不是我说,速度快了很多,虽然还有不少的bug待修复,但是真的快了好多,而且感觉内部的功耗设定都改了,比较耐用了点了。虽然最大的悲剧是变丑了很多 PS:变丑观点来自我的审美比较好的妹子),然后刷了一套C++的面试题,这些基础知识好久没看过了,最近沉迷于算法和数据结构,所以基本大脑大部分地区已经被指针占领了,C++做的好勉强,后面自己查查补补,总算写出一份攻略,欢迎品鉴,也请帮我纠正,毕竟我现在是个半吊子。

正文

第一题解析:

alp是一个指针数组,含有三个指针,分别指向三个字符串的内存区,那么 alp[1]很自然的就是指向“DEF”这个内存区,然后 puts虽然不知道是啥,但是琢磨着应该是把整个连续内存区的都整出来的吧!那么没问题,就是D

第二题解析:

这个代码其实写的不是很适合阅读,应该要有比较好的代码编写规范,先后,嵌套顺序明显才是优秀的!本题的代码嵌套关系如下图所示,在 if(a>b)与后面的 printf("%d\n",d);不存在主从关系,也就是说不管你 if(a>b)是否能深入运行,都会有 printf("%d\n",d);的执行,所以这时候就只要考虑 if(a>b)能否改变d的值?并且自身有没有输出?然后看了下 a>b 这很明显是不可能的,所以if直接就跳出了,到了后面的 printf("%d\n",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.描红的两个字节表示被浪费的。

原文发布于微信公众号 - 工科狗和生物喵(gh_3507b116a1f8)

原文发表时间:2017-09-23

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏斑斓

编程修炼 | Scala亮瞎Java的眼(二)

继续上一期的话题,介绍Scala有别于Java的特性。说些题外话,当我推荐Scala时,提出质疑最多的往往不是Java程序员,而是负责团队的管理者,尤其是略懂技...

3695
来自专栏Java技术栈

跟我学 Java 8 新特性之 Stream 流(五)映射

经过了前面四篇文章的学习,相信大家对Stream流已经是相当的熟悉了,同时也掌握了一些高级功能了,如果你之前有阅读过集合框架的基石 Collection 接口,...

932
来自专栏司想君

即学即用系列一:纯函数

最近一直在思考如何通过文章或者培训快速提升团队的编码能力,总结下来其实技术的学习分为两类:一种是系统性的学习,比如学习一门语言,学习一个开发框架,这更需要自己从...

2817
来自专栏互联网开发者交流社区

我个人对OOP的理解

973
来自专栏带你撸出一手好代码

从PHP代码的细节说起

因为一个BUG, 我在一个摇摇欲坠,几乎碰一下就会散架的项目中某一个角落中发现下面这样一段代码 ? 这段程序与那个BUG有密切的关系。 我来回反复的捉摸这段代码...

4217
来自专栏xingoo, 一个梦想做发明家的程序员

剑指OFFER之最小的K个数(九度OJ1371)

题目描述: 输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。 输入: 每个测试案例包括...

1999
来自专栏iKcamp

翻译连载 | 附录 A:Transducing(上)-《JavaScript轻量级函数式编程》 |《你不知道的JS》姊妹篇

原文地址:Functional-Light-JS 原文作者:Kyle Simpson-《You-Dont-Know-JS》作者 JavaScript 轻量级函数...

2118
来自专栏zaking's

js算法初窥04(算法模式01-递归)

1232
来自专栏小樱的经验随笔

【Java学习笔记之十三】初探Java面向对象的过程及代码实现

理解Java面向对象的重要知识点: 一、 类,对象 类?首先举一个例子:小李设计了一张汽车设计图,然后交给生产车间来生产汽车,有黑色的、红色的、白色的... ...

3386
来自专栏Python

面向对象的三大特性(封装、继承、多态)

继承 什么是继承 继承是一种创建新类的方式,在python中,新建的类可以继承一个或多个父类,父类又可称为基类或超类,新建的类称为派生类或子类 python中类...

1.6K9

扫码关注云+社区

领取腾讯云代金券