在给定范围内统计2出现的次数

本文介绍了一个简单的C语言程序,用于统计指定区间[L,R]内所有整数中数字2出现的总次数。通过逐位检查每个整数来实现这一目标。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

试题描述
请统计某个给定范围[L, R]的所有整数中,数字2出现的次数。比如给定范围[2, 22],数字2在数2中出现了1次,在数12中出现1次,在数20中出现1次,在数21中出现1次,在数22中出现2次,所以数字2在该范围内一共出现了6次。
输入格式
输入共 1 行,为两个正整数 L 和 R,之间用一个空格隔开。
输出格式
输出共 1 行,表示数字 2 出现的次数。
样例输入
样例 #1:
2 22

样例 #2:
2 100
样例输出
样例 #1:
6

样例 #2:
20
#include <stdio.h>
int main()
{
    int l,r,i,k,y;
    while(scanf("%d%d",&l,&r)!=EOF)
    {
        k=0;
        for(i=l;i<=r;i++)
        {
            y=1;
            while(1)
            {
                if(i/y%10==2)
                    k++;
                y*=10;
                if(i/y==0)
                    break;
            }
        }
        printf("%d\n",k);
    }
    return 0;
}

### C++ 中计算指定数字在范围内出现次数的方法 为了实现这一功能,可以结合两个主要部分的功能:一是生成指定范围内的随机数;二是统计特定数字在这组数据中出现的频率。 对于生成指定范围内的随机数,可以通过设置随机种子来确保每次运行程序时都能获得不同的随机序列。此过程涉及 `srand` 和 `rand()` 函数的应用[^2]: ```cpp #include <iostream> #include <ctime> #include <cstdlib> using namespace std; void setupRandomSeed() { srand(static_cast<unsigned int>(time(nullptr))); } ``` 接着定义一个函数用于生成给定上下限之间的随机整数值,并重复该操作达到所需的样本数量: ```cpp vector<int> generateRandomNumbers(int lowerBound, int upperBound, int count) { vector<int> numbers; for (int i = 0; i < count; ++i) { int num = rand() % (upperBound - lowerBound + 1) + lowerBound; numbers.push_back(num); } return numbers; } ``` 之后利用之前提到过的 `Count_Digit` 方法来遍历这些产生的随机数列表,从而统计目标数字在整个集合里出现了多少次[^1]: ```cpp int Count_Digit(const vector<int>& nums, int targetDigit) { int occurrence = 0; for(auto& num : nums){ int tempNum = abs(num); // 使用abs处理可能存在的负数情况 while(tempNum != 0 || (tempNum == 0 && targetDigit == 0)){ if((tempNum % 10) == targetDigit){ occurrence++; } tempNum /= 10; } } return occurrence; } ``` 最后,在主函数中调用上述辅助函数完成整个流程: ```cpp int main(){ setupRandomSeed(); const int LOWER_BOUND = 1000; const int UPPER_BOUND = 5000; const int COUNT = 100; const int TARGET_DIGIT = 7; auto randomNumbers = generateRandomNumbers(LOWER_BOUND,UPPER_BOUND,COUNT); cout << "The digit " << TARGET_DIGIT << " appears " << Count_Digit(randomNumbers,TARGET_DIGIT) << " times within the generated range."<<endl; return 0; } ``` 这段代码首先初始化了随机数发生器,随后创建了一个包含一定量随机整数的向量,再通过迭代这个容器里的每一个元素去匹配期望找到的目标位数,最终输出总的匹配数目。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值