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

news2024/11/20 4:39:51

目录

  • 一、选择题
  • 二、编程题
    • 1、统计回文
    • 2、连续最大和

一、选择题

1、在上下文和头文件均正常情况下,以下程序的输出结果是()

int x = 1;
do 
{
	printf("%2d\n", x++);
} while (x--);

A 1
B 无任何输出
C 2
D 陷入死循环

答案:D

2、定义char dog[]=“wang\0miao”;那么sizeof(dog)与strlen(dog)分别是多少()
A 10,4
B 4,4
C 9,9
D 9,4

答案:A
解析:sizeof() 求变量所对应类型占的字节数,strlen() 求字符串的有效长度,不包括\0在内

3、下列程序的打印结果是()

char p1[15] = "abcd", * p2 = "ABCD", str[50] = "xyz";
strcpy(str + 2, strcat(p1 + 2, p2 + 1));
printf("%s", str);

A xyabcAB
B abcABz
C ABabcz
D xycdBCD

答案:D
解析:strcpy(p,q):将q字符串中的内容拷贝到p所在的空间中,最后返回p,注意:p的空间大小一定要能够存的下q中的字符总数
strcat(p,q):将q的字符串中的内容拼接在p字符串之后,最终返回p,注意:p空间一定要能够容纳下拼接进来的字符

4、下面程序的输出结果是()

#include <iosteam.h>
void main() 
{
	int n[][3] = { 10,20,30,40,50,60 };
	int(*p)[3];
	p = n;
	cout << p[0][0] << "," << *(p[0] + 1) << "," << (*p)[2] << endl;
}

A 10,30,50
B 10,20,30
C 20,40,60
D 10,30,60

答案:B
解析:int(*p)[3]; 是一个数组指针,是一个指针,该指针只能指向具有3个int类型元素的一段连续空间
数组名表示数组首元素的地址,n中的第一个元素的类型是int[3],n中的二维数组中,首元素的地址就是int( * )[3]
p[0] 和 * (p+0) 是等价的,*p 和 *(p+0)是等价的

5、以下说法中正确的是( )
A C++程序中的main()函数必须放在程序的开始部分
B C++程序的入口函数是main函数
C 在C++程序中,要调用的函数必须在main()函数中

答案:B

6、有以下程序运行结果为()

#include <iostream>
using namespace std;
char fun(char x, char y) 
{
	if (x < y)
		return x;
	return y;
} 
int main() 
{
	int a = '1', b = '1', c = '2';
	cout << fun(fun(a, b), fun(b, c));
	return 0;
}

A 运行出错
B 2
C 3
D 1

答案:D

7、 对于int* pa[5];的描述,以下哪个选项是正确的()
A pa是一个具有5个元素的指针数组,每个元素是一个int类型的指针;
B pa是一个指向数组的指针,所指向的数组是5个int类型的元素;
C pa[5]表示某个数的第5个元素的值;
D pa是一个指向某个数组中第5个元素的指针,该元素是int类型的变量

答案:A
解析:pa是一个指针数组,该数组中每个元素都是int * 类型的指针,pa[5]表示的是数组的大小

8、下面两个结构体,在#pragma pack(4)和#pragma pack(8)的情况下,结构体的大小分别是()

struct One 
{
	double d;
	char c;
	int i;
}

struct Two
{
	char c;
	double d;
	int i;
}

A 16 24,16 24
B 16 20,16 20
C 16 16,16 24
D 16 16,24 24

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

9、下面哪个指针表达式可以用来引用数组元素a[i][j][k][l]()
A (((a+i)+j)+k)+l)
B ((((a+i)+j)+k)+l)
C (((a+i)+j)+k+l)
D ((a+i)+j+k+l)

答案:B

10、由多个源文件组成的C程序,经过编辑、预处理、编译、汇编、链接等阶段会生成最终的可执行程序。下面哪个阶段可以发现被调用的函数未定义()
A 预处理
B 编译
C 链接
D 执行

