题目描述
请统计某个给定范围 [L, R] 的所有整数中,数字 2 出现的次数。
比如给定范围 [2, 22],数字 2在数 2 中出现了 1 次,在数 12 中出现 1 次,在数 20 中出现 1 次,在 数 21中出现 1 次,在数 22 中出现 2 次,所以数字 22 在该范围内一共出现了 6 次。
输入描述
输入共 1 行,为两个正整数 L 和 R,之间用一个空格隔开。
输出描述
输出共 1 行,表示数字 2 出现的次数。
样例输入 1
2 22
样例输出 1
6
样例输入 2
2 100
样例输出 2
20
代码及思路:
/*
根据题中所给数据,最大数据是10000,10000中没有2,我们可以
通过获得数据中每一位 的数据来判断2的个数,分别得到千位百位
十位和个位,在根据判断语句是否等于2来计算2 的个数
*/
#include<stdio.h> //头文件
int time2(); //函数声明
int main(void){
printf("%d",time2()); //调用函数
return 0;
}
int time2(){
/*
time:用来记录2出现的次数 qianWei,baiWei,shiWei,geWei分别
用来获取千位百位十位个位的数据,i控制循环
*/
int i,time=0,L,R,qianWei,baiWei,shiWei,geWei;
char c;
scanf("%d%c%d",&L,&c,&R); //输入两个数据空格用字符替代
i=L;
for(i;i<=R;i++){
qianWei=i/1000; //得到千位
baiWei=i%1000/100; //得到百位
shiWei=i%1000%100/10; //得到十位
geWei=i%1000%100%10; //得到个位
if(qianWei==2) time++; //通过if语句来判断2出现的次数
if(baiWei==2) time++;
if(shiWei==2) time++;
if(geWei==2) time++;
}
return time; //返回2出现的次数
}