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

目录

  • 一、选择题
  • 二、编程题
    • 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;elsereturn 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;elsereturn 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.mzph.cn/news/100103.shtml

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

相关文章

【数据结构】栈和队列-- OJ

目录 一 用队列实现栈 二 用栈实现队列 三 设计循环队列 四 有效的括号 一 用队列实现栈 225. 用队列实现栈 - 力扣&#xff08;LeetCode&#xff09; typedef int QDataType; typedef struct QueueNode {struct QueueNode* next;QDataType data; }QNode;typedef struct …

IntelliJ IDEA失焦自动重启服务的解决方法

IDEA 热部署特性 热部署&#xff0c;即应用正属于运行状态时&#xff0c;我们对应用源码进行了修改更新&#xff0c;在不重新启动应用的情况下&#xff0c;可以能够自动的把更新的内容重新进行编译并部署到服务器上&#xff0c;使修改立即生效。 现象 在使用 IntelliJ IDEA运…

2023品牌新媒体矩阵营销洞察报告:流量内卷下,如何寻找增长新引擎?

近年来&#xff0c;随着移动互联网的发展渗透&#xff0c;短视频、直播的兴起&#xff0c;新消费/新零售、兴趣电商/社交电商等的驱动下&#xff0c;布局线上渠道已成为绝大多数品牌的必然选择。 2022年&#xff0c;越来越多的品牌加入到自运营、自播的行列中&#xff0c;并且从…

golang gin——controller 模型绑定与参数校验

controller 模型绑定与参数校验 gin框架提供了多种方法可以将请求体的内容绑定到对应struct上&#xff0c;并且提供了一些预置的参数校验 绑定方法 根据数据源和类型的不同&#xff0c;gin提供了不同的绑定方法 Bind, shouldBind: 从form表单中去绑定对象BindJSON, shouldB…

【ONE·C++ || 异常】

总言 主要介绍异常。 文章目录 总言1、C异常1.1、C语言传统的处理错误的方式1.2、异常概念1.3、异常的基本用法1.3.1、异常的抛出和捕获1.3.1.1、异常的抛出和匹配原则1.3.1.2、 在函数调用链中异常栈展开匹配原则 1.3.2、异常的重新抛出1.3.2.1、演示一1.3.2.2、演示二 1.3.3…

【20】c++设计模式——>组合模式

组合模式定义 C组合模式&#xff08;Composite Pattern&#xff09;是一种结构型设计模式&#xff0c;他允许将对象组合成树形结构来表示“部分-整体”的层次结构&#xff1b;在组合模式中有两种基本类型的对象&#xff1a;叶子对象和组合对象&#xff0c;叶子对象时没有子对象…

C++11 Qt QFutureWatcher lambda

目录 Lambda 介绍 【QT】Qt之QFutureWatcher 简述 传参&#xff1a; 还可以使用 QProgressDialog 作为阻堵 函数&#xff0c;变成同步&#xff1b; 完成后&#xff0c;关闭&#xff1b; MyQProgressDialog 效果&#xff1a; Lambda 介绍 Lambda 函数也叫匿名函数&…

VueRouter与expres/koa中间件的关联

ueRouter: runQueue 路由守卫都是有三个参数to,from,next。其中next就是下方的fn执行时候传入的第二个参数(回调函数)&#xff0c;只有该回调执行后才会挨个遍历queue内的守卫。 中间件的作用 隔离基础设施与业务逻辑之间的细节。详细的内容位于《深入浅出Node.js》P210 另外一…

mysql面试题30:什么是数据库连接池、应用程序和数据库建立连接的过程、为什么需要数据库连接池、你知道哪些数据库连接池

该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:什么是数据库连接池? 数据库连接池是一种用于管理和复用数据库连接的技术。它是在应用程序和数据库之间建立一组数据库连接,并以池的形式存储起…

Oracle笔记-对ROWNUM的一次理解(简单分页)

