今日份弱智代码2022.10.9

本文探讨了两种去除里程数中包含数字4的方法。一种通过逐位计算并调整数值,另一种则采用遍历方式,利用continue跳过包含4的数字。两段代码展示了不同的实现思路和技术细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我的垃圾代码:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main()
{
   int num,i;
   int a,a1,a3,a4;      //与最高位有关的数据计算
   int b,b1;         //与  虚假里程有关的数据计算
   scanf("%d",&num);
   a=num;
   for (a1=1;a<0;a1++)
   {
       a=a/10;   //算出位数

   }
   a3=1;
   a4=a1;                  //这个玩意是位数,这个非常重要
   while (a1>0)
    {
        a3=a3*10;
        a1=a1-1;
    }
   if (num>4*a3)
    num=num-a3;              //最高位是否要减去(去虚假里程

   for (i=a4;i>=1;i--)
   {
       b=num/a3;   // 这个位数值是将要减去的
       b1=b*10%10;
       if(b1>4)
        b=b+1;
       num=num-a3/10*b;
       a3=a3/10;
   }
   if (num%10>4)
    num=num-1;
   printf("%d",num);
    return 0;
}

别人的代码:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main()
{
   int num,i;
   int kil;
   scanf("%d",&num);
   kil=0;
   for (i=1;i<=num;i++)
   {
       if (i/100%10==4)
        continue;
       if (i/10%10==4)
        continue;
       if (i%10==4)
        continue;
       if (i==4)
        continue;
       kil+=1;
   }
   printf("%d",kil);
    return 0;
}
总结:思路打不开,不知道continue的用处吃了大亏

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值