【C++笔试强训】第三天

news2024/11/25 1:00:17

选择题

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

a是数组名,所以指向数组首元素;p=a+8:a向右偏移8个字节,指向‘9’。p - 3也就是向左偏移3个字节,对于%s打印:遇到\0停止打印,打印出6789

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

#include <iostream.h>
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

看到case我们就需要注意break是否存在了,x%2 = 1,进入case1;y=3,进入default语句;把hello打印出来
default后没有break语句跳出循环,所以还是要执行case2,再打印出third,最后打印出来的是hellothird

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}};

二维数组初始化行可以省略,列不能省略,A中没有初始化列;C中多初始化了一行;D初始化必须是连续的,不能间隔

4.能把函数处理结果的二个数据返回给主调函数,在下面的方法中不正确的是()

A return这二个数
B 形参用数组
C 形参用二个指针
D 用二个全局变量

return只能返回一个值,不能返回两个,选A

5.int *p[4] 与选择项中的() 等价

A int p[4]
B int *p
C int *(p[4])
D int (*p)[4]

int *p[4] : p先和[]结合,是一个数组,存放4个int *类型的指针,所以是指针数组
A是整型数组 ;B是i指针;C是答案;D中p先和* 结合,指向一个大小为4的数组 ,是数组指针

6.设变量已正确定义,以下不能统计出一行中输入字符个数(不包含回车符)的程序段是()

A n=0;while(ch=getchar()!=‘\n’)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中的ch=getchar()只执行一次,不能获得每个字符。答案选D

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

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

A Compiler error
B fg
C efg
D defg

题目解析:

ptr指向字符a,ptr是char类型,ptr+=5,所以向右偏移5个字节,指向的是fptr是字符指针,输出的是字符串,直到\0结尾,选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 都不一样

此类题型,还是常量指针和指针常量的问题:
(1)是常量指针,(2)也是常量指针;(3)是指针常量,主要区别在于const和*的位置,很明显,答案选C

9.32位系统中,定义**a[3][4],则变量占用内存空间为()

A 4
B 48
C 192
D 12

a先和[]结合,所以a实际上是一个三行四列的数组,存放的是**的指针类型,又是32位系统中,所以大小为4*12=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

image-20221204105029906

编程题

[字符串中找出连续最长的数字串](字符串中找出连续最长的数字串_牛客题霸_牛客网 (nowcoder.com))

image-20221204100616100

我们可以定义两个字符串,cur存放遍历所遇到的数字字符串,ret保存结果。如果cur的size比ret的大就把结果交给retcur清除,,最终ret存放的就是最长的数字串。

#include <iostream>
#include <string>
using namespace std;
int main()
{
    string str;
    string ret;
    string cur;
    int count = 0;
    getline(cin,str);
    for(auto e : str)                
    {
        if(isdigit(e))
        {
            cur+=e;
        }
        else
        {
            cur.clear();
        }
        if(cur.size()>ret.size())
        {
            ret = cur;
        }
    }
    cout<<ret<<endl;
    return 0;
}

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

image-20221204101349958

普通的思路:排完序之后直接找中间位置。有人可能直接就认为中间位置就是所求结果了(好像测试用例也可以这样子直接通过),但是实际上不是的,因为中间的次数不一定超过数组长度的一半,所以我们还需要去统计一下出现次数是不是符合题意要求

class Solution {
public:
    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(auto e:numbers)
        {
            if(e==mid)
            {
                count++;
            }
        }
        if(count > numbers.size() / 2)
        {
            return mid;
        }
        else
        {
            return 0;
        }
    }
};

对于这种方法我们都是能想到的。此外,对于这道题目,还有另一种做法:

两数相消:

在有众数的情况下,遍历整个数组,如果两个数不相等,我们就消去这两个数,如果是在最坏的情况下,我们会每次消去一个众数和一个非众数,如果存在众数的话,最后留下的数肯定是众数

具体过程:resulttimes 分别存放当前数与设定出现次数,times初始化为1。当后面的一个数与前一个数相同时,times++,否则就times–.当times为0时,result就重新更新为当前的nums[i],最后重新遍历一遍数组,判断是否为众数即可。

image-20221204102706999

