C++刷题日常

120 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第N天,点击查看活动详情 第八题🎇C++笔试强训

分享给大家一句我很喜欢的话:夜色难免微凉,前方必有曙光 🌞。

💦 🔥

选择题 💦 第一题 十进制变量i的值为100,那么八进制的变量i的值为()

A 146 B 148 C 144 D 142

这道题非常简单,就是十进制转八进制,和十进制转二进制一样

这道题的答案是C

💦 第二题 执行下面语句后的输出为

int I=1; if(I<=0) printf("****\n") ; else printf("%%%%\n"); 1 2 3 4 5 A %% B **** C 有语法错,不能正确执行 D %%%%

这道题一看就知道是打印else的结果,但是这里printf打印的内容有点特殊

如果我们需要输出%,则需要写入双%

这道题的答案是A

💦 第三题 对于下面的C语言声明描述正确的一项是()

char (*p)[16] 1 A p是长度为16的字符指针数组 B p是包含16个字符的字符串 C p是指向长度为16的字符数组的指针 D p是长度为16的字符数组

这道题主要是考验指针和数组的理解

这道题的答案是C

💦 第四题 数组a的定义语句为“float a[3][4];”,下列()是对数组元素不正确的引用方法

A a[i][j] B *(a[i]+j) C ((a+i)+j) D (a+i4+j)

这道题主要是考验数组转换型式

这里我们用一维数组来举例

A 是对数组最直接的访问方式

B 把二维数组可以理解成a中的每个元素都是一个一维数组

C 实际上和B是等价的,一样的转换方式

D a表示数组首元素地址,i*4的应该是想拿第i行的,但实际含义说不通,并不是这样取的

这道题的答案是D

💦 第五题 下面程序的输出结果是__________。

#include < iostream.h> #define SQR(A) A*A void main() { int x=6,y=3,z=2; x/=SQR(y+z)/SQR(y+z); cout< < x< < endl; }

1 2 3 4 5 6 7 8 A 5 B 6 C 1 D 0

我们的程序如果想运行起来会经历 预处理 编译 汇编 链接

这道题需要注意的是不要用我们常用的数学逻辑来分析,我们需要全部展开才能计算,不能直接进行计算

这道题的答案是D

💦 第六题 当n=5时,下列函数的返回值是()

int foo(int n){ if(n<2){ return n; } else return 2*foo(n-1)+foo(n-2); } 1 2 3 4 5 6 7 A 5 B 11 C 29 D 10

这道题是考察递归算法的理解,我们需要逐步拆解分析,题目并不难只需要耐心分析即可

这道题的答案是C

💦 第七题 以下对C语言的”指针“描述不正确的是()

A 32位系统下任何类型指针的长度都是4个字节 B 指针的数据类型声明的是指针实际指向内容的数据类型 C 野指针是指向未分配或者已释放的内存地址 D 当使用free释放掉一个指针内容后,指针变量的值被置为NULL

这道题在笔试强训第一天的时候有遇到过

A 指针的长度指的是指针占的大小,32位是4字节,如果是64位就是8字节

B 假设int* p ;p将来指向int类型的空间,这句话就是这个含义

C 野指针即你指向的空间的值你不能用,C没有问题

D free只是将指向的内存空间释放掉,不会将内存置为空

这道题的正确答案是D

💦 第八题 数组定义为”int a[4][5];”, 引用”*(a+1)+2″表示()(从第0行开始)

A a[1][0]+2 B a数组第1行第2列元素的地址 C a[0][1]+2 D a数组第1行第2列元素的值

这里和上面的第四题类似

实际上就是一维数组的第二个值

这道题的正确答案是B

💦 第九题 有一个如下的结构体:

struct A{ long a1; short a2; int a3; int *a4; }; 1 2 3 4 5 6、