咱们分析一下:
请统计某个给定范围 的所有整数中,数字 2 出现的次数。 很明显,这是一道数位分离的题目。
二话不说,先上数位分离代码:
int cnt=0; //统计数字出现的次数
bool two(int k) { //基于函数实现
do {
int r = k % 10; //取个位
if (r == 2) //如果是2
cnt++; //次数加一
k /= 10; //除去个位
} while (k != 0); //由于整数除法中消完个位后为0,作为退出条件
return 0; //结束,可选
}
这里我就直接合并了
懂了数位分离,接下来就很好办了
只要一个循环遍历,统计出现总数就行了
附主函数:
int main() {
freopen("two.in", "r", stdin); //
freopen("two.out", "w", stdout); //别忘了文件操作
int l, r;
scanf("%d %d", &l, &r);
for (int i = l; i <= r; i++) { //循环遍历,统计
two(i);//判断,统计
}
printf("%d\n", cnt);
fclose(stdin);
fclose(stdout);
return 0;
}
完整代码
//头文件被苦力怕炸掉了
int cnt = 0;
bool two(int k) {
do {
int r = k % 10;
if (r == 2)
cnt++;
k /= 10;
} while (k != 0);
return 0;
}
int main() {
freopen("two.in", "r", stdin);
freopen("two.out", "w", stdout);
int l, r;
scanf("%d %d", &l, &r);
for (int i = l; i <= r; i++) {
two(i);
}
printf("%d\n", cnt);
fclose(stdin);
fclose(stdout);
return 0;
}
感谢能看到这里qwq