主要思想请看代码的第17行的while方法
如果n的个位数不为0或者n的个位数为0但高位数不为0则用count+1并且将n/10,再次进入循环,直至n为0。n为0时即得到位数count
代码如下:
运行结果:
代码如下:
#include<stdioh>
int main()
{
int a,b;
int i;
printf("请输入一个数字:");
scanf("%d",&a);
b=a;
for(i=0;a>1;i++)
{
a=a/10;
}
printf("%d是%d位数\n",b,i);
}
扩展资料:
思路详解:
在C语言中,经常会用到以整数相除来确定一个整形数字的每一位的具体数字是多少,同理,此处可用整数相除来判断一个数的位数。
首先,使用scanf函数获取这个数字的值,且赋给变量b,作一个备份。
接着,确定核心思路为,当一个数整除10,第一次结果为1时,这个数是一个个位数。因而,以其作为循环内的主体。
得到了for(i=0;a>1;i++) a=a/10; 这样的代码,最后,输出结果即可。
简单,转换成字符串就行了
static void Main(string[] args)
{
int i = 300;
ConsoleWriteLine(iToString()Length);
}
当然,要是你的是浮点数,小数点也会算一位的(实际当中应该也算小数点,当然,你也可以自己排除)。
===============================
不用字符串的话,就这样
static void Main(string[] args)
{
int a = 2134;
int count = 0;
while (a != 0)
{
count++;
a /= 10;
}
ConsoleWriteLine(count);
}
限于整形的数,浮点数你思考思考就会了
1、从二进制的角度来看整数的有效位数,要从整数的编码说起,有符号整数编码包括原码、反码和补码三种常规编码方式,原码表示即最高位为符号位,0表示正数,1表示负数,如果以8位二进制位来表示,符号位要占1位,所以有效位数7位。 要获取整型类型在当前编译环境中所占的位数,可以使用sizeof运算符。
#include<stdioh>int main()
{
printf("sizeof int:%d\n", sizeof (int));
return 0;
}
2、如果要计算一个整数中的有效位数,可以不断的整除10求出来。如下代码:
#include<stdioh>int how_many_int(int s)
{
int i=0;
while(s!=0)
{s/=10; i++;}
return i;
}
int main()
{
int test;
do
{
printf("输入整数:");
scanf("%d", &test);
printf("有%d位\n", how_many_int(test));
} while (test!=~0);
return 0;
}
说明:输入数值超出int所表示的范围,编译器会对输入数进行取模 *** 作。输出-1结束循环,退出程序。
#include <stdioh>
#include <stdlibh>
#include <dosh>
#include <windowsh>
int main()
{
int a;
scanf("%d",&a);
if(a>=-9&&a<=9)
printf("1");
if(a>=-99&&a<=-10 || a>=10&&a<=99)
printf("2"); //这里的;丢失了!
if(a>=-999&&a<=-100 || a>=100&&a<=999)
printf("3");
if(a>=-9999&&a<=-1000 || a>=1000&&a<=9999)
printf("4");
Sleep(9999);
return 0;
}
运行的结果是对的!
思路:直接用Integer类的bit运算 *** 作。
如果想得到一个n位数的第k位,写法如下:
(n & ( 1 k )) k
内部实现就是:
1、创建一个mask,把1左移k位
int mask = 1 k;
2、然后把n右移mask位就是想要得到的结果
int masked_n = n & mask;
int thebit = masked_n k。
class Tester{
public static void main (String[] args) {
String str = "2013年6月12日,XXXXXXXXXXXXX";
String reg = "([^,,]+)[,,]$";
String r = strreplaceAll(reg, "$1");
reg = "^((\\d+)年)((\\d+)月)((\\d+)日)$";
String sy = rreplaceAll(reg,"$2");
String sm = rreplaceAll(reg,"$4");
String sd = rreplaceAll(reg,"$6");
int y, m, d;
try {
y = IntegerparseInt(sy);
} catch(Exception e) {
y = 0;
}
try {
m = IntegerparseInt(sm);
} catch(Exception e) {
m = 0;
}
try {
d = IntegerparseInt(sd);
} catch(Exception e) {
d = 0;
}
Systemoutformat("%d, %d, %d", y, m, d);
}
}
以上就是关于java中怎么得到输入的一个数字是几位数全部的内容,包括:java中怎么得到输入的一个数字是几位数、怎样用C语言判断一个整型数的位数、C#中如何求数字的位数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)