C语言如何计算一个整数的位数

 更新时间:2022年11月14日 08:35:07   作者:菜菜菜三菜  
这篇文章主要介绍了C语言如何计算一个整数的位数,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

计算一个整数的位数

只需要设计一个计时器,因为C语言中除法只留下整数部分,所以可以拿数字/10;数字位数即为循环次数,待n为个位时n/10=0,然后循环结束。

#include<stdio.h>
int main()
{
	int n;
	int count = 0; 
	
	scanf("%d",&n);
	if(n == 0)//n为0的情况,个人感觉无位数,退出 
	{
		return 0;
	}
	else
	{
		while(n)
		{
			n=n/10;//每次去掉数字最后一位
			count++;//循环一次计数器+1
		}
	}
	printf("%d",count);
	
	return 0;
}

关于如何获取整数各个位

对于这个在实际的编程题中应用比较多,做了一个总结。

基础思路

...
int i=123,a;
a = i%10;
printf("a=%d",a);

输出的便是i的个位数

a=3

然后知道通过 i/10 便可"清除"个位数

由此我们便可以通过循环此方法获取各个位数

...
int i=123,a,b,c;
a = i%10;
i/=10;
b = i%10;
i/=10;
c = i%10;
i/=10;
printf("a=%d,b=%d,c=%d",a,b,c);

输出的a,b,c便是 i 的个位数,十位数,百位数

于是我们便知道将整数反转的方法

...
int i;
long rex = 0;//反转后的整数
while(i != 0){
    rex = rex*10 + i % 10;
    i = i / 10;
}//溢出判断暂时忽略

将整数反转后那我们又可以得到将整数按位存入数组的方法

int i,j,count=0;
int nums[numsSize];//需要存入的数组
long rex = 0;
while(i != 0){
    rex = rex*10 + i % 10;
    i = i / 10;
}
...
while(rex != 0)
{
    j = rex % 10;//获取个位数
    nums[count] = j;
    rex/=10;
    count++;
}

反之也可以将字符串转化为整数,不过本质是一样的,就不多说了。 

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • C++实现读入二进制数并转换为十进制输出

    C++实现读入二进制数并转换为十进制输出

    本文给大家介绍的是一则使用C++实现读入二进制数并转换为十进制输出的代码,实现起来其实非常简单,C++本身就提供了二进制类库的,大家看代码吧,简单又实用。
    2015-03-03
  • 一文详解C++ 智能指针的原理、分类及使用

    一文详解C++ 智能指针的原理、分类及使用

    智能指针的本质就是使用一个对象来接管一段开辟的空间,这篇文章就来给大家介绍介绍C++智能指针的原理,分类及使用方法,文中有详细的代码示例,需要的朋友可以参考下
    2023-05-05
  • C语言中二级指针的实例详解

    C语言中二级指针的实例详解

    这篇文章主要介绍了C语言中二级指针的实例详解的相关资料,希望通过本文能帮助到大家,让大家掌握理解二级指针的知识,需要的朋友可以参考下
    2017-10-10
  • 详解C++中的增量运算符++和减量运算符--的用法

    详解C++中的增量运算符++和减量运算符--的用法

    这篇文章主要介绍了C++中的增量运算符++和减量运算符--的用法,分为前缀情况和后缀情况来讲,需要的朋友可以参考下
    2016-01-01
  • C++中二叉堆排序详解

    C++中二叉堆排序详解

    这篇文章主要介绍了C++中二叉堆排序详解,主要介绍了二叉堆排序(递归和非递归实现上沉、下沉算法),需要的朋友可以参考下
    2023-01-01
  • QT实战之打开最近文档功能的实现

    QT实战之打开最近文档功能的实现

    这篇文章主要为大家详细介绍了如何利用Qt实现打开最近文档功能,并实现基本的新建、打开、保存、退出、帮助等功能,感兴趣的可以动手尝试一下
    2022-06-06
  • 深入理解C语言中编译相关的常见错误

    深入理解C语言中编译相关的常见错误

    本篇文章是对C语言中编译相关的常见错误进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • 关于memcpy和memmove的一点重要说明

    关于memcpy和memmove的一点重要说明

    下面小编就为大家带来一篇关于memcpy和memmove的一点重要说明。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-12-12
  • 深入解析C++的循环链表与双向链表设计的API实现

    深入解析C++的循环链表与双向链表设计的API实现

    这篇文章主要介绍了C++的循环链表与双向链表设计的API实现,文中的示例对于链表结点的操作起到了很好的说明作用,需要的朋友可以参考下
    2016-03-03
  • 详谈signed 关键字

    详谈signed 关键字

    c++中关键字有几十个,其中类型修饰关键字有long, short, singed, unsigned。今天我们就来谈一下经常被大家忽视的signed关键字
    2015-01-01

最新评论