您当前的位置: 首页 >  Java

梁同学与Android

暂无认证

  • 4浏览

    0关注

    618博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

第十一届蓝桥杯java B组第二场-试题A: 门牌制作

梁同学与Android 发布时间:2020-10-30 08:18:10 ,浏览量:4

文章目录
    • 一、题目
    • 二、解释说明
    • 三、代码实例
    • 四、题目结果

一、题目

试题 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

关注
打赏
1660730345
查看更多评论
立即登录/注册

微信扫码登录

0.2031s