class Solution {
public:
    int MoreThanHalfNum_Solution(vector<int> numbers) {
        if(numbers.empty()) return 0;
        int result = numbers[0];
        int times = 1;
        //从第二个位置开始,也就是下标为1
        for(size_t i = 1;i<numbers.size();i++)
        {
            if(times!=0)
            {
                 if(numbers[i] != result)
                {
                    times--;
                }
                else
                {
                    times++;
                }
            }
            else
            {
                result = numbers[i];
                times = 1;
            }
        }
        //统计次数
        int count = 0;
        for(auto e:numbers)
        {
            if(result == e)
            {
                count++;
            }
        }
        if(count > numbers.size() / 2)
        {
            return result;
        }
        return 0;
    }
};

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

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

相关文章

p4实现负载均衡

实验要求 基于简单版本的等成本多路径转发实现一种负载平衡。实现的交换机将使用两个表将数据包随机转发到两个目标主机之一第一个表将使用哈希函数&#xff08;应用于由源和目标IP地址、IP协议以及源和目标TCP端口组成的5元组&#xff09;来选择两个主机中的一个第二个表将使…

gnn神经网络是什么,gnn神经网络代码

1、gnn什么意思? 指图形神经网络。 生物神经网络主要是指人脑的神经网络&#xff0c;它是人工神经网络的技术原型。人脑是人类思维的物质基础&#xff0c;思维的功能定位在大脑皮层&#xff0c;后者含有大约10^11个神经元。 每个神经元又通过神经突触与大约103个其它神经元…

永磁同步电机(PMSM)磁场定向控制(FOC)及Matlab/Simulink仿真分析

文章目录前言一、FOC的基本原理二、坐标变换2.1.Clark坐标变换2.2.Park坐标变换三、永磁同步电机在同步旋转坐标系下的数学模型四、永磁同步电机磁场定向控制Matlab/Simulink仿真分析4.1.电压开环控制4.1.1.仿真电路分析4.1.2.仿真结果分析4.2.电流闭环控制4.2.1.仿真电路分析4…

两个月吃透阿里P9推荐260页SpringBoot2企业应用实战pdf入职定P6+

前言 都说程序员工资高、待遇好&#xff0c; 2022 金九银十到了&#xff0c;你的小目标是 30K、40K&#xff0c;还是 16薪的 20K&#xff1f;作为一名 Java 开发工程师&#xff0c;当能力可以满足公司业务需求时&#xff0c;拿到超预期的 Offer 并不算难。然而&#xff0c;提升…

Ansys Zemax | 使用OpticStudio进行闪光激光雷达系统建模(下)

在消费类电子产品领域&#xff0c;工程师可利用激光雷达实现众多功能&#xff0c;如面部识别和3D映射等。尽管激光雷达系统的应用非常广泛而且截然不同&#xff0c;而“闪存激光雷达”解决方案适用于在使用固态光学元件的目标场景中生成可检测的点阵列。 凭借在针对小型封装获…

「Redis」08 主从复制

笔记整理自【尚硅谷】Redis 6 入门到精通 超详细 教程 Redis——主从复制 1. 简介 主机数据更新后根据配置和策略&#xff0c; 自动同步到备机的 master/slaver 机制&#xff0c;Master 以写为主&#xff0c;Slaver 以读为主。 主从复制的好处 读写分离&#xff0c;性能扩展…

利用styleSheet,避免js手动频繁修改样式

styleSheet是一个样式表&#xff0c;记录了一个html文件中<style>标签中的样式 &#x1f5a8;️体感styleSheet 对于下面一个html文件 <!DOCTYPE html> <html lang"en"><head><style>h1 {color: red;}div {color: green; }</styl…

VMware替换难?听听ZStack 的这3家制造业客户怎么说……

随着国家对信创转型的持续扶持&#xff0c;加之VMware原有的产品与客户云建设需求的契合度不高&#xff0c;越来越多的用户选择将自身的IT系统替换为国产化的信创产品&#xff0c;且已经在金融、交通、制造业、教育、房地产等领域落地出现从VMware迁移转型的成功案例。在此趋势…

Python实战案例,PyQt5+socket模块,Python制作小型桌面应用

前言 本文给大家分享的是如何通过用PyQt5制作小型桌面应用 PyQt概述 PyQt5是Qt框架的Python语言实现&#xff0c;由Riverbank Computing开发&#xff0c;是最强大的GUI库之一。PyQt提供了一个设计良好的窗口控件集合&#xff0c;每一个PyQt控件都对应一个Qt控件&#xff0c;…

js实现的在线绘图板,写字板

