【C++】笔试训练(四)

news2024/12/22 23:29:57

目录

  • 一、选择题
  • 二、编程题
    • 1、计算糖果
    • 2、进制转换

一、选择题

1、有以下程序,程序运行后的输出结果是()

#include<iostream>
#include<cstdio>
using namespace std;
int main() 
{
	int m = 0123, n = 123;
	printf("%o %o\n", m, n);
	return 0;
}

A 0123 0173
B 0123 173
C 123 173
D 173 173

答案:C
解析:二进制表现方式:101010b
八进制表现方式:0123
十进制表现方式:123
十六进制表现方式:0x123或123h
所以m是八进制,n是十进制
%d:以十进制方式输出
%o:八进制方式输出
%x:十六进制方式输出

2、以下哪个选项一定可以将flag的第二个bit置0()
A flag&=~2
B flag|=2
C flag^=2
D flag>>=2

答案:A
解析:假设flag的值是10,二进制是0000 1010,按位或是有1为1,按位与是有0为0,按位异或是相异为1,所以只有按位与可以,所以选择A。也可以把值带入选项计算,A计算为0000 1000,B计算为0000 1010,C计算为0000 0010,D计算为0000 0010

3、请声明一个指针,其所指向的内存地址不能改变,但内存中的值可以被改变。
A const int const *x = &y;
B int * const x = &y;
C const int *x = &y;
D int const *x = &y;
E const int * const x = &y;

答案:B
解析:常量指针:所指空间的值是一个常量,能改变指针的指向。
指针常量:不能改变指针的指向,但是可以指针解引用改变所指空间的值
区分:const在 * 左边就是常量指针,在 * 右边就是指针常量

4、以下C语言代码,运行结果是什么?

int a[5] = { 1,3,5,7,9 };
int* p = (int*)(&a + 1);
printf(% d, % d”, *(a + 1)* (p - 1));

A 2,1
B 3,1
C 3,9
D 运行时崩溃

答案:C
解析:数组名只有在 & 和sizeof之后,才表明是数组本身,&a也是一个地址,该地址类型为:int( * )[5],是一个数组指针,(&a + 1)取地址后,加1表示&a向后偏移5个整形元素的大小,所以指向数组的末尾,类型是一个数组指针类型,与p类型不同,所以强转为int *类型

5、二维数组X按行顺序存储,其中每个元素占1个存储单元。若X[4][4]的存储地址为Oxf8b82140,X[9][9]的存储地址为Oxf8b8221c,则X[7][7]的存储地址为()。
A Oxf8b821c4
B Oxf8b821a6
C Oxf8b82198
D Oxf8b821c0

答案:A
解析:假设数组X的起始地址为start,总共有M行,N列
&X[4][4] = start + 4 * N + 4 = 0xf8b82140
&X[9][9] = start + 9 * N + 9 = 0xf8b8221c
组成一个二元一次方程组
我们用第二种方式:
&X[4][4] = 0xf8b82140
&X[4][9] = 0xf8b82145
&X[9][9] = 0xf8b8221c
而X[4][9]和X[9][9]之间刚好相隔了5行
0xf8b8221c - 0xf8b82145 = 5 * N
D7 = 5 * N
所以5行中共有D7个元素,即有215个元素,N = 215/5 = 43,所以一行有43个元素
&X[7][7] = &X[7][9] - 2 -> &X[4][9] + 3 * 43 - 2
0xf8b82145 + 127 -> 0xf8b82145 + 0x7F = 0xf8b821c4

6、根据下面递归函数:调用函数Fun(2),返回值是多少()

int Fun(int n)
{
	if (n == 5)
		return 2;
	else
		return 2 * Fun(n + 1);
}

A 2
B 4
C 8
D 16

答案:D

7、以下程序的输出结果是:

#include <iostream>
using namespace std;
void func(char** m){
	++m;
	cout << *m << endl;
} 
int main() 
{
	static char* a[] = { "morning", "afternoon", "evening" };
	char** p;
	p = a;
	func(p);
	return 0;
}

