【6.题目信息】忘记的数字

【新知识】
【易错点】
当三个数字的差相等的时候 是插入整个数组前面 还是插入整个数组后面的问题
【代码】
int main() {
//先找到最小的公差
int arr[4];
int min;
for (int i = 0; i < 3; i++) {
cin >> arr[i];
}
if ((arr[2] – arr[1]) == (arr[1] – arr[0])) {
//代表这三个数公差都一样 所以只可能是要最小的话
min = arr[2] – arr[1];
//优先考虑插在前面 这样的话是最小的 如果插在前面变成了负数 那证明还是要插在最后面
if (arr[0] – min<0) {
cout << arr[2] + min;
}
else cout << arr[0] – min;
}
else if ((arr[2] – arr[1]) > (arr[1] – arr[0])) {
//后面的两位数字中间差一个数字 前面是刚刚好的
min = arr[1] – arr[0];
cout << arr[1] + min;
}
else {
//前面的两位数字中间差一个数字 前面是刚刚好的
min = arr[2] – arr[1];
cout << arr[1] -min;
}
}
【7.题目信息】找出真正的质数

【新知识】
纯数字反转字符串的方法
// 纯数学反转数字(核心:替代字符串逆序)
int reverseNumber(int num) {
int reversed = 0;
int temp = num; // 临时变量,避免修改原数
while (temp > 0) {
int last_digit = temp % 10;
reversed = reversed * 10 + last_digit;
temp = temp / 10;
}
return reversed;
}
将数字反转字符串的方法+字符串变回数字的方法+反转函数(头文件#include<algorithm>)
// 数字转字符串(正确写法)
string str = to_string(i);
// 字符串逆序
reverse(str.begin(), str.end());
// 逆序字符串转回整数
int reversed_num = stoi(str);
判断是否为质数(除了记住2是最小的质数 也要记得是除以i(因数),而不是除以2 头文件#include<cmath>)
【易错点】
有时候代码报的是花括号的错 实际上是括号的错
【代码】
1.用字符串的办法
#include<iostream>
#include<cmath>
#include<string>
#include<algorithm>
using namespace std;
//判断是不是质数
bool ifzhenzhishu(int number){
if(number<=1){
return false;
}
if(number==2){
return true;
}
for(int i=2;i<=sqrt(number);i++){
if(number%i==0){return false;}
}
return true;
}
int main(){
int M,N;
cin>>M>>N;
for(int i=M;i<=N;i++){
if(ifzhenzhishu(i)){
string str=to_string(i);
reverse(str.begin(),str.end());
if(ifzhenzhishu(stoi(str))){
cout<<i<<endl;
}
}
}
return 0;
}
【8.题目信息】逆序字符串的部分单词 但不包含分节符
【新知识】
当不知道有哪些标点符号的时候 就判断是否为英文字母 因为不是字母就是标点符号
-
步骤 1:精准定位 —— 找到单个单词的 “起止边界”
题目要求 “只逆序单词”,首先要明确 “什么是单词”:连续的英文字母(a-z/A-Z)就是单词,空格、逗号、句号等都是 “分隔符”。
- 用 start 标记单词的起始下标(初始为 0);
- 从 start 开始遍历,直到遇到第一个 “非字母字符”,这个位置就是 end(单词的结束下标);
- 此时 [start, end) 就是一个完整的单词区间(左闭右开,刚好包含所有字母,不包含分隔符)。
-
步骤 2:局部操作 —— 只逆序单词区间,不碰其他字符
找到单词的 [start, end) 区间后,只对这个区间执行 reverse 操作:
- reverse(str.begin() + start, str.begin() + end);
步骤 3:跳过无关 —— 定位下一个单词的起始位置
单词逆序后,需要 “跳过所有分隔符”,找到下一个单词的起始位置:
- 从 end 开始继续遍历,直到遇到第一个 “字母字符”,




