题解:题目实质为遍历1到2020的数字,并统计有多少个字符2。因此我们需要进行整数分解将数字拆开去得到个位、十位、百位、千位的数字是多少并与2比较,相等则count++。
考虑到1到9只有一个2,因此有初始值count=1。
代码:
#include<stdio.h>
int main()
{
int i;
int count=1;
for(i=1; i<=2020; i++)
{
if(10<=i&&i<100)
{
if(i%10==2)
{//检查个位
count++;
}
if(i/10==2)
{//检查十位
count++;
}
}
if(100<=i&&i<1000)
{
if(i%10==2)
{//检查个位
count++;
}
if(i/10%10==2)
{//检查十位
count++;
}
if(i/100==2)
{//检查百位
count++;
}
}
if(1000<=i&&i<=2020)
{
if(i%10==2)
{//检查个位
count++;
}
if(i/10%10==2)
{//检查十位
count++;
}
if(i/100%10==2)
{//检查百位
count++;
}
if(i/1000==2)
{//检查千位
count++;
}
}
}
printf("%d",count);
}
csdn题目代码:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int ans=0,x;
for(int i=1;i<=2020; i++)
{
x=i;
while(x)
{
if(x%10==2)
{
ans++;
}
x/=10;
}
}
cout<<ans;
return 0;
}
答案为:624个字符2。