邯郸手机建站价格,平面设计属于哪个专业大类,桂林欣梦网络招聘,保定专业网站建设day21--梦境数数--2.25
习题概述
题目背景
Bessie 处于半梦半醒的状态。过了一会儿#xff0c;她意识到她在数数#xff0c;不能入睡。
题目描述
Bessie 的大脑反应灵敏#xff0c;仿佛真实地看到了她数过的一个又一个数。她开始注意每一个数码#xff08;0…9#x…day21--梦境数数--2.25
习题概述
题目背景
Bessie 处于半梦半醒的状态。过了一会儿她意识到她在数数不能入睡。
题目描述
Bessie 的大脑反应灵敏仿佛真实地看到了她数过的一个又一个数。她开始注意每一个数码0…9每一个数码在计数的过程中出现过多少次
给出两个整数 M 和 N求在序列 [M,M1,M2,…,N−1,N] 中每一个数码出现了多少次。
输入格式
第 1 行: 两个用空格分开的整数 M 和 N。
输出格式
第 1 行: 十个用空格分开的整数分别表示数码 0…9 在序列中出现的次数。 代码表示
#includebits/stdc.h
using namespace std;int main() {int M, N;cin M N;
//创建了一个长度为 10 的整型数组 count
//用于存储每个数字0 到 9在序列中出现的次数int count[10] {0}; for (int i M; i N; i) {int num i;while (num 0) {count[num % 10]; // 获取 num 的最后一位数,之后再对应加1 num / 10;//将 num 的最后一位数字去除}}for (int i 0; i 10; i) {cout count[i];//输出当前数字出现的次数 if (i 9) {cout ;}}cout endl;return 0;
}
心得体会
1. int count[10] {0}; for (int i M; i N; i) { int num i; while (num 0) { count[num % 10]; num / 10;
当我们遍历从 M 到 N 的每一个数字时可以写在一个循环中我们需要对每个数字的每一位进行统计。这段代码使用了一个嵌套的 for 循环和 while 循环来实现。
外层的 for 循环会依次将 M 到 N 之间的每个数字赋值给变量 i。这个变量 i 就代表当前正在处理的数字。在内层的 while 循环中我们首先将当前数字 i 复制给另一个变量 num以便进行处理。
使用 num % 10 取模运算获取 num 的最后一位数字。这是通过对 num 取余数来实现的。例如当 num 是 1234 时num % 10 的结果就是 4。
使用 count[num % 10] 将 num 的最后一位数字作为索引将 count 数组中相应位置的元素加1。这样就实现了对该数字的出现次数进行统计。
通过 num / 10 将 num 的最后一位数字去除以便处理下一位数字。这是通过整除运算来实现的。例如当 num 是 1234 时num / 10 的结果就是 123。
通过不断重复这个过程我们可以逐位统计每个数字在当前数字 i 中的出现次数直到 num 不再大于 0。这样内层的 while 循环会处理完当前数字 i 的所有位数并将统计结果记录在 count 数组中。然后外层的 for 循环会继续处理下一个数字直到遍历完从 M 到 N 的所有数字。
2. 整体代码可以这样理解
这段C代码的主要目标是统计在给定序列 [M, M1, M2, ..., N-1, N] 中每个数字0到9出现的次数。它的实现过程可以总结如下
1声明两个整数类型的变量 M 和 N并从输入中读取它们的值。
2创建一个长度为10的整型数组 count用于存储每个数字在序列中出现的次数并将数组的所有元素初始化为0。
3使用一个循环遍历从 M 到 N 的所有数字。
4在循环内部使用取模运算获取当前数字的最后一位并将对应位置的 count 数组元素加1以统计该数字的出现次数。然后通过整除运算去除当前数字的最后一位以便处理下一位数字。
5使用另一个循环遍历 count 数组中的所有元素输出每个数字的出现次数。同时在输出之间添加空格进行分隔。
6最后输出一个换行符以确保输出结果的格式正确。
7程序正常结束并返回值为0。