牛客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。

相关内容

热门资讯

安卓子系统windows11,... 你知道吗?最近科技圈可是炸开了锅,因为安卓子系统在Windows 11上的兼容性成了大家热议的话题。...
电脑里怎么下载安卓系统,电脑端... 你有没有想过,你的电脑里也能装上安卓系统呢?没错,就是那个让你手机不离手的安卓!今天,就让我来带你一...
索尼相机魔改安卓系统,魔改系统... 你知道吗?最近在摄影圈里掀起了一股热潮,那就是索尼相机魔改安卓系统。这可不是一般的改装,而是让这些专...
安卓系统哪家的最流畅,安卓系统... 你有没有想过,为什么你的手机有时候像蜗牛一样慢吞吞的,而别人的手机却能像风一样快?这背后,其实就是安...
安卓最新系统4.42,深度解析... 你有没有发现,你的安卓手机最近是不是有点儿不一样了?没错,就是那个一直在默默更新的安卓最新系统4.4...
android和安卓什么系统最... 你有没有想过,你的安卓手机到底是用的是什么系统呢?是不是有时候觉得手机卡顿,运行缓慢,其实跟这个系统...
平板装安卓xp系统好,探索复古... 你有没有想过,把安卓系统装到平板上,再配上XP系统,这会是怎样一番景象呢?想象一边享受着安卓的便捷,...
投影仪装安卓系统,开启智能投影... 你有没有想过,家里的老式投影仪也能焕发第二春呢?没错,就是那个曾经陪你熬夜看电影的“老伙计”,现在它...
安卓系统无线车载carplay... 你有没有想过,开车的时候也能享受到苹果设备的便利呢?没错,就是那个让你在日常生活中离不开的iOS系统...
谷歌安卓8系统包,系统包解析与... 你有没有发现,手机更新换代的速度简直就像坐上了火箭呢?这不,最近谷歌又发布了安卓8系统包,听说这个新...
微软平板下软件安卓系统,开启全... 你有没有想过,在微软平板上也能畅享安卓系统的乐趣呢?没错,这就是今天我要跟你分享的神奇故事。想象你手...
coloros是基于安卓系统吗... 你有没有想过,手机里的那个色彩斑斓的界面,背后其实有着一个有趣的故事呢?没错,我要说的就是Color...
安卓神盾系统应用市场,一站式智... 你有没有发现,手机里的安卓神盾系统应用市场最近可是火得一塌糊涂啊!这不,我就来给你好好扒一扒,看看这...
黑莓平板安卓系统升级,解锁无限... 亲爱的读者们,你是否还记得那个曾经风靡一时的黑莓手机?那个标志性的全键盘,那个独特的黑莓体验,如今它...
安卓文件系统采用华为,探索高效... 你知道吗?最近安卓系统在文件管理上可是有了大动作呢!华为这个科技巨头,竟然悄悄地给安卓文件系统来了个...
深度系统能用安卓app,探索智... 你知道吗?现在科技的发展真是让人惊叹不已!今天,我要给你揭秘一个超级酷炫的话题——深度系统能用安卓a...
安卓系统的分区类型,深度解析存... 你有没有发现,你的安卓手机里藏着不少秘密?没错,就是那些神秘的分区类型。今天,就让我带你一探究竟,揭...
安卓系统铠无法兑换,揭秘无法兑... 最近是不是有很多小伙伴在玩安卓系统的游戏,突然发现了一个让人头疼的问题——铠无法兑换!别急,今天就来...
汽车安卓系统崩溃怎么刷,一键刷... 亲爱的车主朋友们,你是否曾遇到过汽车安卓系统崩溃的尴尬时刻?手机系统崩溃还能重启,但汽车系统崩溃了,...
miui系统可以刷安卓p系统吗... 亲爱的手机控们,你是否对MIUI系统情有独钟,同时又对安卓P系统的新鲜功能垂涎欲滴?今天,就让我带你...