C语言巧用循环处理数字上篇(位数统计,正序、逆序输出)

       我是一名C语言初学者,C语言学到现在已初步了解了几种较为基础的程序设计结构。当学到循环控制结构时,我发现巧妙运用循环的特性,可以高效、快速的对任意进制数字进行处理(其中包括位数统计,正序、逆序输出等基本操作)。今天将这些知识整理出来与大家共享,希望在日后的学习、工作中能够对大家有所帮助。     

一、前期知识储备(与下面介绍的数字处理息息相关)                                           

1.除法运算                                                                                                           

      C语言里的除法运算和数学上的除法有一定的区别,区别在于数学上的除法参与运算的数字没有考虑到数据的类型,而C语言对数据类型的定义的使用具有极强的约束。                                                                                  

eg1:C语言中1/2等于0,而不是0.5,即取整数部分,这与数学上的除法运算规律上虽然相同,但在条件约束和取值上有本质上的区别,C语言如果想要达到得到一个浮点数的结果,就要考虑让两个操作数至少有一个是浮点数,强制乘一个0.1也是一个办法(即1.0/2或者1/2.0等)。       利用除法取整的特性,我们可以对数字进行以下操作:                                                          

(1)数字取高位                                                                                                                        

方法:用数字(num)除以10的位数(dig)减1次方(即num/10^(dig-1))                                                        

eg2:         123/100==1(即123/10^(3-1)==1)                                                            

(2)丢弃个位                                                                                                                          

方法:用数字(num)除以10(即num/10)                                                                                                        

eg3:  123/10==12(去掉个位数字3)-->12/10==1(去掉个位数字2)                                      

2.取模运算                                                                                                                

      取模运算和取余运算两个概念有重叠部分但又不完全一致。主要区别在于对负整数进行除法运算时操作不同(取余运算在求商时,向0方向舍入,而取模运算在计算商时,向负无穷方向舍入)。                                          

eg4:计算-7MOD4 (令a=-7,b=4,c为商,r为输出结果)                                                                              

第一步:求整数商c,如进行求模运算c=-2(向负无穷方向舍入),求余c=-1(向0方向舍入);                        

扫描二维码关注公众号,回复: 2630346 查看本文章

第二步:计算模和余数的公式相同,但因c的值不同,求模时r=1,求余时r=-3。                                                     

      总结:当a与b符号一致时,求模运算和求余运算所得的c的值一致,因此r也相同。当符号不一致时,结果不一样,求模运算结果的符号和b的一致,求余运算结果的符号和a一致。                                                            

利用除法取整的特性,我们可以对数字进行以下操作:                                                                                       

(1)数字取低位                                                                                                                       

 方法:用数字(num)对10进行取模运算(即n%10)                                                                                            

eg5:                         123%10==3                                                                            

(2)保留个位                                                                                                                          

方法:用数字(num)对10进行取模运算,保存在变量x中,接下来继续用num除以10,重复以上两个步骤,直到m%n==0结束(保留个位牵扯到数字位数的变化,因而需要借助除法运算来保留去掉个位后的数字 )。       

eg6: 令num=123,求数字123每个位上的数字                                                                                                                     

第一步:               x=num%10-------->x=3                                                                                         

第二步:          num=num/10----->num=12                                                                                    

第n步:                         m%n==0                                                                             

(由于这一期博客文字叙述内容过多,需要花时间理解,所以第二部分内容将在下一期博客中更新!!!)                     

猜你喜欢

转载自blog.csdn.net/sqrt_2/article/details/79496302
今日推荐