答案:C
解析:编辑:写代码的过程
预处理:宏展开
编译:让编译器来检测程序中是否存在语法问题 --如果存在语法问题,则编译失败
汇编:将编译完成之后的汇编指令翻译成对应的二进制
注意:头文件是不参与编译的 --因为在预处理阶段已经将头文件展开了,编译是只对源文件进行编译,每个源文件编译完成都会生成一个obj的目标文件
在这里插入图片描述

二、编程题

1、统计回文

入口:题目链接

题目描述:
在这里插入图片描述
解题思路:
本题使用暴力求解方式计算即可,遍历str1,将str2 insert进入str1的每个位置,判断是否是回文,就是++count;需要注意的是这里不能 str1.insert(i, str2),这样的话str1改变了,判断下一个位置就不对了。所以每次使用str1拷贝构造一个str,然后str.insert(i, str2),再判断。

代码展示:

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

bool IsCircle(string s)
{
	int begin = 0;
	int end = s.size() - 1;
	while (begin < end)
	{
		if (s[begin] != s[end])
		{
			return false;
		}
		++begin;
		--end;
	}
	return true;
}

int main()
{
	string str1, str2;
	getline(cin, str1);
	getline(cin, str2);

	int count = 0;
	for (int i = 0; i <= str1.size(); i++)
	{
		// 将字符串2插入到字符串1的每个位置,再判断是否是回文
		string str = str1;
		str.insert(i, str2);
		if (IsCircle(str))
		{
			count++;
		}
	}
	cout << count << endl;
	return 0;
}

2、连续最大和

入口:题目入口

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

解题思路:

状态方程式: max( dp[ i ] ) = getMax( max( dp[ i -1 ] ) + arr[ i ] ,arr[ i ] )

dp[i] 就是以数组下标为 i 的数做为结尾的最大子序列和,注意是以 i 为结尾,比如说现在有一个数组{6,-3,-2,7,-15,1,2,2},dp[2]就是以-2为结尾的,那么显然dp[2]的最大值就是1(6,-3,-2),dp[3]要以7结尾那么以7结尾的子序列最大和就是8(6,-3,-2,7)。现在我们开始细细品一下上面这个递推式,求dp[i]的时候是不是有两种可能,要么就是像上面的dp[3]一样,dp[2]求出来是1了,再加上自己array[3]是最大的,那么还有一种可能就是说如果dp[2]我求出来是-100,那如果我也是dp[2]+array[3]的话是-93, 这时候dp[2]反而是累赘,最大就是自己(因为前面定义了必须以i为结尾,也就说必须以7结尾)。

代码展示:

#include <iostream>
#include <vector>
using namespace std;

int GetMax(int a, int b)
{
	return a > b ? a : b;
}

int main()
{
	int size;
	cin >> size;

	vector<int> nums(size);
	for (int i = 0; i < size; i++)
	{
		cin >> nums[i];
	}

	int sum = nums[0]; //临时最大值
	int max = nums[0]; //比较之后的最大值

	for (int i = 1; i < size; i++)
	{
		sum = GetMax(sum + nums[i], nums[i]);
		if (sum >= max)
			max = sum;
	}
	cout << max << endl;
	return 0;
}

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

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

相关文章

2.Vue-从零开始搭建一个vue项目

题记 从零开始搭建一个vue项目&#xff0c;以下是操作的全过程。 安装Vue CLI脚手架 打开终端&#xff0c;运行以下命令全局安装Vue CLI脚手架&#xff1a; npm install -g vue/cli 查看 Vue CLI脚手架版本&#xff1a; vue -V 注意&#xff1a;查看vue版本的命令不是vue -V&a…

【计算机毕设选题推荐】超市管理系统SpringBoot+SSM+Vue

