题目描述:
例如:数字x为3;
给定范围为:[2,34];
数字3在3中出现一次,在13中出现一次,在23中出现一次,在30`31`32·34中各出现一次,在33中出现两次。
输出为:9;
输入格式:
数字L,R,X中间用一个空格隔开。
输入样例:
2 34 3
输出样例:
9
题目分析:
我们以x=13为例,求数字3出现的次数。
我们可以看到 x%10==3(即打印出了x的个位,此结果为我们想要,保存下来),接着我们要继续打印出x的十位...百位.......这时我们需要x=x/10。然后将这两个式子放入循环中,只要x 不等于0,就要继续循环。
代码如下:
#include <stdio.h>
#include <string.h>
int main()
{
int L,R,X;
scanf("%d %d %d",&L,&R,&X); //输入要求输入的数字
int i,j,k=0,y=0; //定义K用来存储数字X出现的次数
for(i=L;i<=R;i++)
{
y=i;
//这里需要用y来存储当前i的值,若直接将i放入while循环中,等到循环结束,i的值会发生改变。
while(y!=0)
{
j=y%10;
if(j==X)
k++;
y=y/10;
}
}
printf("%d",k); //最后打印出k的值即可。
return 0;
}
验证一下: