牛客C/C++刷题笔记(三)
创始人
2025-06-01 04:38:03
0

60、下面哪个操作符不能重载()
在这里插入图片描述
61、若调用fputc函数输出字符成功,则其返回值是()
在这里插入图片描述

fgetc函数——读成功,返回所读的字符,失败返回文件结束标志EOF(-1);
fputc函数——输出成果,返回值就是输出的字符,失败返回EOF;
fgets函数——读成功,返回地址str,失败返回NULL;
fputs函数——输出成果,返回0,失败返回非0;

62、如果有int a=5,b=3,在执行 !a&&b++; 后a和b的值分别是()
在这里插入图片描述

&&左边是0 则不运行右边的
a = 5,在逻辑上非0即1,逻辑非之后就是0.
&&运算符具有短路现象,只要出现一个0,那么就全0了,所以后面的b++是没有计算的。
a还是5,b还是3

63、在一个16位的机器,以下结构由于边界对齐浪费了多少空间()

struct{char a;int b;char c;
}

在这里插入图片描述
64、使用fseek函数可以实现的操作是( )
在这里插入图片描述

int fseek( FILE *stream, long offset, int origin );
1.第一个参数stream为文件指针;2. 第二个参数offset为偏移量,整数表示正向偏移,负数表示负向偏移;3. 第三个参数origin设定从文件的哪里开始偏移,可能取值为:SEEK_CUR当前位置、 SEEK_END文件结尾 或 SEEK_SET文件开头

65、若变量已正确定义并赋值,下面符合C语言语法的表达式是()
在这里插入图片描述

A选项:唯一的三目运算符是A:B?C:D
B选项:将C+2的值赋给b,再将b的值赋给a
C选项:只有整形变量才能用取值运算符
D选项:表达式不能用作赋值运算符的左值,将赋值运算符从右到左看,a+7=c+b a+7是表达式用作了左值,故错误

66、以下叙述中正确的是()
在这里插入图片描述

C 语言程序可以不包含三种基本结构 , 也可以包含其中的一种或多种 , 所以 A 错误。三种基本结构可以表示任何复杂的算法 , 所以 C 错误。正确的算法 , 不管是简单算法还是复杂算法都可以在有限的操作步骤之后结束 , 这是算法的有穷性 , 所以 D 错误。

67、a=(b=4)+(c=6) 是一个合法的赋值表达式。请问这句话的说法是正确的吗?
在这里插入图片描述
68、在C的文件操作中,可以利用 fseek 函数进行文件指针的随机定位
在这里插入图片描述
69、已知 int 占 4 个字节,bool 占 1 个字节。对于下面代码:

#include 
using namespace std;int main(int argc, char** argv) {unsigned int value = 1024;bool condition = *((bool*)(&value));if (condition) value += 1; condition = *((bool*)(&value));if (condition) value += 1; condition = *((bool*)(&value));
}

value, condition 的结果为()
在这里插入图片描述

value 的十六进制表示为 0x00000400,将其转化为 bool 类型,在大端的情况下取左边的两个 0 赋给 condition,在小段的情况下取右边的两个 0 赋值给 condition,因此 condition 为 false。所以两个 if 条件都不会执行。value, condition 最终为 1024 和 0。D 选项正确。

70、C 语言程序中的基本功能模块为( )?
在这里插入图片描述

c语言是借助于函数来实现模块化的

71、在32位操作系统中,我们定义如下变量 int (*n)[10]; 请问调用函数sizeof(n),返回值为()
在这里插入图片描述

正确答案:A
n 是指针变量,不论指针变量的类型是什么,在同一个平台下大小都一样。在 32 位操作系统中占 4 个字节,在 64 位操作系统中占 8 个字节。

72、下列程序的输出结果是( )

int main() {int x = 1, y = 0, a = 0, b = 0;switch(x) {case 1:switch(y) {case 0:a++;break;case 1:b++;break;}case 2:a++;b++;break;case 3:a++;b++;break;}printf("a=%d,b=%d\n", a, b);
}

在这里插入图片描述

case1:switch(y)内部break后a=1,b=0,但是外部没有break。 于是继续执行case2:a=2,b=1.break结束

72、关于操作系统heap与stack说法中,正确的是()。
在这里插入图片描述

在堆上分配内存
可能许多人对内存分配上的“栈 stack ”和“堆 heap ”还不是很明白。包括一些科班出身的人也不明白这两个概念。简单的来讲, stack 上分配的内存系统自动释放, heap 上分配的内存,系统不释放,哪怕程序退出,那一块内存还是在那里。 stack 一般是静态分配内存, heap 上一般是动态分配内存。
由 malloc 系统函数分配的内存就是从堆上分配内存。从堆上分配的内存一定要自己释放。用 free 释放,不然就是术语——“内存泄露”(或是“内存漏洞”)—— Memory Leak 。于是,系统的可分配内存会随 malloc 越来越少,直到系统崩溃。还是来看看“栈内存”和“堆内存”的差别吧。

