牛客网错题整理--C++篇1

牛客网错题整理--C++篇1


1.下列程序的运行结果是PP 10003,请为横线处选择合适的程序():

 #include<stdio.h>
 #include<string.h>
 struct STU 
 { 
    char name[10]; 
    int num;
 }; 
 void f(char_____, int num) 
 { 
    struct STU s[2]={{"SS",10001},{"PP",10002}}; 
    num = s[1].num; 
    strcpy(name, s[1].name);
 } 
 main() 
 { 
    struct STU  s[2]={{"YY",10003},{"LL",10004}},*p; 
    p=s; 
    f(p->name, p->num); 
    printf("%s %d\n", p->name, p->num); 
 } 

A. *name
B. name[]
C. name
D. &name

正确答案:AB 我的答案:A

错误原因:在考虑传入指针时忽略了数组名作为形参被使用时可被当作指针处理,仅考虑了传入指针作为形参。

逐项分析:
A. 传入指向name数组的指针,默认指向首地址,可行。
B. 作为形参传入时数组名会退化为指针,默认为数组首地址,可行。
C. 显然不对,这是数组不是变量。
D. 传入时加&表示传递引用。而不是传入字符串,因此不行,修改为char* const&name后正确。

2.下列关于C/C++的宏定义的说法中,不正确的是:

A.宏定义的常量更容易理解,如果可以使用宏定义常量的话,要避免使用 const常量。
B.宏的嵌套定义过多会影响程序的可读性,而且很容易出错。
C.相对于函数调用,宏定义可以提高程序的运行效率。
D.宏定义不检查参数正确性,这样会有安全隐患。

正确答案:A 我的答案:D

错误原因:其实做的时候没审题,我以为问的是正确的一项,因为D对得不能再对了就直接选了,下次注意下次注意。

逐项分析:
首先在分析之前确定一件事:宏定义的工作原理。
在进行编译之前,编译器会将宏定义中的内容在你的代码里原封不动的进行替换。
没错,原封不动,你怎么写,他怎么替换,所以这就导致了宏定义不会管你参数对不对,语法出没出问题,嵌套是否过多等等,虽然这种直接替换有提高效率的好处,但是带来的问题也同样致命,所以谨慎使用。

A. 唯一错误的一项,基于之上所说的问题,在代码中尽量使用const定义常量,而谨慎使用宏定义去定义一些常量。
B. 之上解释过,不再赘述
C. 相对于函数调用,宏定义的确的可以减少程序的运行效率,宏定义在编译之前就对于代码内容进行替换,提升了运行效率,但同时存在以上的问题,所以谨慎使用。
D. 之上解释过,不再赘述。

3.在32位计算机中,下面输出是多少( ):

#include <iostream>
using namespace std;
typedef enum
{
 Char ,
 Short,
 Int,
 Double,
 Float,
}TEST_TYPE;
int main() {
 TEST_TYPE val;
 cout<< sizeof(val)<<endl;
        return 0;
}

A. 5
B. 4
C. 8
D. 12

正确答案:B 我的答案:D

错误原因:注意注意,千万注意,看代码看仔细了,我根本没看到enum,直接当成结构体算的。

分析:枚举类与结构体之间在内存大小上的区别就是,枚举类中的每个元素都只是整型常数,本质上是一组常数的集合体,只是这些常数有各自的命名。因此由它产生的每个枚举变量的大小都是一个整形的大小,也就是4。

4.若PAT是一个类,则程序运行时,语句“PAT(*ad)[3];”调用PAT的构造函数的次数是( )。

A. 2
B. 3
C. 0
D. 1

正确答案:C 我的答案:D

错误原因:我把PAT(*ad)[3]当成了一个结构体指针数组,结构体数组里面每个节点里面存指针,应该是三个指向结构体的指针。

分析:PAT(*ad)[3] 本质上是三个指向pat类型的名为ad的指针,所以构造函数调用次数为0。

5.在x86的机器上,int a=0xabcd1234 char b=((char*)&a)[0]请问b是多少?

A. 0xa
B. 0x4
C. 0xab
D. 0x34

正确答案: D 我的答案:C

错误原因:之前对于X86机器没什么了解,在看完解释后有了一定理解。X86机器为小端存储机,存储方式为低位0x34,而不是正常的0xab,至于为什么是两位,在正常环境中,int类型占4个字节,char类型占一个字节,也就是8位中取出两位,从后端取所以为0x34,在C++编译器中最后会显示为4(0x34的asci码表示为4)。

