JD后端笔试复盘(24.3.30)

文章探讨了C++和C中的编程细节,包括空类占用字节数、C++向无参函数传参的差异、冷门的数组访问语法、以及C和C++中枚举类型的遍历区别。还提供了一个编程题,涉及两个数的操作序列以达到相等的目标。
摘要由CSDN通过智能技术生成

选择题

1. 空类对象占据字节数

class A {};
int main()
{
	A a;
	cout << sizeof(a) << endl;
}

输出1,即使空类没有数据成员和虚函数,它在内存中也必须占据一个字节的空间,以便确保每个对象都有独一无二的地址。名字是“空对象占位符(empty object placeholder)”,用于区分不同的对象。

2. C和C++向无参函数传参的区别

int func(void) {
	cout << "a" << endl;
}
int main() {
	func(2);
}

C++报错。因为C++定义的func函数需要一个参数,无法编译成功。
C是否报错存疑。网上一些解释说能够执行成功,因为C不会严格对传入参数数量进行检查。但我在一些C编译器上实验会报错。

3. 冷门的数组访问语法

int main() {
	int a[] = {10,20,30};
	cout << -2[a-1]<<endl;
}

返回-20。先不管负号。C++的下标运算符[]可交换,2[a-1]等价于a-1[2],a-1指向数组第一个元素前一个位置,向后移动两个元素指向20,再取负数得到结果。

4.枚举类型的遍历

enum Season
{
	SPR = 0,
	SUM,
	AUT,
	WIN,
} s;

int main()
{
	for (s = SPR; s <= WIN; s++)
	{
		cout<<s<<endl;
	}
}

以上程序会编译错误。C语言可以用s++来遍历。C++不能,应该改为:

enum Season
{
	SPR = 0,
	SUM,
	AUT,
	WIN,
} s;

int main()
{
	for (s = SPR; s <= WIN; s=(Season)(s+1))
	{
		cout<<s<<endl;
	}
}

输出0,1,2,3。

编程题

1. 输入两个数X和Y,可按照任意顺序执行以下两个操作:(1)X与Y交换;(2)X=X+Y,Y=X-Y。输出满足X=Y的最小操作次数。

思路:递归树

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值