【笔试强训】Day_01

news2025/2/28 17:15:58

目录

一、选择题

1、

2、

3、

4、

5、

6、

7、

8、

9、

10、

二、编程题

1、组队竞赛

 2、删除公共字符


一、选择题

1、

以下for循环的执行次数是()

for(int x = 0, y = 0; (y = 123) && (x < 4); x++);

A 、是无限循环
B 、循环次数不定
C、 4次
D 、3次
答案:C

解释:

先复习一下 for循环的用法:

for(初始化部分;条件判断部分;调整部分) 

{ // 循环体}

执行次数为 x = 0、1、2、3, x = 4 跳出循环,所以选择C

2、

以下程序的运行结果是()

#include <stdio.h>
int main(void) {
    printf("%s , %5.3s\n", "computer", "computer");
    return 0;
}

A 、computer , puter
B、 computer ,   com
C、 computer ,   computer
D 、computer , compu.ter

答案:B

解释:

每个字符串结尾都有一个默认的 ‘/0’,%s 打印遇到 ‘/0’ 就停止打印,所以第一 个 “computer” 会完整打印

先来解释一下通用的:%m.ns

m:输出字符串的宽度

n:左起截止目标字符串的 n个字符,并且是右对齐,左边不够补空格

  • 当 字符串长度 > n ,此时 m的作用失效了,直接截取 n个字符,并且是右对齐,左边不够补空格,格式输出宽度依旧为 m
  • 当 字符串长度 < n ,作用和 %s 一样,遇到 ‘\0’ 就停止,会完整打印整个字符串

        题目中的 %5.3s ,字符串长度8 > 3,5 的作用失效了,直接截取前 3个字符 ‘com’,格式输出宽度依旧为 5,右对齐,左边不够补空格,所以输出结果为:'  com'

所以选择B

3、

下列main()函数执行后的结果为()

int func(){
int i, j, k = 0;
for(i = 0, j = -1;j = 0;i++, j++){
k++;
}
return k;
}

int main(){
cout << (func());
return 0;
}

A 、-1
B、 0
C 、1
D、 2

答案:B

解释:
进入循环的条件是 j = 0,而 j 开始的值就为 -1,不满足循环条件,所以 k 依旧为 0,所以选择B

4、

下面程序输出是什么?

#include <stdio.h>
int main()
{
int a=1,b=2,c=3,d=0;
if(a == 1 && b++==2)
    if(b!=2||c--!=3)
    printf("%d,%d,%d\n" ,a,b,c);
else
    printf("%d,%d,%d\n" ,a,b,c);
else
    printf("%d,%d,%d\n" ,a,b,c);
return 0;
}

A 、1,2,3
B 、1,3,2
C、 3,2,1
D 、1,3,3
答案:D

解释:

上面的代码很乱,而且 if 语句还省略了缩进 {},我们看代码就容易出错

else 有最近匹配原则,所以 else会与它最近的 if 进行匹配

 还有要注意一点:|| 逻辑或:任意一方为真就执行。左边表达式为真,右边的表达式就不会执行

如题 if(a == 1 && b++==2),表达式左边为真,右边的表达式就不会执行,-- 也就不会执行,所以选择D

5、

若有定义语句: int a=10 ; double b=3.14 ; 则表达式 'A'+a+b 值的类型是()
A、 char
B、 int
C 、double
D、 float

答案:C

解释:

'A’是char类型,占一个字节,范围是-128 ~ 127
a是int 类型, 占4个字节,范围是 -21亿 ~ 21亿
c是double类型,占8个字节,范围是2.310的308次方 ~ 1.710的308次方

不同类型运算会自动提升(向高位提升),即小范围 -> 大范围,最后转换为double类型,所以答案选C

6、

int p[][4] = {{1}, {3, 2}, {4, 5, 6}, {0}};

中,p[1][2]的值是()
A 、1
B、 0
C 、6
D 、2
答案:B

解释:

p 数组的每个大括号是一行,都没有进行完全初始化,没初始化的默认为0, p[][4] 第一个参数没给,这是可以的,有几行第一个参数就为几,数组下标从 0 开始

数组补充完如下

1 0 0 0

3 2 0 0

4 5 6 0

0 0 0 0 

所以 p[1][2] = 0,标红色的,所以选择B

7、

选择表达式 11|10 的结果(本题数值均为十进制)()
A 、11
B 、10
C、 8
D、 2
答案:A

解释:

写出两个数的补码(正数的原码、反码、补码相同)

假设用8个 bit 表示:

11: 0000 1011

10 :0000 1010

| 按位或的规则:只有有一个为 1,结果 位 就为 1,其余情况为 0

转换为十进制就是 11,所以选择A

8、

fun(21)运行结果是()

int fun(int a){
a^=(1<<5)-1;
return a;
}

A 、10
B、 5
C、 3
D 、8
答案:A

解释:

^ 运算符的规则为:相同为0,相异为1

a ^= b  ---> a = a^b;

则 a ^= (1<<5)-1  ---> a = a ^ ((1<<5)-1)

1 << 5 就是 1 向左移动 5 个bit,0000 0001  ---> 0010 0000,十进制为32

最后 a = a ^ 31  ---> a = 21 ^ 31

最后转成十进制就是10,所以答案选A 

9、

若有定义语句:int year=1009,*p=&year;以下不能使变量 year 中的值增至 1010 的语句是()
A、 *p+=1

B 、(*p)++

C、 ++(*p)

D、 *p++

答案:D

解释: 这里考察的是运算符的优先级

 由图得知 * 的优先级大与 +=,()的优先级比 ++ 高

++ 的优先级比 * 要高,没有对1009进行++,而是对指针++,所以选择D

10、

下面关于"指针"的描述不正确的是()

A、 当使用free释放掉一个指针内容后,指针变量的值被置为NULL

B 、32位系统下任何类型指针的长度都是4个字节

C 、指针的数据类型声明的是指针实际指向内容的数据类型

D、 野指针是指向未分配或者已经释放的内存地址

答案:A

解释:

free指针只是把指向的空间销毁了 ,指针的值置空是要我们手动置空 

32位指针的长度都是4个字节,64位下是8字节

再说一下造成野指针的三大原因

  1. 定义时,没有初始化
  2. free掉后,没有置空
  3. 越界访问使用指针

所以选择A 

二、编程题

1、组队竞赛

题目链接:组队竞赛

思路分析:

  1. 首先对数据进行排序
  2. 然后进行分组,前面取一个后面取两个
  3. 然后对中间下标进行观察,可以发现规律

解题关键:如何进行分组(主要思路是贪心算法)

代码如下(C++):

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

int main()
{
    int n = 0;
    cin >> n;
    vector<int> arr;
    arr.resize(n*3);
    for(int i = 0; i < arr.size(); ++i)
    {
        cin >> arr[i];
    }
    sort(arr.begin(), arr.end());
    
    long long sum = 0;
    for(int i = 0; i < n; ++i)
    {
        sum += arr[arr.size() - 2*(i+1)];
    }
    
    cout << sum;
    
    return 0;
}

 2、删除公共字符

题目链接:删除公共字符

思路分析:

  1. 使用哈希思想,定义一个数组,遍历 s2,把 s2 里面有的字符映射到数组上
  2.   再遍历 s1,比较为0就插入 ret 中,即不重复的字符

代码如下(C++):

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

int main() 
{
    string s1, s2;
    getline(cin, s1);
    getline(cin, s2);
    
    int hash[256] = {0};
    for(int i = 0; i < s2.size(); ++i)
    {
        hash[s2[i]]++;
    }

    string ret;
    for(int i = 0; i < s1.size(); ++i)
    {
        if(hash[s1[i]] == 0)
        {
            ret += s1[i];
        }
    }

    cout << ret;

    return 0;
}

----------------我是分割线---------------

Day_01完结,下篇即将更新

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

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

相关文章

从零开始学C

以下是 该如何学习C语言的【思维导图】以及部分重点知识点的【博客链接】。其实C语言并不难&#xff0c;难的是没有人去教&#xff0c;没有耐心去学。不知道从哪下手学习&#xff0c;我将C的知识点做成一个思维导图&#xff0c;以供迷茫的小白参考&#xff0c;哪里不会&#xf…

快速且有效减小代码包的方法

前言当我们在发布一些APP或者小程序等比较小的程序时候&#xff0c;常常会对其主包大小进行一定的规定&#xff0c;若超过推荐的主包大小则性能会被大大影响&#xff0c;或者再严重一点就不给你过审。如微信小程序中也对主包有一定的大小要求。对此一些比较复杂的小程序就需要考…

【机器学习】P1 Cost Function

Cost Functione.g.e.g.e.g. 假设你想要卖一个房子&#xff0c;希望可以用人工智能来算出能卖多少钱。机器学习可以根据提供的数据集合构建出很多模型&#xff0c;但是到底哪种模型最好的拟合你的数据&#xff1f;或者说&#xff0c;哪种模型可以最准确的算出你的卖多少钱&#…

TikTok曝高危漏洞允许一键式帐户劫持,回应称已修复

据The Verge 8月31日消息&#xff0c; TikTok安卓版存在一个高危漏洞&#xff0c;攻击者可能借此实现一键式账户劫持&#xff0c;影响数亿用户 。 微软365防御研究小组在一篇博文中披露了该漏洞的细节&#xff0c; 影响范围为23.7.3之前的安卓版本 。在微软向TikTok报告后&…

如何用 JavaScript 编写你的第一个单元测试

前言 测试代码是使代码安全的第一步。做到这一点的最好方法之一是使用单元测试&#xff0c;确保应用程序中的每个小功能都能发挥其应有的作用–特别是当应用程序处于边缘情况&#xff0c;比如无效的输入&#xff0c;或有潜在危害的输入。 为什么要单元测试 说到单元测试&…

测试开发之Django实战示例 第十章 创建在线教育平台

第十章 创建在线教育平台在上一章&#xff0c;我们为电商网站项目添加了国际化功能&#xff0c;还创建了优惠码和商品推荐系统。在本章&#xff0c;会建立一个新的项目&#xff1a;一个在线教育平台&#xff0c;并创内容管理系统CMS&#xff08;Content Management System&…

OSI模型详解

今天&#xff0c;我们详解OSI&#xff08;Open System Inter-connection Reference Model&#xff09;模型&#xff0c;来看看工业物联网的网络互联和数据互通。 OSI模型 1984年&#xff0c;国际标准化组织&#xff08;International Organization for Standardization&#…

C控制语句(continue,break)

一.continue 3种循环都可以使用continue语句。执行到该语句时&#xff0c;会跳过本次迭代的剩余部分&#xff0c;并开始下一轮迭代 for(count0;count<10;count) { ch getchar(); If(ch \n) continue; putchar(ch&#xff09;&#xff1b; } 这条代码当中当ch等于\…

MySQL CAST()函数用法

一、语法 expr&#xff1a;源数据&#xff0c;如字符串’China’。type&#xff1a;目标数据类型&#xff0c;例如CHAR。 cast(expr AS type)二、命令说明 将任何类型的值转换为具有指定类型的值。 CAST()函数通常用于返回具有指定类型的值&#xff0c;以便在WHERE&#xff…

Vue3+mitt.js配置logger

前言 Vue项目中的组件通信方式&#xff0c;绝大多数的情况是可以被Vuex等方案代替的&#xff0c;但有一些特殊情况却非常适合使用EventBus&#xff0c;举个简单的例子&#xff1a;有A、B两个组件&#xff0c;用户在A上进行操作后&#xff0c;需要B执行某些逻辑。 由于Vue3中删…

TiDB在转转公司的发展历程

1 前言 2 运维痛点 3 解决痛点 3.1 元数据管理 3.2 机器资源管理 3.3 全面升级 3.4 告警改造 4 实现自动化 4.1 需求工单化 4.2 操作平台化 4.3 其他辅助功能 5 写在最后 1 前言 转转是PingCAP最早的一批用户之一&#xff0c;见证了TiDB的发展&#xff0c;自身也沉淀…

计讯物联高精度定位GNSS接收机TN521在水库大坝变形监测的应用解析

由于水库大坝在地质环境恶劣和气候条件复杂的条件下&#xff0c;水库坝体的稳定性会受到严重考验。为了保证水库大坝的安全运营&#xff0c;GNSS作为一种实现远程自动化测量的高精度的变形监测技术&#xff0c;具有高精度、高速度、全天候、连续实时、自动化等优势&#xff0c;…

WMS系统推荐,如何选到适合企业的仓库管理系统

市场上有很多WMS系统&#xff0c;但是现在很多仓库管理系统都在使用WMS系统。那么在选择WMS系统时应该考虑什么呢&#xff1f;明确业务发展特征&#xff0c;准确表达能力目标许多物流企业在选择物流管理系统时&#xff0c;往往会被物流管理系统的整体系统所迷惑&#xff0c;在功…

MySql的sql语句执行过程详述

目录 前言&#xff1a; sql语句的执行过程&#xff1a; server层&#xff1a; 存储引擎&#xff1a; 连接器&#xff1a; 查询缓存&#xff1a; 分析器&#xff1a; 优化器&#xff1a; 执行器&#xff1a; 前言&#xff1a; 很多人都在使用mysql数据库&#xff0c;但…

【软件测试】测试人的bug一生,资深测试的专业角度......

目录&#xff1a;导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09;前言 对于测试人员来说&a…

【Linux】进程的描述组织与进程状态

文章目录&#x1f3aa; 进程的描述组织&#x1f680;1.什么是进程&#x1f680;2.进程的形成&#x1f680;3.进程标识符 *⭐3.1 PS命令查看PID⭐3.2 /proc目录查看进程属性&#x1f680;4.父子进程⭐4.1 系统调用获取PID⭐4.2 fork创建子进程⭐4.3 fork双返回值问题⭐4.4 写时拷…

Netty源码解读-EventLoop(二)

一、简介 NioEventLoop的重要组成&#xff1a;Selector、线程、任务队列&#xff0c;他既会处理io事件&#xff0c;也会处理普通任务和定时任务. 1.下面是Selector&#xff0c;注意有两个哦后面会讲 2.下面的爷爷类提供的Thread变量&#xff0c;其实下面发excutor用的就是这个…

vue2中defineProperty和vue3中proxy区别

区别一&#xff1a;defineProperty 是对属性劫持&#xff0c;proxy 是对代理对象 下面我们针对一个对象使用不同的方式进行监听&#xff0c;看写法上有什么不同。 // 原始对象 const data {name: Jane,age: 21 }defineProperty defineProperty 只能劫持对象的某一个属性&…

TCP核心机制详解(三)

目录 前言&#xff1a; 滑动窗口 滑动窗口处理丢包问题 流量控制 拥塞控制 延时应答 捎带应答 面向字节流 异常情况 小结&#xff1a; 前言&#xff1a; 前两篇文章讲述了&#xff0c;TCP十种核心机制的前三种。这篇文章详细介绍其他的一些核心机制&#xff0c;让我们…