A afternoon
B 字符o的起始地址
C 字符o
D 字符a的起始地址

答案:A
解析:数组名只有在 & 和sizeof之后,才表明是数组本身,所以数组的首元素是"morning",而这个"morning"的类型是char * ,要想p=a,p就必须给成二级指针,++m,指针就向后偏移一个位置,指向"afternoon"
在这里插入图片描述

8、求函数返回值,输入x=9999

int func(int x) 
{
	int count = 0;
	while (x)
	{
		count++;
		x = x & (x - 1);//与运算
	} 
	return count;
}

A 8
B 9
C 10
D 12

答案:A
解析:假设x = 7 -> 111
第一次循环:count++ --> count = 1,x = 7&6 = 111 & 110 = 110
第二次循环:count++ --> count = 2,x = 6&5 = 110 & 101 = 100
第三次循环:count++ --> count = 3,x = 4&3 = 100 & 000 = 000
所以func的功能是返回x中总共有多少个1
9999 -> 10 0111 0000 1111
所以有8个1,选A

9、下列程序执行后,输出的结果为()

#include <stdio.h>
int cnt = 0;
int fib(int n) {
	cnt++;
	if (n == 0)
		return 1;
	else if (n == 1)
		return 2;
	else
		return fib(n - 1) + fib(n - 2);
} 
void main() 
{
	fib(8);
	printf("%d", cnt);
}

A 41
B 67
C 109
D 177

答案:B

10、在32位系统环境,编译选项为4字节对齐,那么sizeof(A)和sizeof(B)是()

struct A
{
	int a;
	short b;
	int c;
	char d;
};
struct B
{
	int a;
	short b;
	char c;
	int d;
};

A 16,16
B 13,12
C 16,12
D 11,16

答案:C
解析:在这里插入图片描述
在这里插入图片描述

二、编程题

1、计算糖果

入口:题目链接

题目描述:
在这里插入图片描述

题目解析:
A,B,C是三个人手里的糖果数量,我们不知道A,B,C是多少?但是我们知道A - B, B - C, A + B, B + C的结果,这个结果题目是通过输入测试用例给我们的。所以本题本质是一个表达式求解问题。

解题思路:
1、A - B = a。2、B - C = b。 3、A + B = c。 4、B + C = d 这道题目的实质是:判断三元一次方程组是否有解及求解,1+3可以得到A=(a+c)/2;4-2可以得到C=(d-b)/2;2+4可以得到B2=(b+d)/2,3-1可以得到B1=(c-a)/2;
如果B1不等B2则表达式无解

代码展示:

#include <iostream>
using namespace std;

int main()
{
    int a, b, c, d;
    cin >> a >> b >> c >> d;
    int A = (a + c) / 2;
    int B1 = (b + d) / 2;
    int B2 = (c - a) / 2;
    int C = (d - b) / 2;
    if (B1 != B2)
    {
        cout << "No" << endl;
    }
    else
    {
        cout << A << " " << B1 << " " << C << endl;
    }

    return 0;
}

2、进制转换

入口:题目链接

题目描述:
在这里插入图片描述

题目解析:
将10进制的数转换成N进制。N(2 ≤ N ≤ 16)可以看出进制最多可以到16进制。

代码展示:

#include <iostream>
#include <string>
#include <algorithm>
using namespace std;

