比如一个数1234,先统计它是一个四位数,然后顺序输出是1 2 3 4,逆序输出是4 3 2 1,用程序实现这个功能.
1.统计位数
int Getfigures(int n) //得到一个数有几位
{
int count=0; //定义一个计数器
do //用do...while是为了判断0
{
count++; //计数加一
n=n/10;
}while(n!=0); //while后面的分号不能忘
{
}
2.逆序输出
1234逆序输出 4 3 2 1,我们先输出4,然后丢弃4,剩下123,再输出3,丢弃3,这个过程其实就是先得到个位数,然后丢弃个位数,再从新的数里面得到新的个位数,再丢弃新的个位数,直到这个数变成0,得到个位很简单,只需要模上10就可以,丢弃个位也很简单,只需要整除十就可以。
void PrintReverse(int n) //逆序输出
{
if(n<0) //对负数判断
{
n=-n;
//printf("- "); //输出一次负号
}
do
{
printf("%d ",n); //对十取模,得到最后一位
n=n/10; //除十丢弃最后一位
}while(n!=0); //直到n为0的时候,这个数全部遍历完
printf("\n");
}
{
}
3.顺序输出
1234输出1 2 3 4,和逆序输出相反,是先得到最高位,在丢弃最高位,但是得到最高位和丢弃最高位要稍微麻烦一点,比如1234得到1,那就需要1234除以1000,十的三次方,82得到8就需要除以10,十的一次方,所以可以看出得到最高位的方法就是先得到它的位数,然后用这个数除以10的 位数减一 次方,丢弃这个最高位就是对10的位数减一次方取模, 我们可以通过power函数,求出10的几次方,但是这个函数的开销非常大,不建议对整数使用,我们可以用循环求出要被除和取余的数。
void PrintOrderf(int n) //顺序输出数字,非常重要
{
if(n<0)
{
n=-n;
printf("- ");
}
{
}
然后就可以对这个程序进行测试,要多写一些测试用例,防止有情况没有考虑到。
int main()
{
printf("%d\n",Getfigures(0));
printf("%d\n",Getfigures(10));
printf("%d\n",Getfigures(345));
printf("%d\n",Getfigures(123456789));
printf("%d\n",Getfigures(-123456789));
{
}