7-2 寻找幸运数
分数 100
切换布局
作者 刘昆
单位 中国矿业大学徐海学院
小 J 非常喜欢幸运数字 x(0≤x≤9),没事儿的时候,他喜欢计算一下从 l 到 r(0≤l≤r≤106) 的整数的每个位里,x 共出现了多少次?
现在告诉你 l,r,x 的值,请你帮小 J 算一下 x 出现的次数吧!
输入格式:
三个整数 l,r,x,含义如上。
输出格式:
输出一个整数,表示 x 出现的次数。
输入样例1:
10 20 1
输出样例1:
11
样例解释
10,11,12,13,14,15,16,17,18,19,20 中,共出现了 11 次 1。
一、思路
将l至r直接的每个数字的每一位数都拆分出来进行判断。
二、注意
在使用函数时注意你所使用变量是局部变量还是全局变量。
注意函数中的形参和实参。
三、代码实现
(1)计数写为全局变量(正确)
#include <stdio.h>
int l,r,x,i,count=0;//将计数所用的count写为全局变量。
void ss(int n) {
while (n) {
if (n%10==x) ++count;//count会一直累加不会清零。
n/=10;
}
return;
}
int main() {
scanf("%d%d%d",&l,&r,&x);
for (i=l;i<=r;i++)
ss(i);
printf ("%d",count);//最终输出的count就是范围内所有x的总数和。
return 0;
}
(2)计数写为局部变量(正确)
#include <stdio.h>
int l,r,x,i;
int ss(int n) {
int count=0;//这里count在计算范围内的其中一个数中出现了几次x。
while (n) {
if (n%10==x) ++count;
n/=10;
}
return count;
}
int main() {
int ans=0;
scanf("%d%d%d",&l,&r,&x);
for (i=l;i<=r;i++)
ans+=ss(i);//这里ans在计算范围内出现的所有x。
printf ("%d",ans);
return 0;
}