前言&#xff1a;我是IT源码社&#xff0c;从事计算机开发行业数年&#xff0c;专注Java领域&#xff0c;专业提供程序设计开发、源码分享、技术指导讲解、定制和毕业设计服务 项目名 基于SpringBoot的超市管理系统 技术栈 SpringBootVueMySQLMaven 文章目录 一、超市管理系统…

RPC框架之OpenFeign快速上手

RPC框架之OpenFeign快速上手 1. 快速上手&#x1f496;1.1 第一步 引入相关依赖&#x1f996;1.2 第二步 启用OpenFeign功能&#x1f995;1.3 第三步 编写FeignClient&#x1fabc;1.4 第四步 使用FeignClient 实现远程调用✨1.5 验证一下&#x1f355;1.6 原理2. OpenFeign整合…

Puppeteer记录操作过程及优秀的开源插件(五)

Puppeteer记录操作过程及优秀的开源插件&#xff08;五&#xff09; Puppeteer记录操作过程及优秀的开源插件&#xff08;五&#xff09;一、简介二、自动生成测试代码三、优秀的开源插件四、参考案例 一、简介 本节我们将介绍通过浏览器工具记录用户的实际操作&#xff0c;并…

SpringBoot面试题4:Spring Boot 支持哪些日志框架?推荐和默认的日志框架是哪个?

该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:Spring Boot 支持哪些日志框架?推荐和默认的日志框架是哪个? Spring Boot支持多种日志框架,包括以下几种: Logback:Logback 是一个快速、灵活…

架构真题2017(五十三)

在磁盘上存储数据的排列方式会影响 I/O服务的总时间。假设每磁道划分成10个物理块&#xff0c;每块存放1个逻辑记录。逻辑记录R1&#xff0c;R2&#xff0c; ...&#xff0c; RI0存放在同一个磁道上&#xff0c; 记录的安排顺序如下表所示 ; 假定磁盘的旋转速度为30ms/周&…

SAP MM学习笔记36 - 释放支付保留的发票

SAP中&#xff0c;请求书照合之后&#xff0c;发现不一致&#xff0c;就会支付保留。 支付保留&#xff0c;可以参考如下文章。 SAP MM学习笔记34 - 请求书照合中的支付保留&#xff08;发票冻结&#xff09;_东京老树根的博客-CSDN博客 当然发现不一致之后&#xff0c;如果不…

进阶JAVA篇- ZoneId 类与 ZoneDateTime 类、Instant类的常用API(七)

目录 API 1.0 ZoneId 类的说明 1.1 如何创建 ZoneId 类的对象呢&#xff1f; 1.2 ZoneId 类中的 getAvailableZoneIds() 静态方法 2.0 ZoneDateTime 类的说明 2.1 如何创建 ZoneDateTime 类的对象呢&#xff1f; 3.0 Instant 类的说明 3.1 如何创建 Instant 类的对象呢…

【初始C语言8】详细讲解初阶结构体的知识

前言 &#x1f493;作者简介&#xff1a; 加油&#xff0c;旭杏&#xff0c;目前大二&#xff0c;正在学习C&#xff0c;数据结构等&#x1f440; &#x1f493;作者主页&#xff1a;加油&#xff0c;旭杏的主页&#x1f440; ⏩本文收录在&#xff1a;再识C进阶的专栏&#x1…

模型UV纹理设置工具

1、什么是模型UV纹理&#xff1f; 模型的UV纹理是将二维纹理图映射到三维模型表面的过程。UV纹理可以为模型赋予颜色、纹理、细节和其他效果&#xff0c;使其看起来更加逼真。 2、UV纹理的原理 下面是模型UV纹理的详细原理介绍&#xff1a; UV坐标系统&#xff1a;UV坐标系统…

2.算法-Python模拟退火算法实例

题记 下面是python编写的模拟退火算法实例&#xff0c;包括全过程和解析。 编写main.py文件 main.py文件如下&#xff1a; import math import random# 初始解&#xff1a;算法从问题的解空间中随机选择一个初始解作为当前解。 # 目标函数&#xff1a;算法需要优化的目标函数…

