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

news2024/11/28 1:48:43

目录

  • 一、选择题
  • 二、编程题
    • 1、字符串中找出连续最长的数字串
    • 2、数组中出现次数超过一半的数字

一、选择题

1、以下程序的输出结果是()

#include <stdio.h>
int main()
{
    char a[10] = { '1', '2', '3', '4', '5', '6', '7', '8', '9', 0 }, * p;
    int i;
    i = 8;
    p = a + i;
    printf("%s\n", p - 3);
}

A 6
B 6789
C ‘6’
D 789

答案:B

2、以下程序的输出结果是()

#include <iostream>
int main()
{
    int x = 3, y = 3;
    switch (x % 2)
    {
        case 1:
        switch (y)
        {
        case 0:
            cout << "first";
        case 1:
            cout << "second";
            break;
        default:
            cout << "hello";
        }
    case 2:
        cout << "third";
    }
    return 0;
}

A second third
B hello
C first second
D hellothird

答案:D

3、以下能对二维数组a进行正确初始化的语句是()
A int ta[2][]={{0,1,2},{3,4,5}};
B int ta[][3]={{0,1,2},{3,4,5}};
C int ta[2][4]={{0,1,2},{3,4},{5}};
D int ta[][3]={{0,2},{},{3,4,5}};

答案:B
解析:二维数组的行可以省略,列不可以省略

4、能把函数处理结果的二个数据返回给主调函数,在下面的方法中不正确的是()
A return这二个数
B 形参用数组
C 形参用二个指针
D 用二个全局变量

答案:A
解析:return每次只能返回一个数据,但是放到数组或一个容器里面,可以return多个数据。全局变量作用域在整个文件都是有效的。

5、int * p[4] 与选择项中的() 等价
A. int p[4]
B. int *p
C. int *(p[4])
D. int (*p)[4]

答案:C
解析:A是int类型数组,数组大小为4。B是int类型的指针。C是int类型的指针数组,数组大小为4,与题目等价。D是一个数组指针,数组大小为4,并且是int类型

6、设变量已正确定义,以下不能统计出一行中输入字符个数(不包含回车符)的程序段是
A. n=0;while(ch=getchar()!=‘\n’)
B. n=0;while(getchar()!=‘\n’)n++;
C. for(n=0;getchar()!=‘\n’;n++);
D. n=0;for(ch=getchar();ch!=‘\n’;n++);

答案:D
解析:for循环初始化部分只会执行一次,所以D选项只会获取一个字符。

7、以下代码,代码执行之后ptr指向的内容是?

char* ptr;
char myString[] = "abcdefg";
ptr = myString;
ptr += 5;

A Compiler error
B fg
C efg
D defg

答案:B

8、下面3段程序代码的效果一样吗()

int b;
(1)const int *a = &b;
(2)int const *a = &b;
(3)int *const a = &b;

A (2)=(3)
B (1)=(3)
C (1)=(2)
D 都不一样

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

9、32位系统中,定义**a[3][4],则变量占用内存空间为()。
A 4
B 48
C 192
D 12

答案:B
解析:是一个三行四列的数组,指针类型,共有12个元素,所占空间大小为 12 * 4=48

10、假设在一个 32 位 little endian 的机器上运行下面的程序,结果是多少?

#include <stdio.h>
int main() 
{
    long long a = 1, b = 2, c = 3;
    printf("%d %d %d\n", a, b, c);
    return 0;
}

A 1,2,3
B 1,0,2
C 1,3,2
D 3,2,1

答案:B
解析:大端:低位存高地址
小端:低位存低地址
例如:int i = 1;
大端:00 00 00 01
小端:01 00 00 00
左边是低地址,右边是高地址
a:01 00 00 00 00 00 00 00
b:02 00 00 00 00 00 00 00
c:03 00 00 00 00 00 00 00
在这里插入图片描述

二、编程题

1、字符串中找出连续最长的数字串

入口:题目链接

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

解题思路:
遍历字符串,使用cur去记录连续的数字串,如果遇到不是数字字符,则表示一个连续的数字串结束了,则将
数字串跟之前的数字串比较,如果更长,则更新更长的数字串更新到ret。

代码展示:

#include <iostream>
#include <string>
using namespace std;
int main()
{
    string cur;
    string ret;
    string str;
    cin >> str;
    for (int i = 0; i <= str.length(); i++)
    {
        // 数字+=到cur
        if (str[i] >= '0' && str[i] <= '9')
        {
            cur += str[i];
        }
        else
        {
            // 找出更长的字符串,则更新字符串
            if (ret.size() < cur.size())
            {
                ret = cur;
            }
            else
            {
                cur.clear();
            }
        }
    }
    cout << ret << endl;
    return 0;
}

