《C/C++专项练习》 — (3)

第三次C/C++专项,嗯,要抗住打击,继续加油~

错题分析与总结

1 . 在64位系统中,有如下类:

class A
{
public:
    void *p1;
private:
    void *p2;
protected:
    void *p3;
};
class B: public A {};

那么sizeof(B)的数值是?

A . 8

B . 16

C . 24

D . 32

分析: 在32位系统中,指针占4个字节,而在64位系统中,指针占8个字节,且都有字节对齐规则;题目中定义类A中有3个指针,故会占用24个字节。B类继承自类A且无成员变量和虚函数表,占用字节和A相同。

需要注意的是,对于类的继承,父类中的私有成员子类不能访问时是编译器的行为,但是其在子类中是存在的,所以同样占用空间,可以通过指针对内存的操作来访问。

答案: C

总结:错选了B , 错误的把指针的占用按照4个字节计算,考虑了8字节对齐,就得到了16字节的错误结果。

2 . 在int b[ ][3] = {{1},{3,2},{4,5,6},{0}};中,sizeof(b) = ?

A . 4

B . 12

C . 28

D . 48

分析: 题目中定义的是int类型的二维数组,int类型变量占用4个字节,每行则占用3 * 4 = 12 字节;而二维数组有4行,故sizeof(B) = 4 * 12 = 48 字节。

答案: D

总结: 错选A,究其原因还是对sizeof操作符功能的了解不透彻,错误的认为其为求首地址的大小。关于sizeof关键字,百科的内容很是详细,sizeof百科内容。

3 . 当一个类A 中没有声明任何成员变量与成员函数,这时sizeof(A)的值是多少?

A . 1

B . 0

C . 4

D . 运行时错误

分析:举例,class Base {};

运行cout<<”sizeof(Base)=”<

#include <stdio.h>
main( )
{
    FILE * fp;
    int i,a[ 6]=﹛1,2,3,4,5,6﹜,k;
    fp = fopen(〝data.dat〞,〝w+〞);
    for (i=0;i<6;i+ +)
    {
        fseek( fp,0L,0);
        fprintf(fp,"%d\n",a [ i]);
        rewind (fp);
        fscanf(fp,〝%d〞,&k);
        fclose(fp);
        printf("%d\n",k);
    }
}

A . 123456

B . 1

C . 6

D . 21

分析: 讨论中的解释是这样的,本题考查文件操作函数,fseek用于二进制方式打开的文件,移动文件读写指针位置。将文件内部的位置指针重新指向一个流(数据流/文件)的开头。所以最后只保留的6。

答案:C

总结: 错选B , 没看懂题目。。。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-09-28 00:53:49

《C/C++专项练习》 — (3)的相关文章

《算法图解》代码实现和改进

<算法图解>代码实现和改进 请随意观看表演 二分查找 数组和链表 递归 递归条件和基线条件 快速排序 散列表 广度优先搜索 狄克斯特拉算法 贪婪算法 二分查找 def bin_search(list,item): low = 0 high = len(list) - 1 while low<=high: mid = (low+high)//2 #得到中间值 guess = list[mid] if guess==item: return mid elif guess>item: h

《算法图解》示例代码的实现

这几天看了<算法图解>,把里面的示例代码都实现了一边,在 github 上找到了一位朋友的仓库,fork 了他的. 里面有我们添加的 Python,Java,C++的实现,欢迎大家 fork!!! 附上网址:https://github.com/lynxux/AlgorithmDiagram 原文地址:https://www.cnblogs.com/linkcode/p/8185994.html

Bellman-Ford算法图解

一.Bellman-Ford算法用到的"材料": 1.一个结果数组dis,这个结果数组记录从源点到其他点的最短距离,如dis[10] 表示(加入开始节点标号为1)开始节点1到10号节点的最短距离. 2.C/C++中定义结构体Edge,表示边,内设变量from.to.cost,分别表示这条边的开始标号.终点标号.边长度 3.为了方便测验设置一个边的数组,C++定义:Edge edges[100]: 二.Bellman-Ford算法图解 如图所示,针对一般情况分析,对一条边来说,我们想更新

《算法图解》经典高清中文PDF+英文PDF+源代码

