剥离奇数位上的数字逆序输出

输入一个整数,从低位开始取奇数位上的数字作为高位,依次构成一个新数输出。如:54321输出135。

从低位开始剥离:54321%10=1

但是下次不是剥2,而是奇数位上的3,即54321/100=543,再543%10=3

543/100=5,再5%10=5

5/100=0,没有位数可以剥离了,结束。

但是依次得到的是1 3 5 

0*10+1=1                      

1*10+3=13

13*10+5=135

6f25cca31b2d4a9a925fff5769322670.jpg

 ②剥离了一位,计算,下位不剥,以此类推。

定义一个flag变量,初值为1,剥离一位计算完之后将flag取反,下一位不剥离计算,之后flag置为1,剥离下一位并计算……

2831441b20744ee1926898e5b3153558.jpg

输入一个整数,从个位开始取出奇数位上所对应的数字,然后逆序排列。(输入12345,则输出135)

从低位开始剥 5 3 1      

     5----->     35------>   135

      :                 :                     :

5*1+0             3*10+5        1*100+35

即t初值为1,sum初值为0

sum=g*t+sum;

t=t*10;

代码:

int t=1,sum=0,n,g;
scanf("%d",&n);
while(n)
{
    g=n%10;
    sum=g*t+sum;
    t=t*10;
    n=n/100;
    
}
printf("%d\n",sum);

运行结果:

1ff1027166674864a218c0a6be5362a6.jpg

 

②利用flag控制奇数位剥离计算,偶数位跳过

int t=1,sum=0,n,g,flag=1;

scanf("%d",&n);

while(n)

{

if(flag)

{

    g=n%10;

    sum=g*t+sum;

    t=t*10;

}

    n=n/10;

    flag=!flag;

}

printf("%d\n",sum);

输入一个整数,将各个位数上能被3整除的数字,组成一个新数。(652394输出639)

从右往左剥离能被三整除的数得到9  3   6

但最后要输出639,和上题思路一样。

9*1+0=9

3*10+9=39

6*100+39=639

代码:

int t=1,sum=0,n,g;
scanf("%d",&n);
while(n)
{
    g=n%10;
    if(g%3==0)
    {
        sum=g*t+sum;
        t=t*10;
    }
    n=n/10;
    
}
printf("%d\n",sum);
运行结果:

6aea339a802949f19545138004cfefd1.jpg

 输入一个整数,将各个位数上能被3整除的数字,逆序排列,组成一个新数。(652394输出936)

从右往左剥离能被三整除的数得到9  3   6

要得到936

0*10+9=9

9*10+3=93

93*10+6=936

t=t*10+g    (t初值为0)

代码:

int t=0,n,g;
scanf("%d",&n);
while(n)
{
    g=n%10;
    if(g%3==0)
    {
        t=t*10+g;
    }
    n=n/10;
}
printf("%d\n",t);

运行结果:

59a32c235a6142019a409fef648c5dd2.jpg

小结:

5efb9894dae146d4b1730a6a2951b2e6.jpg

 

 

 

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值