在不使用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进行处理还需改进。