题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
小蓝要为一条街的住户制作门牌号。
这条街一共有 2020 位住户,门牌号从 1 到2020 编号。
小蓝制作门牌的方法是先制作 0 到 9 这几个数字字符,最后根据需要将字符粘贴到门牌上,例如门牌 1017 需要依次粘贴字符 1、0、1、7,即需要 1 个字符 0,2 个字符 1,1 个字符 7。
请问要制作所有的 1 到2020 号门牌,总共需要多少个字符 2?
运行限制
最大运行时间:1s
最大运行内存: 128M
所需变量
int gewei;//代表各位上是2的有多少个
int shiwei;//代表各位上是2的有多少个
int baiwei;//代表各位上是2的有多少个
int qianwei; //代表各位上是2的有多少个
int a = 2020; //要求的移植到2020,把它作为变量
int b = 100;//计算十位所需要的变量
我们首先可以知道每十个里面就有一个2,那么我们直接可以知道个位上需要202个2,然后是十位上就是没100个里面就会有十个2,但是我们要考虑到小数,所以对于十位数我们用的数是float类型,对于百位就是每一千个就有一百个2,那么我们就是2020/1000然后再乘上100就得到了,千位上就是20个,部分代码如下:
gewei = 2020/10;//202
shiwei = (int)((a/b)*10);//202
baiwei = (2020/1000)*100;//200
qianwei = 20;
得到每位上都有多少个2,最后我们将其相加得到最终答案!
完整代码如下(编译器是dev,语言是C语言):
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
// 请在此输入您的代码
int gewei,shiwei,baiwei,qianwei;
float a = 2020,b = 100;
gewei = 2020/10;//202
shiwei = (int)((a/b)*10);//202
baiwei = (2020/1000)*100;//200
qianwei = 20;
printf("%d",gewei+shiwei+baiwei+qianwei);
return 0;
}