在不使用scanf函数如何对输入的数进行逆序输出呢?首先要得到该数的位数,因为需要在顺序输出里使用。
代码如下:
int Getfigure(int n)
{
int tmp=0; //计算循环次数
while(n != 0)
{
n /= 10;
tmp++;
}
return tmp; //该数的位数
}
其次要清楚该处理什么样特点的数,对这个数的个位进行处理。
例如:123 先对3进行处理,用这个数对10求余得到3。但又如何处理剩下的数呢,这个时候还要利用“神奇”的数字10,对123这个数进行除10的操作,剩下12,再循环算一次剩下1,最后一共计算了3次,也就是该数的位数。
代码如下:
void Reverse(int n)
{
while(n != 0)
{
printf("%d",n%10);
n /= 10;
}
printf("\n");
}
运行结果:
那么又如何顺序输出该数呢?
其实顺序输出就是对最高位进行处理。
例如:123 用该数对10的2次方进行除法运算剩下1,这个值就是需要得到的值。同时该数要对10的2次方求余得到剩下的23,并进行循环, 得出结果。
代码如下:
void PrintOrder(int n)
{
int figure=Getfigure(n);//求出n的位数
int high=(int)pow((float)10,(float)figure-1); //对最高位处理
int tmp;
while(high != 0)
{
tmp = n / high;
n %= high;
high /= 10;
printf("%d",tmp);
}
printf("\n");
}
运行结果:
这样就基本完成了对数据的处理,但未对负数以及0进行处理还需改进。