2、数组中出现次数超过一半的数字

入口:题目链接

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

解题思路1:
思路一:数组排序后,如果符合条件的数存在,则一定是数组中间那个数。这种方法虽然容易理解,但由于
涉及到快排sort,其时间复杂度为O(NlogN)并非最优;

代码展示:

int MoreThanHalfNum_Solution(vector<int>& numbers) {
    if (numbers.empty())
        return 0;
    sort(numbers.begin(), numbers.end());
    int mid = numbers[numbers.size() / 2];
    int count = 0;
    for (int i = 0; i < numbers.size(); i++)
    {
        if (numbers[i] == mid)
            count++;
    }
    if (count >= (numbers.size() / 2))
        return mid;
    return 0;
}

解题思路2:
众数:就是出现次数超过数组长度一半的那个数字
如果两个数不相等,就消去这两个数,最坏情况下,每次消去一个众数和一个非众数,那么如果存在众数,
最后留下的数肯定是众数。

代码展示:

int MoreThanHalfNum_Solution(vector<int>& numbers) {
    if (numbers.empty())
        return 0;
    int sul = numbers[0];
    int times = 1;
    for (int i = 1; i < numbers.size(); i++)
    {
        if (times != 0)
        {
            if (numbers[i] == sul)
            {
                times++;
            }
            else
            {
                times--;
            }
        }
        else
        {
            sul = numbers[i];
            times = 1;
        }
    }
    times = 0;
    for (int i = 0; i < numbers.size(); i++)
    {
        if (numbers[i] == sul)
        {
            times++;
        }
    }
    if (times > numbers.size() / 2)
        return sul;
    return 0;
}

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

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

相关文章

【考研数学】高等数学第七模块 —— 曲线积分与曲面积分 | 3. 对面积的曲面积分(第一类曲面积分)

文章目录 二、曲面积分2.1 对面积的曲面积分&#xff08;第一类曲面积分&#xff09;2.1.1 问题引入 —— 曲面的质量2.1.2 对面积的曲面积分定义及性质2.1.3 对面积的曲面积分的计算法 写在最后 二、曲面积分 2.1 对面积的曲面积分&#xff08;第一类曲面积分&#xff09; 2…

小谈设计模式(12)—迪米特法则

小谈设计模式&#xff08;12&#xff09;—迪米特法则 专栏介绍专栏地址专栏介绍 迪米特法则核心思想这里的“朋友”指当前对象本身以参数形式传入当前对象的对象当前对象的成员变量直接引用的对象目标 Java程序实现程序分析 总结 专栏介绍 专栏地址 link 专栏介绍 主要对目…

【自定义类型】--- 位段、枚举、联合

&#x1f493;博客主页&#xff1a;江池俊的博客⏩收录专栏&#xff1a;C语言进阶之路&#x1f449;专栏推荐&#xff1a;✅C语言初阶之路 ✅数据结构探索&#x1f4bb;代码仓库&#xff1a;江池俊的代码仓库&#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐ 文…

Hypermesh联合LS-DYNA的子弹侵彻计算

Hypermesh凭借强大的网格划分和方便的求解设置功能而被广泛用于DYNA求解器的前处理。本文通过bullet穿透铝合金板侵彻计算来简单介绍Hypermesh和LS-DYNA的联合使用。 计算模型如图1所示&#xff0c;为1/4模型&#xff0c;bullet材料为钢材&#xff0c;被穿透的板为铝合金AL202…

python和java类的编写(属性私有化,方法公开化)

初始化类的属性的2种写法&#xff1a; 如下要注意python对文件名称、类、方法名的命名 方式一&#xff1a;原始的定义 class User1: # 初始化账号和密码 def __init__(self):# 账号和密码self.__username Noneself.__password Nonedef getnsername(self):return self.__us…

001 Python开发环境搭建

1、下载python 2023/10 python-3.11.5-amd64.exehttps://www.python.org/ftp/python/3.11.5/python-3.11.5-amd64.exe 2、下载Visual Studio Code 2023/10 VSCodeSetup-x64-1.82.2.exehttps://code.visualstudio.com/docs/?dvwin64 3、安装python 双击打开python-3.11.5-a…

【Linux】RPM包使用详解

