#
include
<stdlib.h>
int
main
(
int
argc
,
char
*
argv
[
]
)
{
int
digit
,
number
,
pow
,
t_number
;
scanf
(
"%d"
,
&
number
)
;
t_number
=
number
;
pow
=
1
;
while
(
t_number
>
9
)
pow
=
pow
*
10
;
t_number
=
t_number
/
10
;
while
(
pow
>=
1
)
digit
=
number
/
pow
;
number
=
number
-
digit
*
pow
;
pow
=
pow
/
10
;
printf
(
"%d "
,
digit
)
;
printf
(
"\n"
)
;
return
0
;
Q:如何利用简单的基本运算来得到一个
数字
的各个数
位
上的
数字
?
A:利用除法和求余运算:以153为例
首先,百
位
最容易得到:153/100=1。任何三
位
数除以100都是得到其百
位
的
数字
其次,个
位
也好弄:153%10=3。任何三
位
数对10取余都是其个
位
数。
最后,十
位
数有四个方法。
最好想的:
1.用(原三
位
数—百
位
数* 100—个
位
数 * 1)/10
153-1X100-1X3=50; 50/10=5
2.将原三
位
数对100取余,再除以1
(1)设输入的数的
位
数为count,要从123456中提取1,可用123456/100000,即123456/(10的count-1次方)(2)同理,若要提取123456中的2,可123456%100000,得到23456,再沿用(1)的方法。上图是笔者在做这道题时的思路,有时没思路时也可以尝试逆推。printf("该整数
分离
结果为:");printf("输入一
位
正整数:");(3)故第一步,我们先统计出123456的
位
数。则
输出
:1,2,3,4,5,6,例如输入:123456。(4)具体方法参考代码。
在实际应用中,我们常常需要将整数的各
位
分割
后进行使用。
对整数的
分割
我们可以用一个while循环进行处理,并将
分割
后的整数置于一个数组中存储。
#include<stdio.h>
int main(){
int a=123567;
int result[10],i=0,j,temp;
//用一个while循环对整数进行
分割
while(a!=0){
result[i]=a%10;
i++; //记录整数
位
数
a=a/10;
i--; //结束while循环后i肯定
本来是想总结一下对一个int型数的操作有关的算法,但是发现有这么一类算法和数的各个数
位
有关,比如求水仙花数。其实这类算法最主要的就是把一个数的各个
位
分离
。所以就贴上简单易用的最重要的几句算法吧。
非递归方式
while(p){//p是要
分离
的数
printf("%2d",p%10);
p=p/10;
void fun(int p){
if(p==0) retu...