C++的练习路1C++的选择题练习
Posted Guerrouj
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++的练习路1C++的选择题练习相关的知识,希望对你有一定的参考价值。
虽然是C++的练习题,但还是掺杂了不少C的内容,并且许多内容为基础选项,整体来说学的比较差劲。
下面来进行解析
第一题

解析
该题定义了结构体ss的对象数组:std,大小为3,然后定义结构体指针p指向std数组,问下面哪个错误。 首先第一个我没复习结构体,第二个对%d,%s,%c很晕,感觉选B的原因是&std应该是指整个数组,并没有指向哪个对象,所以.name将出现错误。参考 链接中的回复,给出的解释为: std为数组名,不能用.而应该用->解引用收元素,如果采用&(std->name)则可行。
接下来为解惑时间 1,关于一堆%号的回忆 很久没看C了,对这种定义基本忘记了;经查阅,该符号为转换说明符,表明输入输出的形式。 %c表示字符,%s表示字符串,%d表示有符号十进制整数,%f表示浮点数,%p表示指针
2,结构体的学习 由于手头的书主要涉及C++的内容,内部包含不多,有些许遗漏,后续需要阅读C++Primer等书籍进行补充 涉及主要知识点有: ①结构变量所占的内存空间大小为结构中所有成员变量大小之和 ②结构变量的成员变量访问形式为: 结构变量名.成员变量名 ③可以定义指向结构变量的指针 定义形式为:结构名*指针变量名; 综合上面两点,可以知道&std并不是一个结构变量,因此错误!
第二题

当然,使用它进行打印操作则将出现乱码的现象。 这里提一下用VS2017编译C的形式和可能碰到的问题 1,如何编译C程序 新建->选择空项目->加入.c文件 2,黑洞窗口一闪而过 点击项目,在项目中的属性下拉列表中选择系统选项卡,点击控制台并应用后即可解决该问题

第三题

第四题

第五题

第六题
这道题我当时是蒙的,原因是连%d是干嘛用的都忘了:%xx为转义说明符,具体见上。
该题首先定义了两个字符串数组:str1和str2,与两个char类型指针p1,p2,共同指向abc字符串。
------------------------------------------------------------------------
为什么会出现前两个不同后两个相同的现象呢?
这是因为内容存放在不同片区的内存空间所导致:
前两个是字符数组,定义在栈上,明显地址不同 ;
字符串常量定义在静态区,仅有一份拷贝,所以后面两个指针指向的地址相同 。
第七题
求输出#include<stdio.h>
int main()
char *str[3] = "stra","strb","strc" ;
char*p = str[0];
int i = 0;
while (i < 3)
printf("%s", p++);
i++;
return 0;
复习一下字符串数组的内容:
char类型对指针的处理与int等类型的处理存在较大的不同,对于其他数组而言,数组的名称即为该数组的起始地址;然而直接将char类型的名字用于输出,则将输出对应的数组元素;如果要禁用这一功能,在C++里可以通过强制类型转换得到结果。
----------------------------------------------------------------------------
说一下题,这道题做错源自于对指针的恐惧感,看到char*str[3]中又有char*又有数组,有点犯怵。其实还是一样的剥笋套路:
char *str[3]为包含有三个字符串的数组指针,*str[0]指向"stra".....
定义完char *str[3]后,使char*p指向str[0]。
进入循环部分:
该循环共运行三次(一次起始,两次判断)
第一次循环,打印p的内容:stra
第二次循环,打印p+1的内容tra
第三次循环,打印p+2的内容ra
所以选
stra tra ra
第八题

第九题

第十题

首先补充一下取值范围 short的取值范围为-2^15到2^15-1 long的取值范围为-2^31~2^31-1 unsigned int与long 的取值范围为0~2^32-1 unsigned short的范围为0~2^16-1 2^16=65536
第二:求解 这是一个跑圈追赶的问题:过了一个循环才追上 所以:5k+65536=7k+2
同理,第二问:3+3k+65536=7+7k
第十一题

关于 new[] 和 delete[],其中又分为两种情况:(1) 为基本数据类型分配和回收空间;(2) 为自定义类型分配和回收空间。
基本类型的对象没有析构函数, 所以回收基本类型组成的数组空间用 delete 和 delete[] 都是应该可以的;但是对于类对象数组,只能用 delete[]。
第十二题

第十三题

该部分对内联函数仍然不是很了解,需要进行继续拓展!
以上是关于C++的练习路1C++的选择题练习的主要内容,如果未能解决你的问题,请参考以下文章