文章目录
一、前言
本章节主要对基本运算中的拆位求解的题目进行讲解。
二、问题
问题:1605. 求一个两位数的个位和十位的和
类型:基本运算、拆位求解。
题目描述:
从键盘读入一个两位的整数 n ,请求出这个两位整数个位和十位的和是多少?
输入:
一个两位的整数 n 。
输出:
一个整数,代表 n 个位和十位的和。
样例:
输入:
24
输出:
6
1.分析问题
- 已知:一个两位的整数 n。
- 未知:这个两位整数个位和十位的和是多少?
- 关系:拆位求解 。
2.定义变量
- int n:用于存储输入的两位整数。
- int sum:用于存储个位和十位数字之和。
//二、数据定义
int n,sum;
3.输入数据
- 从标准输入(键盘)接收用户输入的两位整数,将其赋值给变量n。
//三、数据输入
cin>>n;
4.数据计算
利用整数除法(/)和取模运算(%)进行拆位求解:
- n / 10:整除运算,结果为n的十位数字(不带个位)。
- n % 10:取模运算,结果为n除以10的余数,即n的个位数字。
//四、数据计算
sum=n/10+n%10;
5.输出结果
- 将计算得到的sum值输出到标准输出(屏幕)。
//五、输出结果
cout<<sum;
完整代码如下:
#include <bits/stdc++.h>
using namespace std;
int main() {
// 一、分析问题
// 已知:一个两位的整数 n。
// 未知:这个两位整数个位和十位的和是多少?
// 关系:拆位求解
// 二、数据定义
// 定义变量 n 用于存储输入的两位整数
// 定义变量 sum 用于存储个位和十位数字之和
int n, sum;
// 三、数据输入
// 从标准输入(键盘)接收用户输入的两位整数,并将其赋值给变量 n
cin >> n;
// 四、数据计算
// 利用整数除法(/)获取 n 的十位数字(不带个位)
// 利用取模运算(%)获取 n 的个位数字
// 将十位数字与个位数字相加,得到它们的和,并将结果赋值给变量 sum
sum = n / 10 + n % 10;
// 五、输出结果
// 将计算得到的个位和十位数字之和(即变量 sum 的值)输出到标准输出(屏幕)
cout << sum;
// 六、程序结束
// 添加 return 0; 语句,表示主函数正常结束并返回整数0
return 0;
}
问题:1606. 求一个两位数倒序的结果
类型:基本运算、拆位求解
题目描述:
请输出一个两位的整数 n,倒过来的数,也就是输出这个两位数个位和十位颠倒的结果。
比如:整数 23 倒过来是 32,整数 18 倒过来是 81 ,整数 20 倒过来是 2。
输入:
两位整数 n。
输出:
n 倒过来的整数。
样例:
输入:
16
输出:
61
1.分析问题
- 已知:两位整数 n。
- 未知:n 倒过来的整数。
- 关系:拆位求解 。
2.定义变量
- int n:用于存储输入的两位整数。
- int result:用于存储倒过来的整数。
//二、数据定义
int n,result;
3.输入数据
- 从标准输入(键盘)接收用户输入的两位整数,将其赋值给变量n。
//三、数据输入
cin>>n;
4.数据计算
利用整数除法(/)和取模运算(%)进行拆位求解:
- 利用整数除法(/)获取 n 的十位数字(不带个位),并乘以10得到其在新整数中的位置。
- 利用取模运算(%)获取 n 的个位数字。
- 将十位数字与个位数字相加,得到颠倒后的整数,并将结果赋值给变量 result。
result = (n % 10) * 10 + (n / 10);
5.输出结果
- 将计算得到的倒过来的整数(即变量result的值)输出到标准输出(屏幕)。
//五、输出结果
cout<<result;
完整代码如下:
#include <iostream>
using namespace std;
int main() {
// 一、分析问题
// 已知:一个两位的整数 n。
// 未知:这个两位整数颠倒后的整数是多少?
// 关系:拆位求解
// 二、数据定义
// 定义变量 n 用于存储输入的两位整数
// 定义变量 result 用于存储颠倒后的整数
int n, result;
// 三、数据输入
// 从标准输入(键盘)接收用户输入的两位整数,并将其赋值给变量 n
cin >> n;
// 四、数据计算
// 利用整数除法(/)获取 n 的十位数字(不带个位),并乘以10得到其在新整数中的位置
// 利用取模运算(%)获取 n 的个位数字
// 将十位数字与个位数字相加,得到颠倒后的整数,并将结果赋值给变量 result
result = (n % 10) * 10 + (n / 10);
// 五、输出结果
// 将计算得到的颠倒后的整数(即变量 result 的值)输出到标准输出(屏幕)
cout << result;
// 六、程序结束
// 添加 return 0; 语句,表示主函数正常结束并返回整数0
return 0;
}
问题:1027 - 求任意三位数各个数位上数字的和
类型:基础问题、拆位求解
题目描述:
对于一个任意的三位自然数 x ,编程计算其各个数位上的数字之和 S 。
输入:
输入一行,只有一个整数 x(100≤x≤999) 。
输出:
输出只有一行,包括 1 个整数。
样例:
输入:
123
输出:
6
1.分析问题
- 已知:x的值。
- 未知:x各数位相加后的和s。
- 关系:拆位求解
2.定义变量
定义了一个整型变量x用于存储输入的三位整数,定义了另一个整型变量s用于存储x各数位相加后的和。
//2.定义变量
int x,s;
3.输入数据
通过cin从标准输入设备(通常是键盘)读取一个整数,并将其赋值给变量x。
//3.输入数据
cin>>x;
4.数据计算
-
先通过取模运算得到x的个位数(ge),即int ge=x%10;
-
然后通过连续两次除以10并取模得到x的十位数(shi),即int
shi=x/10%10; -
再通过除以100并向下取整得到x的百位数(bai),即int bai=x/100;
-
计算这三个数位上的数字之和并将结果赋值给变量s,即s=ge+shi+bai;
//4.数据计算
int ge=x%10;
int shi=x/10%10;
int bai=x/100;
5.输出结果
- 使用cout将计算出的各数位之和(s)输出到标准输出设备(通常是显示器)。
- 返回0,表示程序正常结束。
//5.输出数据
cout<<s;
return 0;
完整代码如下:
#include<iostream> // 引入C++标准输入输出流库,以便进行输入输出操作
using namespace std; // 使用标准命名空间std,简化代码中对库函数的调用
int main(){ // 程序主入口函数
// 1. 分析问题:已知一个整数x,要求计算其各个数位上的数字之和。
// 2. 定义变量
int x, s; // 定义整型变量x用于存储输入的三位整数,定义整型变量s用于存储各数位相加后的和
// 3. 输入数据
cin>>x; // 从标准输入(如键盘)读取一个整数并将其赋值给变量x
// 4. 数据计算
int ge = x % 10; // 计算x的个位数,通过取模运算获取
int shi = x / 10 % 10; // 计算x的十位数,通过连续除以10并取模获取
int bai = x / 100; // 计算x的百位数,直接除以100并向下取整获取
s = ge + shi + bai; // 将各数位的数值相加求和,并将结果存入变量s
// 5. 输出数据
cout<<s; // 将计算得到的各数位之和输出到标准输出(如显示器)
return 0; // 主函数返回0,表示程序正常结束
} // 结束main函数
问题:1028 - 输入一个三位数,把个位和百位对调后输出
类型:基础问题
题目描述:
输入一个三位自然数,然后把这个数的百位数与个位数对调,输出对调后的数。
输入:
输入一行,只有一个整数 x(100≤x≤999) 。
输出:
输出只有一行,包括 1 个整数。
样例:
输入:
123
输出:
321
输入:
120
输出:
21
1.分析问题
- 已知:x的值。
- 未知:对调后的数。
- 关系:拆位求解
2.定义变量
- 定义了一个整型变量x用于存储输入的三位整数。
int x,g,s,b;
3.输入数据
- 通过cin从标准输入设备(通常是键盘)读取一个整数,并将其赋值给变量x。
cin>>x;
4.数据计算
- 先通过取模运算得到x的个位数(ge),即int ge=x%10;
- 然后通过连续两次除以10并取模得到x的十位数(shi),即int shi=x/10%10;
- 再通过除以100并向下取整得到x的百位数(bai),即int bai=x/100;
- 将得到的各个数位上的数字按照新的顺序(原百位->个位,原十位->十位,原个位->百位)重新组合成一个新的整数,即g100 + s10 + b。
g=x%10;
s=x/10%10;
b=x/100%10;
5.输出结果
- 使用cout将重新组合后的整数输出到显示器。
- 主函数返回0,表示程序正常结束。
cout<<g*100+s*10+b;
return 0;
完整代码如下:
#include<iostream> // 引入C++标准输入输出流库,用于进行输入输出操作
using namespace std; // 使用标准命名空间std,简化对标准库函数的调用
int main(){ // 程序主入口函数
// 定义变量
int x, g, s, b; // 定义整型变量x用于存储输入的三位整数,g用于存储个位数,s用于存储十位数,b用于存储百位数
// 输入数据
cin>>x; // 从标准输入(如键盘)读取一个三位整数并将其赋值给变量x
// 数据计算与处理
g = x % 10; // 计算并获取x的个位数
s = x / 10 % 10; // 计算并获取x的十位数
b = x / 100 % 10; // 计算并获取x的百位数
// 将提取出的各个数位上的数字重新排列(将原百位、十位、个位分别调整为新数的个位、十位、百位)
// 这里通过乘以10的相应次方来实现位置调整
int rearranged_number = g * 100 + s * 10 + b;
// 输出数据
cout<<rearranged_number; // 输出重新排列后的整数到标准输出(如显示器)
return 0; // 主函数返回0,表示程序正常结束
} // 结束main函数
问题:1390-请从键盘读入一个四位整数,求这个四位整数各个位的和是多少?
类型:基础问题、拆位求解。
题目描述:
请从键盘读入一个四位整数,求这个四位整数各个位的和是多少?
输入:
一个四位整数 n 。
输出:
这个四位数各个位的和。
样例:
输入:
3456
输出:
18
1.分析问题
- 已知:一个四位整数 n 。
- 未知:这个四位数各个位的和。
- 关系:拆位求解
2.定义变量
- 定义整型变量x用于存储输入的四位整数,g用于存储个位数,s用于存储十位数,b用于存储百位数,q用于存储千位数。
int x,g,s,b,q;
3.输入数据
- 通过cin从键盘获取用户输入的四位整数,并将其赋值给变量x。
cin>>x;
4.数据计算
- 计算并分别提取x的个位、十位、百位和千位数,方法是利用取模和除法运算。
g=x%10;
s=x/10%10;
b=x/100%10;
q=x/1000%10;
5.输出结果
- 使用cout将各数位之和输出到显示器。
- 主函数返回0,表示程序正常结束。
cout<<g+s+b+q;
return 0;
完整代码如下:
#include<iostream> // 引入C++标准输入输出流库,提供cin和cout等功能
using namespace std; // 使用标准命名空间std,简化对库函数的调用
int main() { // 程序主入口函数
// 定义变量
int x, g, s, b, q; // 定义整型变量x用于存储输入的四位整数,g、s、b、q分别用于存储个位、十位、百位和千位数字
// 输入数据
cin>>x; // 从标准输入(如键盘)读取一个四位整数并将其赋值给变量x
// 数据计算与提取各个数位上的数字
g = x % 10; // 计算并获取x的个位数
s = (x / 10) % 10; // 计算并获取x的十位数
b = (x / 100) % 10; // 计算并获取x的百位数
q = x / 1000; // 计算并获取x的千位数(这里无需再进行取模运算,因为已确保输入的是四位数)
// 各数位数字求和
int sum_of_digits = g + s + b + q;
// 输出数据
cout<<sum_of_digits; // 输出各数位之和到标准输出(如显示器)
return 0; // 主函数返回0,表示程序正常结束
} // 结束main函数
问题:1109 - 加密四位数
类型:基础问题、拆位求解
题目描述:
某军事单位用 4 位整数来传递信息,传递之前要求先对这个 4 位数进行加密。加密的方式是每一位都先加上 5 然后对 10 取余数,再将得到的新数颠倒过来。
例如:原数是 1379 ,那么每位加 5 对 10 取余数的结果为 6824 ,然后颠倒该数,得到新数:4286。
再比如:原数是 2570,那么每位加 5 对 10 取余数的结果为 7025 ,然后颠倒该数,得到新数: 5207 。
请根据加密要求,写出加密算法!
输入:
加密前的 4 位数。
输出:
加密后的结果。
样例:
输入:
1379
输出:
4286
1.分析问题
- 已知:加密前的 4 位数。
- 未知:加密后的结果。
- 关系:拆位求解再做运算。
2.定义变量
int x,g,s,b,q;
3.输入数据
- 通过cin从键盘获取用户输入的整数,并将其赋值给变量x。
cin>>x;
4.数据计算
- 使用取模运算符 % 和除法运算符 / 来分离出原四位整数 x 的各个数位。例如,g = x % 10; 得到个位数,s = (x / 10) % 10; 得到十位数,以此类推得到百位和千位数。
g=x%10;
s=x/10%10;
b=x/100%10;
q=x/1000%10;
- 对于每一位数字,先加上5,然后对其结果取模10,这样可以确保每位数字仍保持在0到9之间。例如,g=(g+5)%10; 更新了经过变换后的个位数。
g=(g+5)%10;
s=(s+5)%10;
b=(b+5)%10;
q=(q+5)%10;
5.输出结果
cout<<g*1000+s*100+b*10+q;
return 0;
完整代码如下:
// 引入iostream库,以便进行输入输出操作
#include<iostream>
// 使用标准命名空间std,简化对库函数的调用
using namespace std;
int main() {
// 定义变量:x用于存储输入的四位整数,g、s、b、q分别用于存储个位、十位、百位和千位数字
int x, g, s, b, q;
// 输入数据:从用户通过键盘输入一个四位整数,并将其赋值给变量x
cin>>x;
// 计算并提取各个数位上的数字
g = x % 10; // 获取x的个位数
s = (x / 10) % 10; // 获取x的十位数
b = (x / 100) % 10; // 获取x的百位数
q = x / 1000; // 获取x的千位数(这里无需取模运算,因为四位数的千位就是除以1000的商)
// 对各数位数字加上5后取模10,确保结果仍在0-9范围内
g = (g + 5) % 10;
s = (s + 5) % 10;
b = (b + 5) % 10;
q = (q + 5) % 10;
// 输出数据:将重新组合后的整数输出到显示器
cout<<g * 1000 + s * 100 + b * 10 + q;
// 主函数返回0,表示程序正常结束
return 0;
}
三、感谢
如若本文对您的学习或工作有所启发和帮助,恳请您给予宝贵的支持——轻轻一点,为文章点赞;若觉得内容值得分享给更多朋友,欢迎转发扩散;若认为此篇内容具有长期参考价值,敬请收藏以便随时查阅。
每一次您的点赞、分享与收藏,都是对我持续创作和分享的热情鼓励,也是推动我不断提供更多高质量内容的动力源泉。期待我们在下一篇文章中再次相遇,共同攀登知识的高峰!