1、首先输入一个整型数字,显示他的位数
基本思想:对其进行整除10的运算
对其不断整除10,直到个位数时继续整除将会得到0,此时变会得到约束条件,具体操作如下:(只有函数本身,需要运行的可自己调用)
int Get_figure(int x)//获取输入数字位数函数
{
int i = 0;
while (x > 0)
{
x /= 10;//对x进行整除运算然后再赋值给x
i++;
}
return i;
运行结果如下:
2、对输入的数字进行顺序输出
基本思想,例如12对其顺序输出为12,可以先对其进行整除10运算,得到最高位1,然后将最高位丢掉,再用2整除1得2;那这个过程如何进行呢,具体过程如下图,一看便知
这就需要用到上面的显示位数的函数了,具体操作如下:
void Get_order(int x)//将输入的数字顺序输出
{
int figure = Get_figure(x);
int order = 0;
long long y = pow(10.0, (double)figure - 1);//求出
while (y > 0)
{
order = x / y;//对x做整除运算保留最高位
printf("%d", order);
x = x % y;//对x取模丢掉最高位,为下一次求最高位做准备
y = y / 10;
}
}
运行结果如下:
3、对输入的数字进行逆序输出
基本思想:先对其进行模10运算得到其最高位,然后丢掉期最低位,具体过程如下图:
具体操作如下:
void Get_reverse(int x) //对输入的数字逆序输出
{
int reverse = 0;
while (x > 0) {
reverse = x % 10;//先x进行模10运算得到最低位
printf("%d", reverse);
x /= 10;//将最低位丢掉
}
}
运行结果如下:
4、代码展示:
#include<stdio.h>
#include<math.h>
int Get_figure(int x)//获取输入数字位数函数
{
int i = 0;
while (x > 0)
{
x /= 10;//对x进行整除运算然后再赋值给x
i++;
}
return i;
}
void Get_order(int x)//将输入的数字顺序输出
{
int figure = Get_figure(x);
int order = 0;
long long y = pow(10.0, (double)figure - 1);//求出
while (y > 0)
{
order = x / y;//对x做整除运算保留最高位
printf("%d", order);
x = x % y;//对x取模丢掉最高位,为下一次求最高位做准备
y = y / 10;
}
}
void Get_reverse(int x) //对输入的数字逆序输出
{
int reverse = 0;
while (x > 0) {
reverse = x % 10;//先x进行模10运算得到最低位
printf("%d", reverse);
x /= 10;//将最低位丢掉
}
}
int main() {
int b = 0;
scanf_s("%d", &b);
printf("%d的位数为%d",b, Get_figure(b));
int c;
scanf_s("%d", &c);
printf("%d的顺序输出为:\n", c);
Get_order(c);
int d;
scanf_s("%d", &d);
printf("%d的逆序输出为:\n",d);
Get_reverse(d);
}