输出整数的位数、按位输出(两种)以及逆序输出
本次数字的基本操作及解释
本次操作包括:
①求数字位数
输入一个数字,输出有几位数字。
例如输入465132
输出:6位
②数字逐位从高位到低位输出
输入一个数字从高位低位逐渐输出。
例如输入465132
则每一位输出 4 6 5 1 3 2 前面为每一位数字输出
③数字逐位从低位到高位输出
输入一个数字从高位低位逐渐输出。
例如输入465132
则每一位输出 2 3 1 5 6 4 前面为每一位数字输出
④数字逆序输出
例如输入465132 输出231564 前面整体为一个数
①求数字所占位数
int NumberLength(int number)
{
int Length = 0;
while (number != 0)
{
number /= 10;
Length++;
}
return Length;
}
在这里我们给函数传入我们输入的值。
int number;
printf("please input number:");
scanf_s("%d", &number);
printf("这个数有%d位\n", NumberLength(number));
我们通过每次对于输入的数字每次进行除10处理甩去最后一位数字,然后长度从1开始,每次删除一位数字之后让长度+1
②数字逐位从高位到低位输出
void PrintFromMax(int number)
{
int Putnumber;
int Length = NumberLength(number); //获得数字位数
int MaxBit = pow(10,Length-1); //获得以10为底数,指数为位数-1的值(后面解释)
while (number != 0)
{
Putnumber = number / MaxBit; //获得最高位
printf("%d\t", Putnumber); //输出最高位
number %= MaxBit; //甩掉最高位
MaxBit /= 10;
}
}
我们在获得以10为底以位数-1为指数的求解目的是为了获得最高位:
举例:输入465132
那么MaxBit的值就是 10 的 5 次方 及就是100000
那么用465132 / 100000 的时候就可以获得最高位的数组4
那么再用这个数字465132%100000进行操作时获得65132将最高位删除
后面不断进行 MaxBit / 10 来获得每一位的最高位,并且再获得之后再次丢弃
知道输入的数字等于0结束。
③数字逐位从低位到高位输出
void PrintFromMin(int number)
{
int PutNumber;
while (number != 0)
{
PutNumber = number % 10;
printf("%d\t",PutNumber);
number /= 10;
}
}
从低位到高位的输出,我们先通过取余获得最后一位:
例如 465132 % 10 得到 2 然后利用 465132 / 10 去除最后以为 让最后一位变成3
不断循环操作 知道输入的数字变成0
④数字逆序输出
int Reverse(int number)
{
int PutNumber;
int Multiply = 1;
int Reserse = 0;
int Length = NumberLength(number);
int MaxBit = pow(10, Length - 1);
while (number != 0)
{
PutNumber = number / MaxBit;
Reserse += PutNumber * Multiply;
number %= MaxBit;
MaxBit /= 10;
Multiply *= 10;
}
return Reserse;
}
上述过程相对于从低位到高位输出来说,只是在甩掉数字之前把数字保留下来
然后进行以下操作:
例如:输入465132
465132 % 10 获得 2 然后操作2*1
甩掉2之后 46513 % 10 获得 3 然后操作3✖10 然后和前面2×1相加
甩掉3之后 4651 % 10 获得 1 然后操作1×100 然后和前面2×1 3✖10 相加
以此类推 知道输入的数字变成0 退出 然后输出加起来的数字