新生学c语言,不知道哪里错了,求指导

我的代码:

#include <stdio.h>

int main()

{

 int num, i, t, r, item;

 scanf_s("%d", &num);

 t = 0;

 for (i = 1; i <= num; i++)

 {

  item = i;

  while (item % 10 != 0)

  {

   r = item % 10;

   item = item / 10;

   if (r == 4)

   {

    t += 1;

    break;

   }

  }

 }

 printf("%d", num - t - 1);

 

 return 0;

}

 

首先明确没有等于4的情况
个位c>4时,多计算一公里需要num=num-1
<4时,不需要减
十位b>4时,多计算了10公里,num=num-10;且期间4,14,24,34,54,64,74,84,均为多加,其中规律为,b减5,为多跑公里数,例如num=87,多跑了三公里分别为54,64,74。所以num=num-10-4-(b-5);
<4时,十位数就表示多跑的公里数;num-十位数
百位a>4时,多计算了100公里,num=num-100;且期间num=num-100-(a-1)10-9(a-1);
<4时,num=num-10
a+9*a;

#include <stdio.h>
int main(){
    int num,a,b,c;
    scanf("%d",&num);
    if (num<1000&&num>1){
        a=num/100;
        b=num/10%10;
        c=num%10;
        if(a!=4&&b!=4&&c!=4){
            if(c>4)
                num-=1;
            if(b>4)
                num-=14-(b-5);
            else num-=b;
            if(a>=4)
                num-=100-(a-1)*10-(a-1)*9;
            else num-=10*a+9*a;
        }
        printf("%d",num);
    }
} 

这是我的思路