非正版题解,简单还“易懂”
2026-10-11 08:58:29
发布于:浙江
0阅读
0回复
0点赞
首先就是从1到你输入的第一个数里出现了几个你输入的第二个数
假设输入的是11 1,那么就要从1遍历到11,区间有1 2 3 4 5 6 7 8 9 10 11
里面有4个1,那么我们先打框架,main函数里定义一个n,一个k,一个计数器cnt=0,再输入n和k,用一个for循环从1遍历到n,代码如下:
int n,k,cnt=0;
cin>>n>>k;
for(int i=1;i<=n;i++)
循环内部定义一个整型变量t=i,接着我们要遍历t的每一位,但t是整形,所以我们要用while遍历t的每一位,while循环条件是t!=0,循环内要看t%10是不是k,是的话cnt++,随后t/=10,代码如下哈:
while(t!=0)
{
if(t%10==k)cnt++;
t=t/10;
}
最后for循环外输出cnt就行了。
完整代码,请自行欣赏:
#include <bits/stdc++.h>
using namespace std;
int cnt;//计数器
int main()
{
int n,k;
cin>>n>>k;
for(int i=1;i<=n;i++)//遍历从1到n
{
int t=i;//临时的变量
while(t!=0)//不要用i
{
if(t%10==k)cnt++;//看看t%10是否是k
t=t/10;
}
}
cout<<cnt;
return 0;
}
这里空空如也



有帮助,赞一个