输入一个整数,从低位开始取奇数位上的数字作为高位,依次构成一个新数输出。如: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
②剥离了一位,计算,下位不剥,以此类推。
定义一个flag变量,初值为1,剥离一位计算完之后将flag取反,下一位不剥离计算,之后flag置为1,剥离下一位并计算……
输入一个整数,从个位开始取出奇数位上所对应的数字,然后逆序排列。(输入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);
运行结果:
②利用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);
运行结果:
输入一个整数,将各个位数上能被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);
运行结果:
小结: