// getnumber.cpp : Defines the entry point for the console application.
//
// Author:shizhixin
// Email:szhixin@gmail.com
// Blog:http://blog.youkuaiyun.com/shizhixin
// Date:2012-05-06
/*
晚上无法入眠,随手翻开床头的编程珠玑看看,
做了做第三章的第8题,突然想做这样一个获取一个整数每个数字的小程序,
比如输入1131,输出1 1 3 1
程序给出了实现这个的三个算法,大致可以总结:
第一种方法是从大到小先取模后做除法,正序输出
第二种方法是从小到大先取模后做除法,不过做完后要逆序去零输出
第三种方法是先做除法后取模
个人认为第二种算法优于第一种,第三种算法优于第二种,
或许是我思维的一个过程,所以感觉总要有点进步才更新算法吧。
如果有更好更简单的算法实现的程序,欢迎交流!*/
#include "stdafx.h"
#include <math.h>
const int MAX_NUM_BIT = 5;
//参数异常判断
bool assert_para(int n)
{
if (n<=0 || n>pow(10,MAX_NUM_BIT))
{
printf("input number must be > 0 and < pow(10,MAX_NUM_BIT)!");
return false;
}
return true;
}
/*算法思想是先对10的幂从大到小取模
如果取模后的值与原来的值相等,则表示还未达到数的位数,继续下一幂
如果不等,则表示开始输出数
但是考虑到中间有零的情况,一旦开始输出数,
有相等情况应该是有0造成的*/
void func_getnumbe