下载:https://pan.baidu.com/s/1U0uJEtx1YHqw28lYkTZxEA 更多资料分享:https://pan.baidu.com/s/1g4hv05UZ_w92uh9NNNkCaA <算法图解>高清中文PDF,199页,带书签目录,文字可以复制粘贴. <算法图解>高清英文PDF,258页,带书签目录,文字可以复制粘贴. 配套源代码. 图文并茂,以让人容易理解的方式阐释了算法,帮助在日常项目中更好地发挥算法的能量. 如图: 原文地址:https://ww

《算法图解》+ 《我的第一本算法书》+资料PDF学习

<我的第一本算法书>没有枯燥的理论和复杂的公式,而是通过大量的步骤图帮助读者加深对数据结构 原理和算法执行过程的理解,便于学习和记忆. 下载:https://pan.baidu.com/s/1poq0e2siuvR1Re5pEIkBnQ <我的第一本算法书>高清PDF,210页,彩色配图,带书签目录,文字可以复制. <我的第一本算法书>采用大量图片,通过详细的分步讲解,以直观.易懂的方式展现了7个数据结构和 26个基础算法的基本原理.第1章介绍了链表.数组.栈等7个数据

《算法图解》读书感悟

写在前面:我感觉阅读算法书比没有系统地学习算法就开始盲目刷题要好很多 学习了数组.链表.栈.哈希表(散列函数).选择排序.快速排序(分而治之).二分查找.简单查找.递归.递推,觉得能够学到很多东西. 算法书并没有像知乎上说的没有用处,直接刷题就好??(本人为学校acm团队队员,一直为不能ak,有时周赛爆零而伤心) 应该是要先对算法有一个完全的自我认识后才开始刷题叭,这样之后刷的题才有意义,而不是一股脑地水题猛刷. 读到<算法图解>的这里时,是我最有共鸣的: 仅当URL不在缓存中时,你才让服务器

算法入门《数据结构与算法图解》+《我的第一本算法书》+《学习JavaScript数据结构与算法第3版》

最近几年学前端的人会越来越多,再加上前端的范围越来越广,从前端发展为全栈,数据结构和算法的功底要求势必将越来越高. <数据结构与算法图解>电子书及代码是数据结构与算法的入门指南,不局限于某种特定语言,略过复杂的数学公式,用通俗易懂的方式针对编程初学者介绍数据结构与算法的基本概念,培养编程逻辑.主要内容包括:为什么要了解数据结构与算法,大O表示法及其代码优化利用,栈.队列等的合理使用,等等. <算法图解>电子书非常的体贴,看起来也很快,用图来解释算法是非常好的想法,可作为学习数据结构

基于四元数的姿态解算算法图解

下面的两个地址是我存放在百度云网盘的附件,分别是基于四元数的互补滤波法的图解和梯度下降法的图解.笔者采用MindManager思维导图软件对上述两种算法进行详细的解释,非常形象. 希望这种方式能够让大家快速.准确的理解这两种算法的流程. 互补滤波法: http://pan.baidu.com/s/1c0b8qJ2 梯度下降法: http://pan.baidu.com/s/1sjI1l5F

字符串模式匹配之KMP算法图解与 next 数组原理和实现方案

之前说到,朴素的匹配,每趟比较,都要回溯主串的指针,费事.则 KMP 就是对朴素匹配的一种改进.正好复习一下. KMP 算法其改进思想在于: 每当一趟匹配过程中出现字符比较不相等时,不需要回溯主串的 i指针,而是利用已经得到的“部分匹配”的结果将模式子串向右“滑动”尽可能远的一段距离后,继续进行比较.如果 ok,那么主串的指示指针不回溯!算法的时间复杂度只和子串有关!很好. KMP算法的关键是利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的目的,很自然的,需要一个函数来存储匹

常见的五类排序算法图解和实现(交换类:冒泡排序,递归的快速排序)

冒泡排序算法: 总的来说就是两两交换,反复直到有序,第一个记录和第二个记录,若逆序则交换,然后比较第二个和第三个记录,以此类推,直到第 n 个记录和第 n-1个记录比较完毕为止,第一趟排序,结果关键字最大的记录被安排在最后一个位置.对前 n-1个记录继续冒泡排序,使得关键字次大的记录安排在第 n-1个位置.如此重复,直到没有需要交换的记录为止(仅仅是第一个和第二个交换过为止).整个一趟趟的选出最值的过程,仿佛是那水里的气泡,咕嘟咕嘟的往上翻的过程. 递增冒泡排序过程图解: 一般先比较第一个元素和