我自己敲的,但是不知道为啥还是差很多?,各位能帮我看一下吗?
#include<stdio.h>
#define N 2021
int main()
{
// 请在此输入您的代码
//我的想法在于,只需要知道有多少个字符串,那么就可以根据循环判断每一个位置上是否有相应的一个数值
//"2",根据有多少个2进行累加
//对于有多个数值的2来说,可以再进行一次判断
char number;
int count=0,i;
for(i=1;i<N;i++)
{
if((i/1000==2)||(i/100%10==2)||(i/10%100==2)||(i%10==2))//先对灭一个位置当中是否有2进行判断
count++;
if((i/1000==2)&&(i/10%100==2))//判断在不同位置上是否有相同的2,(该判断语句下是判断是否有两个2)
count++;
if((i/1000==2)&&(i%10==2))//前两个是在千位上是2进行判断
count++;
if((i/100%10==2)&&(i/10%100==2))//因为千位和百位不能同时为2,则少掉一种if判断
count++;
if((i/100%10==2)&&(i%10==2))//这里是,假设百十个都是2时已经进行了计算
count++;
if((i/10%100==2)&&(i%10==2)&&(i/100%10!=2))//判断只有在个位和十位同时为2时进行计算
count++;
}
printf("%d",count);
return 0;
}
这是别人的参考代码,属实是佩服
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int count=0;
for(int i=1;i<=2020;i++)
{
for(int j=i;j>0;j=j/10)
{
if(j%10==2)
{
count++;
}
}
}
printf("%d",count);
// 请在此输入您的代码
return 0;
}