int main()
{
    string str, table = "0123456789ABCDEF";
    int m, n;
    cin >> m >> n;
    if (m == 0)
    {
        cout << 0 << endl;
    }
    bool flag = false;
    if (m < 0)
    {
        m = -m;
        flag = true;
    }

    while (m != 0)
    {
        str = str + table[m % n];
        m /= n;
    }
    if (flag == true)
    {
        str += "-";
    }
    reverse(str.begin(), str.end());
    cout << str << endl;
    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1069057.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

VR酒店虚拟仿真情景实训教学演示

在传统的酒店管理教学过程中&#xff0c;学生往往缺乏实践操作经验&#xff0c;难以将理论知识与实际工作相结合。而VR酒店虚拟仿真情景实训教学应用可以为学生提供一个逼真的、沉浸式的酒店管理环境&#xff0c;使学生能够在模拟实践中掌握酒店管理的各项技能。 VR酒店虚拟仿真…

【漏洞复现】时空智友企业流程化管控系统 session泄露

漏洞描述 时空智友企业流程化管控系统 session 泄露 免责声明 技术文章仅供参考&#xff0c;任何个人和组织使用网络应当遵守宪法法律&#xff0c;遵守公共秩序&#xff0c;尊重社会公德&#xff0c;不得利用网络从事危害国家安全、荣誉和利益&#xff0c;未经授权请勿利用…

【通义千问】Qwen从本地加载分词器报错‘‘tokenizer class not exist‘‘

问题描述&#xff1a; 将模型文件下载到本地&#xff0c; 模型文件>https://huggingface.co/Qwen/Qwen-7B-Chat/tree/main 通过【from_pretrained】去加载本地磁盘上的分词器 YOURPATH models/Qwen-7B-Chatname Qwen/Qwen-7B-Chat tokenizer AutoTokenizer.from_pretr…

windows RPC调用过程实例详解

概述&#xff1a;windows 创建 RPC调用过程实例详解 参考文章&#xff1a;Remote procedure call (RPC)&#xff08;远程过程调用 (RPC)&#xff09; - Win32 apps | Microsoft Learn 文章目录 0x01、生成 UUID 和模版(IDL)文件0x02、添加 acf 文件0x03、编译 idl 文件0x04、客…

Unity设计模式——装饰模式

装饰模式&#xff08;Decorator&#xff09;&#xff0c;动态地给一个对象添加一些额外的职责&#xff0c;就增加功能来说&#xff0c;装饰模式比生成子类更为灵活。 Component类&#xff1a; abstract class Component : MonoBehaviour {public abstract void Operation(); …

微信小程序 movable-area 区域拖动动态组件演示

movable-area 组件在小程序中的作用是用于创建一个可移动的区域&#xff0c;可以在该区域内拖动视图或内容。这个组件常用于实现可拖动的容器或可滑动的列表等交互效果。 使用 movable-area 组件可以对其内部的 movable-view 组件进行拖动操作&#xff0c;可以通过设置不同的属…

怎么防止重要文件夹丢失?文件夹安全如何保护?

我们在使用电脑的过程中&#xff0c;会将重要数据放在文件夹中&#xff0c;那么&#xff0c;我们该怎么防止重要文件夹丢失呢&#xff1f;下面我们就一起来了解一下。 EFS加密 EFS加密可以对于NTFS卷上的文件夹进行加密&#xff0c;加密后的文件夹将只允许加密时登录系统的用户…

Bigemap 在生态环境督察工作中的应用

工具 Bigemap gis office地图软件 BIGEMAP GIS Office-全能版 Bigemap APP_卫星地图APP_高清卫星地图APP 业务背景 用户是一家科技公司&#xff0c;业务线主要是配合省生态厅环境督察应用工作&#xff0c;他们技术人员先是基于卫星遥感去发现生态环境破坏问题线索&#xff…

详解SIFT、SURF和ORB特征点检测和描述算法

文章目录 0 引言1 SIFT算法1.1 主要目的1.2 主要步骤1.3 示例代码 2 SURF算法2.1 主要目的2.2 主要步骤2.3 示例代码 3 ORB算法3.1 主要步骤3.2 代码示例 4 三者对比 0 引言 本文主要对SIFT、SURF和ORB特征点检测和描述算法进行详细的学习和比较。 ⚠️ ⚠️ ⚠️ &#xff1a…

网站为什么一定要使用SSL证书?

在现代社会&#xff0c;随着互联网的快速发展&#xff0c;越来越多的人开始使用网络来完成日常生活中的各种任务。而在这个过程中&#xff0c;网站作为网络中最重要的组成部分之一&#xff0c;也逐渐成为了人们日常生活中的不可或缺的一部分。但是&#xff0c;随着网络攻击和数…

深入分析APK文件格式

前言 最近在升级项目的 Gradle 及 AGP 版本&#xff0c;在进行APK编辑再压缩时遇到了前后压缩比不一致的问题&#xff0c;所以抽空又一总结了下 APK (ZIP) 文件格式。 无论是使用 7z 进行包体积优化&#xff0c;或是快速构建多渠道包&#xff0c;又或是V2、V3签名等都是基于 …

问卷调查中常见问题及解决方法

随着技术和市场的日益发展&#xff0c;问卷调查已经成为了人们了解客户需求和反馈的一种必要手段。但是&#xff0c;问卷调查也面临着一些问题。在本文中&#xff0c;我们将探讨一些常见问题&#xff0c;问卷调查会遇到什么问题&#xff1f;怎么解决&#xff1f;并提供一些解决…

【斗破年番】火火抱彩鳞把她整害羞啦!女王解锁新造型,身形丰满超有料

Hello,小伙伴们&#xff0c;我是小郑继续为大家深度解析斗破年番系列。 斗破年番已经更新&#xff0c;这集的精彩程度可以说出乎预料。不论是节奏的把控&#xff0c;打戏的呈现还是氛围的营造都十分的出彩。尤其是在萧炎施展三千雷动时运用的三年之约时的BGM简直让观感体验瞬间…

审计和风控做什么——企业审计和风控工作的相同和不同

审计和风控是现代企业管理中两个重要的领域。它们在企业和社会组织的运营中发挥着重要作用。本文将探讨审计和风控的异同点。 一、审计和风控的定义 审计是指对一个组织或个人财务报表、业务过程、内部控制和风险管理等方面进行审核的活动。它的目的是发现潜在的问题、风险和控…

CUDA学习笔记2——CUDA程序基本框架

CUDA向量运算 CUDA程序的基本框架为&#xff1a; 头文件包含 常量定义/宏定义 C 自定义函数和CUDA核函数声明 int main(void) { 分配主机与设备内存 初始化主机中的数据 将部分数据从主机拷贝至设备 调用核函数在设备中进行计算 将部分数据从设备拷贝至主机 释放主机与设备内存…

采集网页数据保存到文本文件---爬取古诗文网站

访问古诗文网站&#xff08;https://so.gushiwen.org/mingju/&#xff09; 会显示出这个页面&#xff0c;里面包含了很多的名句&#xff0c;点击某一个名句&#xff08;比如点击无处不伤心&#xff0c;轻尘在玉琴&#xff09;就会出现完整的古诗 我们点击鼠标右键&#xff0c;点…

【C++设计模式之责任链模式:行为型】分析及示例

简介 责任链模式是一种行为型设计模式&#xff0c;它允许将请求沿着处理链传递&#xff0c;直到有一个处理器能够处理该请求。这种模式将请求的发送者和接收者解耦&#xff0c;同时提供了更高的灵活性和可扩展性。 描述 责任链模式由多个处理器组成一个处理链&#xff0c;每…

如何批量获取拼多多商品详情数据,拼多多商品详情API接口

批量获取拼多多商品详情数据可以采用以下方式&#xff1a; 使用拼多多开放平台API接口。 拼多多开放平台提供了API接口&#xff0c;可以通过API接口获取拼多多平台上的商品信息&#xff0c;使用API接口需要进行权限申请和认证&#xff0c;操作较为复杂。使用第三方工具。 市面…

Transformer预测 | Pytorch实现基于Transformer的锂电池寿命预测(NASA数据集)

文章目录 效果一览文章概述模型描述程序设计参考资料效果一览 文章概述 Pytorch实现基于Transformer 的锂电池寿命预测,环境为pytorch 1.8.0,pandas 0.24.2 随着充放电次数的增加,锂电池的性能逐渐下降。电池的性能可以用容量来表示,故寿命预测 (RUL) 可以定义如下: SOH(t…

网络安全(黑客)——自学篇

什么是网络安全&#xff1f; 网络安全可以基于攻击和防御视角来分类&#xff0c;我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术&#xff0c;而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 无论网络、Web、移动、桌面、云等哪个领域&#xff0c;都有攻…