题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
小蓝特别喜欢 2,今年是公元 2020 年,他特别高兴。 他很好奇,在公元 1 年到公元 2020 年(包含)中,有多少个年份的数位中包含数字 2?
运行限制
最大运行时间:1s
最大运行内存: 128M
所需变量
int ge;//代表个位上的数int shi;//代表十位上的数
int bai;//代表百位上的数
int qian;//代表千位上的数
int sum = 0;//代表多少个年份,初始化为0
int i;//循环变量
int n = 2020;//终止条件是2020
首先我们判断她到底是几位数,然后才好进行判断每一位是否有2,代码如下:
for(i = 1;i<=2020;i++){if(i<10){if(i == 2){sum++;}}else if(i<100){if(er(i)){sum++;}}else if(i<1000){if(san(i)){sum++;}}else{if(si(i)){sum++;}}}
我们知道它是几位数之后在分别进行判断,首先将每一位都获得,然后进行判断是否是2,如果是2那么我们就返回1,都没有2就返回0!代码如下:
int er(int a){int ge,shi;ge = a%10;shi = a/10;if(ge == 2 || shi == 2){return 1;}return 0;
}
int san(int a){int ge,shi,bai;ge = a%10;shi = (a/10)%10;bai = a/100;if(ge == 2 || shi == 2 ||bai == 2){return 1;}return 0;
}
int si(int a){int ge,shi,bai,qian;ge = a%10;shi = (a/10)%10;bai = (a/100)%10;qian = a/1000;if(ge == 2 || shi == 2 ||bai == 2 || qian == 2){return 1;}return 0;
}
最后进行整合,得到最终代码如下(编译器是dev,语言是C语言):
#include
using namespace std;
int er(int a){int ge,shi;ge = a%10;shi = a/10;if(ge == 2 || shi == 2){return 1;}return 0;
}
int san(int a){int ge,shi,bai;ge = a%10;shi = (a/10)%10;bai = a/100;if(ge == 2 || shi == 2 ||bai == 2){return 1;}return 0;
}
int si(int a){int ge,shi,bai,qian;ge = a%10;shi = (a/10)%10;bai = (a/100)%10;qian = a/1000;if(ge == 2 || shi == 2 ||bai == 2 || qian == 2){return 1;}return 0;
}
int main()
{int sum = 0,i,n = 2020;for(i = 1;i<=2020;i++){if(i<10){if(i == 2){sum++;}}else if(i<100){if(er(i)){sum++;}}else if(i<1000){if(san(i)){sum++;}}else{if(si(i)){sum++;}}}cout<