当前位置: 首页 > news >正文

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

目录

  • 一、选择题
  • 二、编程
    • 1、组队竞赛
    • 2、删除公共字符

一、选择题

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

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

A 是无限循环
B 循环次数不定
C 4次
D 3次

答案: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

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

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);elseprintf("%d,%d,%d\n", a, b, c);elseprintf("%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

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

答案:C

6、下面代码中,p[1][2]的值是()`

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

A 1
B 0
C 6
D 2

答案:B

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

答案:A

8、fun(21)运行结果是()

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

A 10
B 5
C 3
D 8

答案:A

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

答案:D

10、下面关于"指针"的描述不正确的是()
A 当使用free释放掉一个指针内容后,指针变量的值被置为NULL
B 32位系统下任何类型指针的长度都是4个字节
C 指针的数据类型声明的是指针实际指向内容的数据类型
D 野指针是指向未分配或者已经释放的内存地址

答案:A

二、编程

1、组队竞赛

入口:题目链接

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

题目解析:
队伍的水平值等于该队伍队员中第二高水平值,为了所有队伍的水平值总和最大的解法,也就是说每个队伍的第二个值是尽可能大的值。所以实际值把最大值放到最右边,最小是放到最左边。

解题思路:

  • 本题的主要思路是贪心算法,贪心算法其实很简单,就是每次选值时都选当前能看到的局部最解忧,所以这里的贪心就是保证每组的第二个值取到能选择的最大值就可以,我们每次尽量取最大,但是最大的数不可能是中位数,所以退而求其次,取每组中第二大的
  • 例如:现在排序后有 1 2 5 5 8 9 ,那么分组为1 8 9 和 2 5 5
  • 关系arr[arr.size() - 2 * (i + 1)]

代码展示:

#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main()
{int n;while (cin >> n){long long sum = 0;vector<int> a;a.resize(3 * n);for (int i = 0; i < 3 * n; i++){cin >> a[i];}std::sort(a.begin(), a.end());for (int i = 0; i < n; i++){sum = sum + a[a.size() - 2 * (i + 1)];}cout << sum << endl;}return 0;
}

2、删除公共字符

入口:题目链接

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

  1. 将第二个字符串的字符都映射到一个hash数组中,用来判断一个字符在这个字符串。
  2. 判断一个字符在第二个字符串,不要使用删除,这样效率太低,因为每次删除都伴随数据挪动。这里可以考虑使用将不在字符添加到一个新的字符串中,最后返回新的字符串。

代码展示:

#include<iostream>
#include<string>
using namespace std;
int main()
{// oj中IO输入字符串最好使用getline。string str1, str2;//cin>>str1; // 注意这里不能使用cin接收,因为cin遇到空格就结束了。getline(cin, str1);getline(cin, str2);// 使用哈希映射思想先str2统计字符出现的次数int hash[256] = { 0 };for (size_t i = 0; i < str2.size(); ++i){hash[str2[i]]++;}// 遍历str1,str1[i]映射hash对应位置为0,则表示这个字符在// str2中没有出现过,则将他+=到ret。注意这里最好不要str1.erases(i)// 因为边遍历,边erase,容易出错。string ret = "";for (size_t i = 0; i < str1.size(); ++i){if (hash[str1[i]] == 0)ret += str1[i];}cout << ret << endl;return 0;
}
http://www.lryc.cn/news/175687.html

相关文章:

  • 数据结构与算法之集合: Leetcode 349. 两个数组的交集 (Typescript版)
  • Unity 内存性能分析器 (Memory Profiler)
  • 前端携带Bearer Token
  • leetcode 周赛 364
  • 开机自启动Linux and windows
  • 科技云报道:大模型的阴面:无法忽视的安全隐忧
  • 2023年前端流行什么技术和框架了?
  • Nginx 背锅解析漏洞
  • AI与传统数据库 - ChatGPT风过之后 | 从Duet AI说开来
  • L1-032 Left-pad C++解法
  • Python 用列表实现模拟手机通讯录(简易版)
  • macOS使用官方安装包安装python
  • 如何重装Windows Mirosoft Store
  • 软考高级系统架构设计师系列论文真题七:基于构件的软件开发
  • git rebase 修改中间的commit
  • 登录业务实现 - token登录鉴权
  • 内存对齐--面试常问问题和笔试常考问题
  • 贪心算法-会议室问题
  • 单日 5000 亿行 / 900G 数据接入,TDengine 3.0 在中国地震台网中心的大型应用
  • 【VIM系列】cscope命令
  • Vue的自定义事件(Custom Events):实现组件间通信的强大工具
  • 简易实现通讯录(1.0)
  • CSS笔记——触发式动画Transition、主动式动画Animation、Transfrom 动画、CSS 3D 动画、阴影和滤镜样式
  • 软件测试之Web安全测试详解
  • MYSQL binlog
  • Web 基础概念
  • 谈谈最近招人的感受!
  • 【日常业务开发】Java调用第三方http接口的常用方式
  • 【大数据开发技术】实验04-HDFS文件创建与写入
  • 中国制造让苹果跪服,将再增加一家中国高科技供应商