此博文记录时间&#xff1a;2023-05-05&#xff0c;发到互联网上是2023-10-09 这个在分页里面用得比较多&#xff0c;在MySQL中&#xff0c;通常使用limit去操作&#xff0c;而去感觉比较简单&#xff0c;Oracle中无此关键字。 通过查阅资料后&#xff0c;要实现分页需要用到…

对于使用win32 API获取性能计数器的理解

微软提供了获取性能计数器的接口&#xff0c;如下 LSTATUS RegQueryValueExA([in] HKEY hKey,[in, optional] LPCSTR lpValueName,LPDWORD lpReserved,[out, optional] LPDWORD lpType,[out, optional] LPBYTE lpData,[in, out, optional] L…

dubbo协议与triple协议的对比

分别使用dubbo协议和triple协议&#xff0c;按照官方文档搭建Demo。 两个流程对比下来发现&#xff0c;dubbo协议搭建起来比较简单直接&#xff0c;定义好接口&#xff0c;实现类&#xff0c;然后启动provider和consumer就完事了。而triple协议则需要先定义proto文件 然后增加…

Visual Leak Detector内存泄漏检测机制源码剖析

VC常用功能开发汇总&#xff08;专栏文章列表&#xff0c;欢迎订阅&#xff0c;持续更新...&#xff09;https://blog.csdn.net/chenlycly/article/details/124272585C软件异常排查从入门到精通系列教程&#xff08;专栏文章列表&#xff0c;欢迎订阅&#xff0c;持续更新...&a…

每日leetcode_2441_对应负数同时存在的最大整数

Leetcode每日一题_2441_对应负数同时存在的最大整数 记录自己的成长&#xff0c;加油。 题目 解题 class Solution {public int findMaxK(int[] nums) {int k -1;Set<Integer> set new HashSet<Integer>();for (int x : nums) {set.add(x);}for (int x : nums) …

Spark 9:Spark 新特性

Spark 3.0 新特性 Adaptive Query Execution 自适应查询(SparkSQL) 由于缺乏或者不准确的数据统计信息(元数据)和对成本的错误估算(执行计划调度)导致生成的初始执行计划不理想&#xff0c;在Spark3.x版本提供Adaptive Query Execution自适应查询技术&#xff0c;通过在”运行…

通过位运算,实现单字段标识多个状态位

可能经常有如下这种需求: 需要一张表,来记录学员课程的通过与否. 课程数量不确定,往往很多,且会有变动,随时可能新增一门课. 这种情况下,在设计表结构时,一门课对应一个字段,就有些不合适, 因为不知道课程的具体数量,也无法应对后期课程的增加. 考虑只用一个状态标志位,利用位运…

C/C++实现简单高并发http服务器

基础知识 html&#xff0c;全称为html markup language&#xff0c;超文本标记语言。 http&#xff0c;全称hyper text transfer protocol&#xff0c;超文本传输协议。用于从万维网&#xff08;WWW&#xff1a;World Wide Web&#xff09;服务器传输超文本到本地浏览器的传送…

6-3 递增的整数序列链表的插入 分数 5

List Insert(List L, ElementType X) {//创建结点List node (List)malloc(sizeof(List));node->Data X;node->Next NULL;List head L->Next; //定位real头指针//空链表 直接插入if (head NULL) {L->Next node;node->Next head;return L;}//插入数据比第…

嵌入式养成计划-38----C++--匿名对象--友元--常成员函数和常对象--运算符重载

八十七、匿名对象 概念&#xff1a;没有名字对象格式 &#xff1a;类名&#xff08;&#xff09;;作用 用匿名对象给有名对象初始化的用匿名对象给对象数组初始化的匿名对象作为函数实参使用 示例 : #include <iostream> using namespace std; class Dog { private:s…

在Kubernetes中实现gRPC流量负载均衡

在尝试将gRPC服务部署到Kubernetes集群中时&#xff0c;一些用户&#xff08;包括我&#xff09;面临的挑战之一是实现适当的负载均衡。在深入了解如何平衡gRPC的方式之前&#xff0c;我们首先需要回答一个问题&#xff0c;即为什么需要平衡流量&#xff0c;如果Kubernetes已经…