文章目录
一、题目
- 一、题目
- 二、解释说明
- 三、代码实例
- 四、题目结果
试题 A: 门牌制作(5分)
【问题描述】
小蓝要为一条街的住户制作门牌号。 这条街一共有 2020 位住户,门牌号从 1 到 2020 编号。 小蓝制作门牌的方法是先制作 0 到 9 这几个数字字符,最后根据需要将字 符粘贴到门牌上,例如门牌 1017 需要依次粘贴字符 1、 0、 1、 7,即需要 1 个 字符 0, 2 个字符 1, 1 个字符 7。 请问要制作所有的 1 到 2020 号门牌,总共需要多少个字符 2?
【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
二、解释说明有的小伙伴可能会这样写代码,代码如下:
public class Main {
public static void main(String[] args) {
int count = 0;
for(int i = 1; i 0){
if(i%10==2)count++;
i/=10;
}
}
System.out.println(count);
}
}
发现控制台怎么什么输出也没有呢?直接炸掉了 是因为当我们遍历每一个数的时候,没有给他找个替身,原本的值会发生改变。所以如果一开始i==10的话,执行完while循环的时候i本身就又变成了1,造成了死循环。
正确的代码如下,其中x就是替身
三、代码实例public class Main {
public static void main(String[] args) {
int count = 0;
for(int i = 1; i 0){
if(x%10==2)count++;
x/=10;
}
}
System.out.println(count);
}
}
四、题目结果
624