&#x1f341; 博主 "开着拖拉机回家"带您 Go to New World.✨&#x1f341; &#x1f984; 个人主页——&#x1f390;开着拖拉机回家_大数据运维-CSDN博客 &#x1f390;✨&#x1f341; &#x1fa81;&#x1f341; 希望本文能够给您带来一定的帮助&#x1f338;文…

为什么都说NFS读写性能差,如何进行优化?

使用基于NFS协议存储系统的同学经常遇到的问题是在小文件比较多的情况下性能会比较差。小文件访问性能差本身是可以理解的,但是NFS确实是太差了。不知大家是否深层次分析过,为什么NFS访问小文件性能会这么差? NFS文件系统与本地文件系统的差异在于多了一个网络传输的过程。…

阿里云RDS关系型数据库详细介绍_多版本数据库说明

阿里云RDS关系型数据库大全&#xff0c;关系型数据库包括MySQL版、PolarDB、PostgreSQL、SQL Server和MariaDB等&#xff0c;NoSQL数据库如Redis、Tair、Lindorm和MongoDB&#xff0c;阿里云百科分享阿里云RDS关系型数据库大全&#xff1a; 目录 阿里云RDS关系型数据库大全 …

AI标注,怎么做才能省时省劲,提高效率?有何技巧?

AI标注是一种借助人工智能技术为数据集添加标签的方法&#xff0c;这一过程旨在使机器学习算法能够更好地识别和分类数据。与传统手工标注相比&#xff0c;AI标注具有高效、高准确性和低成本等优势。在本文中&#xff0c;我们将探讨如何实施有效的AI标注策略以提高工作效率。 …

如何使用ChatGPT来辅助写简历

How to ask ChatGPT for resume help https://www.producthunt.com/stories/how-to-ask-chatgpt-for-resume-help #MixCopilot 本文作者&#xff1a; 摘要&#xff1a; 本文介绍了如何使用ChatGPT来辅助写简历。通过ChatGPT&#xff0c;你可以改善简历的格式和结构&#xff0c;…

基于Java的实验室设备借用登记系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09;有保障的售后福利 代码参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作…

Java生态系统的进化:从JDK 1.0到今天

文章目录 JDK 1.0&#xff1a;开启Java时代JDK 1.1&#xff1a;Swing和内部类JDK 1.2&#xff1a;Collections框架和JIT编译器JDK 1.5&#xff1a;引入泛型和枚举JDK 1.8&#xff1a;Lambda表达式和流JDK 11以后&#xff1a;模块化和新特性未来展望1. 云原生和容器化2. 更好的性…

SpringBoot 如何解决跨域问题

Spring Boot 中的跨域请求&#xff08;Cross-Origin Request&#xff09;问题与解决方案 跨域请求是指浏览器从一个域名的网页去请求另一个域名的资源&#xff0c;它是为了增强 Web 安全性而产生的限制。Spring Boot 应用程序通常会面临跨域请求的问题&#xff0c;本文将介绍跨…

Java栈的压入、弹出序列(详解)

目录 1.题目描述 2.题解 方法1 方法2 1.题目描述 输入两个整数序列&#xff0c;第一个序列表示栈的压入顺序&#xff0c;请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序&#xff0c;序列4,5,3,2,1是该压栈序…

初识动态内存分配

目录 为什么会存在动态内存分配&#xff1a; malloc: free&#xff1a; calloc&#xff1a; realloc&#xff1a; 注意事项&#xff1a; 攻破经典易错题&#xff1a; 题目一&#xff1a; 存在以下两种方式进行修改&#xff1a; 1.利用二级指针进行修改&#xff1a; 2.…

加拿大人工智能数据搜索平台【Secoda】完成1400万美元A轮融资

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 猛兽财经获悉&#xff0c;总部位于加拿大多伦多的人工智能数据搜索平台【Secoda】今日宣布已完成1400万美元A轮融资。 本轮融资由Craft Ventures领投&#xff0c;参与投资的投资机构有Abstract Ventures、现有投资者YCombi…

代码随想录算法训练营第五十天 |123.买卖股票的最佳时机III、188.买卖股票的最佳时机IV

一、123.买卖股票的最佳时机III 题目链接/文章讲解&#xff1a;代码随想录 视频讲解&#xff1a;动态规划&#xff0c;股票至多买卖两次&#xff0c;怎么求&#xff1f; | LeetCode&#xff1a;123.买卖股票最佳时机III_哔哩哔哩_bilibili 思考&#xff1a; 至多买卖两次&…

【算法挨揍日记】day09——35. 搜索插入位置、69. x 的平方根

35. 搜索插入位置 35. 搜索插入位置 题目描述&#xff1a; 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 解题思…