一个像素完美的基于web的MS Paint重制版和更多…试试看&#xff01; JS Paint高度逼真地再现了MS Paint的每个工具和菜单&#xff0c;甚至是鲜为人知的功能。 它支持主题、其他文件类型和辅助功能&#xff0c;如眼睛注视模式和语音识别。 在线demo地址在线绘图板&#xff0c;在…

CorelDRAW破解版是如何一步一步坑人的

如果你还在说破解版软件免费好用&#xff0c;那我真的要用一个朋友的例子和你讲讲破解版CorelDRAW的害人之处了。 小赵是我的朋友学设计的&#xff0c;学生党一枚苦于囊中羞涩经常上破解版的车。一次他接了一个设计LOGO的活儿&#xff0c;准备用CorelDRAW来做这个LOGO。于是从…

web安全之post注入和cookie注入

目录 环境 靶场11&#xff08;POST注入&#xff09; 靶场20&#xff08;cookie注入&#xff09; 环境 靶场&#xff1a;sqli-labs&#xff0c;工具&#xff1a;burp 靶场11&#xff08;POST注入&#xff09; 抓包修改请求体 uname-1 union select 1,2 #&passwd&s…

2023年天津仁爱学院高职升本科专业考试报考须知

2023年天津仁爱学院高职升本科专业考试报考须知 一、报名条件 1.报考我校2023年高职升本科各专业的考生&#xff0c;应符合天津市教育招生考试院制定的2023 年天津市高职升本科及我校专业考试有关报考条件&#xff0c;须完成2023年天津市高职升本科文化考试报名相关手续&#x…

【Web端智能聊天客服】之HTML、CSS、Bootstrap的讲解及实例(超详细必看 附源码)

觉得有帮助请点赞关注收藏~~~ 一、HTML基础 HTML全称是HyperText Markup Language 是网页的标准标记语言&#xff0c;使用HTML可以创建自定义网站或者模板网站&#xff0c;HTML代表超文本标记语言&#xff0c;主要用于描述网页结构&#xff0c;HTML页面元素体现浏览器如何显示…

商业智能BI在面向报表和模型开发时,有什么不同?

企业在面试商业智能BI技术开发人员&#xff0c;发现基本上90%的人分不清什么是面向报表开发&#xff0c;什么是面向模型开发&#xff0c;不明白这个问题背后的意思。10%左右的人稍微暗示一下&#xff0c;大概就懂你想了解的是什么了&#xff0c;这10%的是真正有过完整的数据仓库…

我是如何开始能写python爬虫的?给零基础入门Python小白一条清晰的学习路线

重要的事说三遍&#xff1a;不要从看书开始&#xff0c;不要从看书开始&#xff0c;不要从看书开始&#xff01;~~ 爬虫这么有意思的东西&#xff0c;看书多没有乐趣&#xff0c;从网上找个视频&#xff0c;直接跟着写&#xff0c;然后再根据视频&#xff0c;按照自己的想法写…

Polaris 和 dubbogo 全面对接,让微服务更简单

作者 | 邓正威&#xff0c;廖春涛&#xff08;春少&#xff09;&#xff0c;赵新&#xff08;花名 于雨&#xff09;背景概述什么是 PolarisPolaris 是腾讯开源的服务治理平台&#xff0c;致力于解决分布式和微服务架构中的服务管理、流量管理、配置管理、故障容错和可观测性问…

公路交叉数(POJ3067)-树状数组解决逆序对

题目大意&#xff1a; 东海岸有N个城市&#xff0c;西海岸有M个城市&#xff08;N≤1000&#xff0c;M≤1000&#xff09;&#xff0c;将建K条公路。每个海岸的城市从北到南编号为1,2&#xff0c;…每条高速公路都是直线&#xff0c;连接东海岸和西海岸的城市。建设资金由高速公…

各开发语言DNS缓存配置建议

作者&#xff1a;翟贺龙 一、背景 在计算机领域&#xff0c;涉及性能优化动作时首先应被考虑的原则之一便是使用缓存&#xff0c;合理的数据缓存机制能够带来以下收益&#xff1a; 1.缩短数据获取路径&#xff0c;热点数据就近缓存以便后续快速读取&#xff0c;从而明显提升…

小侃设计模式(十六)-备忘录模式

1.概述 备忘录模式&#xff08;Memento Pattern&#xff09;是一种行为型模式&#xff0c;它的主要思想是在不破坏封装性的前提下&#xff0c;捕获一个对象的内部状态&#xff0c;并将该状态保存在该对象之外&#xff0c;这样以后就可将该对象恢复到原先保存的状态。它是相对简…