在线python编程网页,湖南seo推广公司,wordpress添加夜间模式,合肥关键词优化平台整数是由数字和数位组成的#xff0c;比如327是一个三位数#xff0c;它的数字是3、2、7,数位是个数、十位、百位。
经常有些题目考查将一个整数拆分成各个数字#xff0c;以及将各个数字合成一个整数#xff0c;下面分别就此讨论。
注#xff1a;只考虑正整数#xff…整数是由数字和数位组成的比如327是一个三位数它的数字是3、2、7,数位是个数、十位、百位。
经常有些题目考查将一个整数拆分成各个数字以及将各个数字合成一个整数下面分别就此讨论。
注只考虑正整数只涉及整数拆成单个数字单个数字合成整数的情况不考虑整数拆成多个整数多个整数合成一个整数的情况。
一、整数的分离
1. 整数拆成数字的方法
把一个整数分离成各个数字比如一个三位数327分离成3、2、7需要用到除法、取余运算运算符分别为“/”、“%”。
有两种算法一种是一个接一个从数的尾部向头部取数我称“取尾法”一种是一个接一个从头部向尾部取数我称“取头法”。
(1)取尾法。
依次去尾327→32→3。采用除法实现327/1327327/1032327/1003。
依次取尾7→2→3。采用取余%实现327%10732%1023%103。
这是通用方法取最高位和最低位是有更简化的算法。
①最低位直接对10取余数即可。
②最高位直接除以10的n-1次方即可n是这个整数的位数比如求327的最高位327/1003。
按这种方式分离一个三位数的代码如下
#include stdio.hint main(){int num, one, ten, hundred;scanf(%d, num);one num%10;// 获取个位ten num/10%10;// 获取十位hundred num/100;// 获取百位printf(%d %d %d\n, hundred, ten, one);return 0;}
(2)取头法。
依次去头327→27→7。采用取余%实现327%1000327327%10027327%107。
依次取头3→2→7。采用除法实现327/100327/1027/17。
按这种方式分离一个三位数的代码如下
#include stdio.hint main(){int num, one, ten, hundred;scanf(%d, num);hundred num/100;// 获取百位ten num%100/10;// 获取十位one num%10;// 获取个位printf(%d %d %d\n, hundred, ten, one);return 0;}
以上两种方式都可实现整数的拆分但显然第一种方式更好理解而且也更具通用性因为每次都除以10再对10取余不用变来变去。
2.任意整数的分离
可以利用“取尾法”的上述优点分离任意一个整数。
代码如下
#includestdio.hint main(){int num,n;scanf(%d, num);while(num0){n num%10; // 取最后一位数字printf(%d, n);num/10; // 去除最后一位数字if (num 0) {printf( ); // 只在数字之间打印空格}}printf(\n);return 0;}
这段代码很简洁但有一个小缺点就是从低位向高位输出与原数字是反向的。如果要正向输出可以将变量存入数组后再输出。
另外还可以利用这段代码输出原整数是几位数只要再定义一个初值为0的变量计数器然后在while循环中自加就行了。
二、整数的合成
将各个数字合成一个整数就很简单了比如将3、2、7结合成整数3273273*100 2*10 7*1
合成的一个三位数的代码
#include stdio.hint main(){int num, one, ten, hundred;scanf(%d%d%d, hundred, ten, one);num hundred*100 ten*10 one*1;printf(%d\n, num);return 0;}