73、在上下文及头文件均正常的情况下,写出下列程序所有可能的运行结果。

int a;
int b;
int c;void F1(){b = a * 2;a = b;
}void F2(){c = a + 1;a = c;
}int main(){a = 5;// !!! Start F1(),F2() in parallel{F1();F2();}printf("%d\n", a);
}

在这里插入图片描述

74、有如下代码,则 z 的结果为()

int a = 5, b = 6, c = 12;
int z = (a * b - c) / a;

在这里插入图片描述

(a * b - c) / a; 代码执行如下:
1.先执行 a * b,结果为 30;
2.执行 30 - c,结果为 18;
3.执行 18 / 5,结果为整数,结果为 3。

75、下面代码段的结果为()

int a = 1;
int b = 1;
a += b++;
b += ++a;

在这里插入图片描述

第一步,初始化a=1,b=1
第二步,a+=b++,b++是后缀加法,先运算再加,即先执行a = (a+b) =(1+1) = 2,再b = b+1=2,此时a=2,b=2
第三步,b+=++a,++a是前缀加法,先加再运算,即先执行a=a+1=3,再b=b+a=2+3=5,最终a=3,b=5

76、int *p[4] 与选择项中的() 等价
在这里插入图片描述

[]优先级比高,因此p先和[]结合,表明p是一个数组,且含有4个元素,然后再和结合,表明数组元素为指针,最后指明指针指向的是int类型的数据,因此等价为int *(p[4])也就是指针数组,而如果是int (*p)[4]那就是数组指针 本题答案C

77、下面选项中关于位运算的叙述正确的是()
在这里插入图片描述

b 按位取反一个操作数
c 左移一位才是2倍
d 负数补1

78、在 C 语言中,C99除外,一维数组的定义方式为:元素类型 数组名[E];E 为( )。
在这里插入图片描述

这里是引用
79、若有#define S(a,b) a*b,则语句area=S(3,2);,area 的值为6。请问这句话的说法是否正确?

在这里插入图片描述
80、在执行以下程序时,为使输出结果为:t=4,则给a和b输入的值应满足的条件是()

int main(void) {int a,b,s,t;scanf("%d,%d",&a,&b);s = 1; t = 1; if(a > 0) s = s + 1;if(a > b) t = s + t;else if(a == b) t = 5;else t = 2 * s;printf("t=%d\n",t);return 0;
}

在这里插入图片描述
81、下列语句中,不正确的是( )
在这里插入图片描述

字符’1’、‘2’对应的ASCII码为整型数字

82、下列程序的输出结果是

#include
#include
#include
using namespace std;
int main(){char p1[10] = "abcd", *p2, str[10] = "xyz";  p2 = "ABCD";strcpy(str + 2, strcat(p1 + 2, p2 + 1));printf(" %s", str);
}

在这里插入图片描述

strcat(p1 + 2, p2 + 1) 表示将p2+1所指字符串"BCD"拼接在"cd"字符串后面形成"cdBCD"; strcpy(str + 2, “cdBCD”); 将字符串拷贝到str +2 的未知形成"xycdBCD"

83、设x、y、t均为int型变量,则执行语句:

t = 3;x = y = 2;t = x++ || ++y; 

后,变量t和y的值分别为____

在这里插入图片描述

按照优先级原则来说: t=x++||++y; 先执行 x++ 然后执行||,最后执行=。由于x=2 根据逻辑运算符可知x++ 理解为true,根据短路运算符可知++y不会执行了。根据逻辑运算可知x++||++y 返回1,则可知t=1;y没有执行,y=2

84、下列程序段的输出结果为( )

int a = 7, b = 9, t;
t = a *= a > b ? a : b;
printf("%d",t);

在这里插入图片描述

85、已知 声明并初始化二维数组

int a[ ][2] = {{1, 2}, {3, 4}, {5, 6}} 

则 a[1][1] 的值为()
在这里插入图片描述
86、以下程序的输出结果是( )

#include 
int main() {unsigned char a = 235;unsigned char b = ~a;unsigned char c = b >> 1;printf(“%d”, c);
};

在这里插入图片描述

将10进制转换为2进制,a=1110 1011; b=~a=0001 0100; c=b>>1=0000 1010。最后转成10进制就是c=10

87、printf函数中用到格式符%5s,其中数字5表示输出的字符串占用5列,如果字符串长度大于5,则输出按方式( )
在这里插入图片描述

1:字符串长度比设定长度大就按字符串实际长度输出;
2:字符串长度比设定长度小就按右对齐输出该字串,左补空格。
3:如果数字之前有-,即%-5s表示左对齐输出

88、()运算符把其操作数中所有值为0和所有值为1的位分别在结果的相应中设置1和0
在这里插入图片描述
89、下列程序的输出结果是

#include 
using namespace std;
void f() {static int i = 15;i++;cout << "i=" << i << endl;
}
int main(void){for(int k = 0;k < 2;k++) f();
}

