笔试强训第一天
创始人
2024-04-12 17:03:52

选择题:

题目1:

 我们对这道题目进行分析:第一个打印的是computer没有什么问题,但是第二个%5.3s我们需要进行分析:

%m.ns

m表示输出字符串的宽度,这里输出字符串的宽度为5

n表示左起截取目标字符串的n个字符,并且左对齐,补全空格,这里表示左起截取目标字符串的3个字符,并且左对齐,补全空格。

我们输出字符串的宽度为5,所以默认输出的是compu,但是n为3,表示我们只截取前3个字符,也就是说我们截取的com,然后左对齐 ,对应的结果为"  com"。

总结:我们要明白%m.ns的意义,m表示的是输出字符串的宽度,n表示左起截取字符串的n个字符,并且是左对求,补全空格。

题目2:

 我们很轻松的分析出:第一个if语句是满足条件的,并且经过if语句后,a=1,b=3,c=3,我们再判断下一个if语句:b!=2已经满足条件,对于||,只要第一个满足条件后,第二个语句就不再执行,所以不会执行c--,所以打印的结果为1,3,3.

这道题目需要注意的点在于:对于if语句,假如||左面的已经满足条件,||右边的就不用再考虑了。

题目3:

 这道题主要考一个点:整型提升:当范围小的数据类型和范围大的数据类型一起进行计算时,范围小的数据类型会被转换为范围大的数据类型,char 和int相对于double都比较小,所以经过转换,类型变成了double

不同类型数据进行运算时,范围小的数据类型会被转换为范围大的数据类型。

 题目4:

 我们要清楚|的意思,|的意思是按位或,对应的二进位制只要有一个为1结果就为1

11对应的二进位制为1011

10对应的二进位制为1010

按位或的结果为1011结果为11.

这道题的要点在于|,|是按位或,表示对应的二进位制只要有一个为1对应的结果就为1.

 题目5:

 这道题的要点是^,^的名字是异或,异或就是两个数对应的二进位制相同时,对应的结果为0,不同时,对应的结果为1.

<<的意思是二进位制有效位左移动。

1<<5对应的二进位制为100000,-1对应的结果为11111

a=21,对应的二进位制为10101

异或的结果为01010,对应的结果为10.

^表示异或,对应的二进位制不同时,结果为1,相同时,结果为0.

<<表示把二进位制的有效位向左移动

出现野指针的三个原因:

指针定义的时候没有初始化

free释放空间的时候,没有把指针置为空。

第三个就是越界访问的问题。

编程题:

题目1:

 我们先写出代码,再进行分析:

#include
#include
#include
using namespace std;
int main()
{long long sum = 0;int n = 0;while (cin >> n){vector 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 += a[a.size() - 2 * (i + 1)];}cout << sum << endl;}return 0;
}

我们的思路是这样的:这道题目主要考验在数学计算中。

我们首先要输入n值,n值表示的是组数,每一个组数有三个元素。接下来,我们创建数组a,但我们数组a的空间没有初始化,我们可以使用resize进行初始化空间,我们需要初始化的空间的个数为3n个,初始化完毕后,我们通过for循环,把键盘上输入的数字输入到数组中,接下来,我们进行排序,把它们按照从小到的的顺序进行排序,排序之后,我们考虑如何求出最大的水平值,我们可以写几组数进行代入

例如:

 我们输入了两个组,一共六个元素,我们首先对它们进行排序:

 排序的结果是这样:我们可以让第一个元素和后两个元素为1组,第二个元素与剩下的两个元素为1组,计算出来的水平值和为10。

假如对于这样的一组数字:

 我们让第一个元素和后两个元素为1组,取出来

 

 再让第二个元素与后两个元素为1组,依此循环,我们的分组情况是这样的:

 我们的三个有效值分别为8,6,4

 我们可以通过一个公式计算出来对应的三个有效值的下标。

下标等于a.size()-2*(i+1)。

i表示组数,当i为0时,对应的下标7,对应的是8,当i等于1时,对应的下标为5,对应的是6,当i等于2时,对应的下标为3,对应的值为4.

所以我们可以设置一个sum值,设置一个for循环,让sum分别+=这些下标对应的元素即可。

然后把sum打印出来即可。

这道题考察的点在于:多组输入,数学计算,for循环的使用技巧

 题目2:

 我们可以采用哈希的方法:

#include
#include
using namespace std;
int main()
{string s1, s2;string s3 ;getline(cin,s1);getline(cin, s2);int hash[256] = {0};for (int i = 0; i < s2.size(); i++){hash[s2[i]]++;}for (int i = 0; i < s1.size(); i++){if (hash[s1[i]] == 0){s3 += s1[i];}}cout << s3 << endl;
}

创建三个string对象,s1表示一个字符串,s2表示另一个字符串,s3表示从s1中筛除掉s2中出现的所有元素。

对于这类题目,我们可以采用哈希数组的方式:

因为我们的字符串中有空格,所以我们要使用getline函数,使用getline函数的优点是遇到空格不表示结束输入,相当于整行的输入。

我们创建一个数组hash,数组元素有256个,原因是ascll码一共有256个,表示全部的字符个数。

我们通过for循环,遍历s2对象,hash数组中表示s2对象中每一个字符出现的次数。

然后我们再使用for循环遍历s1对象,通过s1中的每一个元素来访问hash数组中该元素出现的次数,对于出现次数为0的元素,我们让s3+=该元素。

这道题目主要应用到了哈希数组,哈希数组主要应用于从一个数组中剔除掉另一个数组中的元素,也应用到了getlin函数,以及对数组的深刻理解

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...