如何从在C号提取数字?从最显著位开始时? [英] How to extract digits from a number in C? Begining from the most significant digit?
本文介绍了如何从在C号提取数字?从最显著位开始时?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
从数量从C中的至少显著开始四处位数为pretty容易:
Getting digits from a number beginning from the least significant in C is pretty easy:
#include <stdio.h>
int main()
{
int num = 1024;
while(num != 0)
{
int digit = num % 10;
num = num / 10;
printf("%d\n", digit);
}
return 0;
}
但是如何提取从第一个数字(在这里是1)开始的数字,该解决方案可以应用于任何数目的
But how to extract digits beginning from the first digit (here 1), that the solution could be applied to any number?
这将是微不足道的使用数组,但我不希望使用数组,我不希望使用逻辑运算符。
It would be trivial with arrays, but I don't want to use array, and I don't want to use logical operators.
推荐答案
假设一个32位有符号数为正,那么作为一个简单的例子:
Assuming a 32 bit signed number that is positive, then as a simple example:
#include <stdio.h>
int main()
{
int rmdr;
int dvsr;
int quot;
scanf("%d", &rmdr); // read in number
dvsr = 1000000000;
while(0 >= (quot = rmdr / dvsr)){ // skip leading zeroes
rmdr %= dvsr;
dvsr /= 10;
if(dvsr == 1)
break;
}
while(dvsr){ // display number
quot = rmdr / dvsr;
printf("%1d", quot);
rmdr %= dvsr;
dvsr /= 10;
}
printf("\n");
return(0);
}
或将小幅优化:
int main()
{
int rmdr;
int rm10;
int dvsr;
int quot;
scanf("%d", &rmdr); // read in number
rm10 = rmdr/10;
dvsr = 1;
while(dvsr < rm10) // skip to 1st digit
dvsr *= 10;
while(dvsr){ // display number
quot = rmdr / dvsr;
printf("%1d", quot);
rmdr %= dvsr;
dvsr /= 10;
}
printf("\n");
return(0);
}
这篇关于如何从在C号提取数字?从最显著位开始时?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文