目录
一、选择题
1、格式化输出
知识点:格式化输出,%m.ns
2、逻辑判断--短路原则
知识点:
- else和最近的if匹配
- 条件语句中的逻辑与、或式子中,遵循短路原则(能不执行就不执行),如A&&B中,如果A为假,则不会再执行B,C||D中如果C为真,则不会在执行D
3、赋值语句
易错点:条件判断位置出现赋值语句时,不要错想成等式判断;赋值语句的值为等号右边的值
4、左移、异或
知识点:
- 左移运算,x<<n,结果为x*2^n (每左移一位相当于乘以2)
- 异或运算–同0非1
二、编程题
1、组队竞赛
题目链接:https://www.nowcoder.com/questionTerminal/248ccf8b479c49a98790db17251e39bb
思路:把数组排序,每次都去一个最小的和两个最大的为一组
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main()
{
int grp;
cin >> grp;
int n = 3 * grp;
vector<int> arr;
arr.resize(n);
for (int i = 0; i < n; i++)
{
//arr未提前申请空间时,应使用尾插
/*int num;
cin >> num;
arr.push_back(num);*/
cin >> arr[i];
}
//参数为迭代器
sort(arr.begin(), arr.end());
//防止求和溢出
long long sum = 0;
for (int i = 0; i < grp; i++)
{
sum += arr[n - 2 * (i + 1)];
}
cout << sum << endl;
return 0;
}
2、删除公共字符
题目链接:https://www.nowcoder.com/practice/f0db4c36573d459cae44ac90b90c6212?tpId=182&tqId=34789&ru=/exam/oj
思路:创建一个哈希数组,记录第二个字符串的每个字符的出现,然后遍历第一个字符串的同时检查哈希数组,输出答案
#include<iostream>
#include<string>
using namespace std;
int main()
{
string str1,str2;
getline(cin,str1);
getline(cin,str2);
int hash[128]={0};
for(auto c:str2)
{
hash[c]++;
}
for(auto c:str1)
{
if(hash[c]!=0)
continue;
else
cout<<c;
}
//cout<<endl;
return 0;
}