分析:如上。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
第一阶段 7 第一章 测试基础 7 1. 什么是软件测试: 7 2. ★软件测试的目的、意义:(怎么做好软件测试) 7 3.软件生命周期: 7 第二章 测试过程 8 1.测试模型 8 H模型: 8 V模型 9 2.内部测试 10 3外部测试: 10 验收测试:(在系统测试之后) 11 回归测试: 11 4.测试过程(干什么,怎么干) 12 5.各阶段输入、输出标准以及入口、出口准则:(测试阶段过程要素) 12 第三章 测试方法 14 测试方法对比 14 测试方法组合 16 第四章 软件质量 19 1.什么是软件质量 19 2.质量要素 19 3. 6大特性27个子特性ISO国际标准组织CMM/CMMI(Capability maturity model)能力程度度模型 19 4.CMMI把企业分为5个等级 22 5. CMM与CMMI的区别 23 第五章 SQL 24 约束: 29 1主键约束 29 2 非空约束 not null 30 3 外键约束 FOREIGN KEY 30 4 默认约束 31 5 检查约束 check 31 6 唯一约束 unique 32 SQL语句 32 创建数据库. 32 表、字段、类型 33 查询 35 批量理? 40 视图/虚表 view 41 索引 42 存储过程 procedure 42 事务 transaction 43 触发器 trigger 46 练习 46 一、单表查询练习 46 二、聚合函数练习 47 三、分组查询练习 47 四、嵌套查询练习 48 五、联接查询练习 48 六、外联接查询 48 七、补充提高 49 第六章 C语言 49 C语言中的存储 50 数据类型 50 常量 53 结构体 54 条件/分支逻辑 54 Switch 54 If 55 循环 55 For 55 while 56 do…while 56 函数 56 第七章 Windows环境搭建 59 一、名词注解与定义: 59 C/S 60 B/S 60 进销存系统 64 OA系统 69 第八章 需求管理 78 1.什么是需求 78 2. 需求工程在做什么 78 3. ★需求变更 78 4.★需求的跟踪 78 需求跟踪矩阵的作用: 78 需求的特点: 79 需求工程 79 变更控制流程图 82 第九章 缺陷管理 83 缺陷相关概念 83 缺陷管理相关概念 83 BUG管理基本流程: 84 BUG单 84 第十章 测试需求分析 86 概念: 86 ★如何做测试需求分析 86 ★UML统一建模语言(Unified Modeling Language) 86 第十一章 配置管理 88 1.什么是配置管理 88 2.配置管理流程 88 3.SVN实战 88 配置管理工具SVN操作过程手册 90 一、 如何创建“project”项目版本库 90 二、 如何查看创建的“project”项目版本库 95 三、 在版本浏览器里面,创建文件,并进行检出 99 四、 如何对该项目入基线 103 五、 分支文件进行合并 105 六、 分支冲突的解决 112 第十二章 系统测试 117 概念: 117 分类: 117 功能测试:(Function testing中国 Feature testing国际) 118 性能测试:(Sercarity testing) 118 安全性测试:(Security Testing) 118 安装测试 119 GUI测试(Graphical user interface) 120 可用性测试(Usability testing) 120 异常性测试 121 文档测试 121 备份测试 121 配置测试 121 网络测试 121 第十三章 用例设计 122 等价类 122 练习 122 1.1年龄注册 122 1.2.年龄注册 123 1.3.扩充 124 边界值 125 2.1.年龄 125 2.2.用户名注册 126 2.3.变量命名 127 2.4.进销存价格 127 2.5.Windows文件命名 127 总结 128 边界值 129 第十四章 系统测试执行 129 测试环境搭建文档: 130 用例执行: 130 填BUG报告: 130 第十五章 QC(Quality Center) 131 QC后台: 133 QC前台: 134 Requirements 需求模块 134 Test Plan 测试用例模块 135 Test Lab 测试执行模块 135 第十六章 PYTHON 137 Python的安装 137 Python的集成环境: 137 数据类型: 137 运算符: 137 缩进: 138 控制语句: 138 IF条件 138 WHILE循环 139 FOR循环 141 BREAK \ CONTINUE 141 函数 143 定义: 143 调用: 143 第十七章 单元测试 144 单元测试概念: 144 单元测试静态测试: 144 单元测试动态测试: 144 测试评价准则: 144 逻辑覆盖率 144 单元测试策略 145 ⑴ 孤立测试 145 ⑵自顶向下的单元测试策略 146 ⑶自底向上的单元测试方法 147 单元测试用例设计(基本路径覆盖法)★ (面试) 148 程序控制流图 148 单元测试执行 150 单元测试框架 151 第十八章 集成测试 153 第一阶段总结 155 Test platform 155 Bug的其他说法 155 第二阶段项目笔记 156 一.建立项目JXC 156 二.布置JXC 156 三.配置SVN 157 四.访问SVN 157 进销存项目 158 2011年10月20日 158 进销存项目总结 160 测试需求分析 160 1、定义测试范围 160 2、建立需求项 160 3、细化需求项 162 4、需求覆盖率分析 164 课前复习: 164 判定表 166 3.1.读书选择 166 3.2.Counter 168 3.3:word中的判定表举例 169 3.4.合并判定表 170 3.4.密码修改 171 3.5.进销存 173 3.6.总结 175 因果图 176 4.1.字母判定 177 4.2.自动售货机 179 课前复习: 180 状态迁移 181 5.1.飞机售票系统 181 5.2.缺陷跟踪 183 流程分析 184 6.1.理流程 185 6.2.系统登录 186 6.3.字母判断 187 6.4.组合查询 188 课前复习 191 正交试验 192 7.1.环境搭建 192 7.2.Counter 193 7.3.组合 193 7.4.环境搭建 195 其他 196 输入域 196 输出域 196 异常分析 196 错误猜测 196

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值