在这里插入图片描述

 static 修饰的变量只初始化一次, 当下一次执行到这一条语句的时候,直接跳过

90、已知程序如下:

int S(int n) {return (n<=0) ? 0 : s(n-1)+n;
}void main() {cout<< S(1);
}

程序运行时使用栈来保存调用过程的信息,自栈底到栈顶保存的信息依次对应的是 ()
在这里插入图片描述

c程序总是从main()函数开始的,然后就开始执行s(1),最后s(0),因为栈是先进后出,所以从栈底到栈顶就是mian()->s(1)->s(0)

91、请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。该程序的功能是将形参n所指变量中,各位上为奇数的数去掉,剩余的数按原来从低位到高位的顺序组成一个新数。

unsigned long fun(unsigned long n)
{unsigned long x = 0; int t;while (n){t = n % 10;/********** found **********/if (t % 2 == _______)/********** found **********/x = _____ + t;/********** found **********/n = _______;}return x;
}

在这里插入图片描述

该程序的功能是将形参n所指变量中,各位上为奇数的数去掉,剩余的数按原来从低位到高位的顺序组成一个新数,并通过形参指针n传回所指变量。 例如,若输入一个数27638496,则新数为64862。 1,这里判断是否是偶数,所以判断%2是否为0 2,x为保存的偶数,每次扩大10倍加上个位数 3,数字n每次去掉个位数,继续循环

92、十进制数50表示成符合C语言规定的八进制数为________。
在这里插入图片描述

二进制由 0 和 1 两个数字组成,使用时必须以0b或0B(不区分大小写)开头
八进制由 0~7 八个数字组成,使用时必须以0开头
十六进制由数字 0~9、字母 A~F 或 a~f(不区分大小写)组成,使用时必须以0x或0X(不区分大小写)开头

93、32位机器上定义如下结构体:

struct xx {long long _x1;char _x2;int _x3;char _x4[2];static int _x5;
};
int xx::_x5;

在这里插入图片描述

结构体总的大小要被最大的整除
首先_x5是静态变量可以不用管它,其次是要考虑字节对齐的问题。
此时总长度为(8)+(1+3)+(4)+(2)=18,而最大简单类型为long long长度为8,因此需要在x4之后再填充6字节,使得总长度达到24可被8整除。因此sizeof(xx)的结果为24。

相关内容

热门资讯

【MySQL】锁 锁 文章目录锁全局锁表级锁表锁元数据锁(MDL)意向锁AUTO-INC锁...
【内网安全】 隧道搭建穿透上线... 文章目录内网穿透-Ngrok-入门-上线1、服务端配置:2、客户端连接服务端ÿ...
GCN的几种模型复现笔记 引言 本篇笔记紧接上文,主要是上一篇看写了快2w字,再去接入代码感觉有点...
数据分页展示逻辑 import java.util.Arrays;import java.util.List;impo...
Redis为什么选择单线程?R... 目录专栏导读一、Redis版本迭代二、Redis4.0之前为什么一直采用单线程?三、R...
【已解决】ERROR: Cou... 正确指令: pip install pyyaml
关于测试,我发现了哪些新大陆 关于测试 平常也只是听说过一些关于测试的术语,但并没有使用过测试工具。偶然看到编程老师...
Lock 接口解读 前置知识点Synchronized synchronized 是 Java 中的关键字,...
Win7 专业版安装中文包、汉... 参考资料:http://www.metsky.com/archives/350.htm...
3 ROS1通讯编程提高(1) 3 ROS1通讯编程提高3.1 使用VS Code编译ROS13.1.1 VS Code的安装和配置...
大模型未来趋势 大模型是人工智能领域的重要发展趋势之一,未来有着广阔的应用前景和发展空间。以下是大模型未来的趋势和展...
python实战应用讲解-【n... 目录 如何在Python中计算残余的平方和 方法1:使用其Base公式 方法2:使用statsmod...
学习u-boot 需要了解的m... 一、常用函数 1. origin 函数 origin 函数的返回值就是变量来源。使用格式如下...
常用python爬虫库介绍与简... 通用 urllib -网络库(stdlib)。 requests -网络库。 grab – 网络库&...
药品批准文号查询|药融云-中国... 药品批文是国家食品药品监督管理局(NMPA)对药品的审评和批准的证明文件...
【2023-03-22】SRS... 【2023-03-22】SRS推流搭配FFmpeg实现目标检测 说明: 外侧测试使用SRS播放器测...
有限元三角形单元的等效节点力 文章目录前言一、重新复习一下有限元三角形单元的理论1、三角形单元的形函数(Nÿ...
初级算法-哈希表 主要记录算法和数据结构学习笔记,新的一年更上一层楼! 初级算法-哈希表...
进程间通信【Linux】 1. 进程间通信 1.1 什么是进程间通信 在 Linux 系统中,进程间通信...
【Docker】P3 Dock... Docker数据卷、宿主机与挂载数据卷的概念及作用挂载宿主机配置数据卷挂载操作示例一个容器挂载多个目...