【Docker】Docker的使用案例以及未来发展、Docker Hub 服务、环境安全、容器部署安全

作者简介&#xff1a; 辭七七&#xff0c;目前大二&#xff0c;正在学习C/C&#xff0c;Java&#xff0c;Python等 作者主页&#xff1a; 七七的个人主页 文章收录专栏&#xff1a; 七七的闲谈 欢迎大家点赞 &#x1f44d; 收藏 ⭐ 加关注哦&#xff01;&#x1f496;&#x1f…

【算法学习】-【滑动窗口】-【将 x 减到 0 的最小操作数】

LeetCode原题链接&#xff1a;1658. 将 x 减到 0 的最小操作数 下面是题目描述&#xff1a; 给你一个整数数组 nums 和一个整数 x 。每一次操作时&#xff0c;你应当移除数组 nums 最左边或最右边的元素&#xff0c;然后从 x 中减去该元素的值。请注意&#xff0c;需要 修改 数…

通过示例详细了解ES6导入导出模块

通过示例详细了解ES6导入导出模块 似乎许多开发人员认为 ES6 模块只不过是export、import关键字。事实上&#xff0c;它更加多样化。它拥有强大的功能和鲜为人知的问题。在本文中&#xff0c;我们将使用一些示例来了解这些内容。 示例一 // index.mjs import { default } fr…

【STL】容器适配器stack和queue常见用法及模拟实现

目录 1.stack介绍及使用1.1 stack的介绍1.2 stack使用 2. stack模拟实现3. queue介绍及使用3.1 queue的介绍4. queue模拟实现 5. 栈和队列使用不同默认适配器的区别6. dequeue原理简单介绍6.1 dequeue底层实现6.2 dequeue的缺点 1.stack介绍及使用 1.1 stack的介绍 stack文档介…

每天debug/run一键启动的Spring Boot控制台启动日志,你了解过吗?

文章目录 前言JDK执行Spring Boot应用的启动命令Spring Boot本身启动时的日志总结 前言 每次打开Idea点击debug/run启动SpringBoot项目时&#xff0c;都在坐等启动成功的最后一行日志&#xff0c;然而对于启动过程中&#xff0c;控制台里面的每一行日志代表什么&#xff1f;你…

论文学习——FALL-E:GAUDIO FOLEY SYNTHESIS SYSTEM

文章目录 引言正文AbstractIntroduction介绍问题 FALL-E2.1 Architexture结构2.2 Training and Inference Details 3 Evaluation And Analysis测试和分析Conlusion 总结 引言 这篇文章是DCASE中少有的&#xff0c;没有使用DIffusion的方法&#xff0c;可以学习一下。这篇文章的…

『C++之STL』双端队列 - deque

前言 双端队列,Double-ended queue,简称为deque是一种线性结构的一种容器; 在数据结构中出现的顺序表与链表,或者栈与队列都算是线性结构; 在结构中,它与vector相比较会相似一些; 但是在实际当中,双端队列 - deque 包含了vector与list的优点; vector(顺序表) 支持随机访问,空…

cuda12+vs2019环境搭建 发疯实录

点击exe文件后开始安装&#xff08;注意更改默认安装的位置&#xff09; 在选项阶段&#xff0c;全选所有的选项 出现的问题&#xff0c;这里显示未安装 进一步地查看原因 可能式对应的版本下载错误 如何寻找到所需要的版本并进行下载&#xff1f; 在上述参考链接中进行搜…

阿里云韩国服务器测试IP地址及公网带宽收费价格表

阿里云服务器韩国&#xff08;首尔&#xff09;地域公网带宽价格表&#xff0c;1M带宽价格是23.0元/月&#xff0c;按使用流量1GB价格是0.8元&#xff0c;阿里云韩国服务器测试IP地址&#xff1a;149.129.12.20&#xff0c;阿里云百科aliyunbaike.com来详细说下阿里云韩国服务器…