资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

c语言取位函数的实现 c语言取位数的函数

C语言怎样提取一个数的十位个位百位千位?

设一个数为n,则在C语言中其个位、十位、百位、千位依次这样计算:n/1%10,n/10%10,n/100%10,n/1000%10

成都创新互联公司专注于企业成都全网营销推广、网站重做改版、临朐网站定制设计、自适应品牌网站建设、H5响应式网站商城建设、集团公司官网建设、成都外贸网站建设、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为临朐等各大城市提供网站开发制作服务。

代码如下:

#includestdio.h

int main(){

int n = 123456;

int unitPlace = n / 1 % 10;

int tenPlace = n / 10 % 10;

int hundredPlace = n / 100 % 10;

int thousandPlace = n / 1000 % 10;

printf("个位:%d\n十位:%d\n百位:%d\n千位:%d\n", unitPlace, tenPlace, hundredPlace, thousandPlace);

getchar();

return 0;

}

运行结果如图:

扩展资料

C语言的运算符包含的范围很广泛,共有34种运算符。C语言把括号、赋值、强制类型转换等都作为运算符处理。从而使C语言的运算类型极其丰富,表达式类型多样化。灵活使用各种运算符可以实现在其它高级语言中难以实现的运算。

参考资料:百度百科--C语言

c语言中如何提取二进制数中的某一位?

下面是三种方式:

①通过模2除2(%2、/2)的方法

num%2——取出二进制的最后一位

num/2——右移去掉二进制的最后一位

通过while循环,依次取出二进制的最后一位数字判断是否为1,若为1则count++,while(num)只有当num变为0时循环结束。

问题:在测试-1出现bug,-1的二进制中应该有32个1,输出却为0。我们将-1带入代码中发现-1%2=0,count不增,然后-1/2=0,循环结束,故输出count的值为0。

解决方案:将变量num的数据类型改为unsigned int (无符号整型),此时表示的是正的整型的最大值,所以当num=-1时,表示二进制为32个1的正数,通过循环可以输出正确的个数。

②通过右移操作符()、按位与操作符()实现

Example:当num=10(1010),通过右移操作numi,二进制向右移动i位。

//i=0,num0,右移0位,此时(1010)(0001)=0

//i=1,num1,右移1位,此时(0101)(0001)=1,count++

//i=2,num2,右移2位,此时(0010)(0001)=0

//i=3,num3,右移3位,此时(0001)(0001)=1,count++

……

因为二进制共32位,所以循环要执行32次后结束,得到count为2。

缺点:不够高效,必须循环32次。

③通过按位与操作符()巧妙运算实现

Example:  当num=15时,

1//num(num-1)=(1111)(1110)=(1110)  

2//num(num-1)=(1110)(1101)=(1100)

3//num(num-1)=(1100)(1011)=(1000)

4//num(num-1)=(1000)(0111)=0  ,循环停止。共执行4次while循环。

扩展资料

一、指定的某一位数置1

宏 #define setbit(x,y)  x|=(1y)

二、指定的某一位数置0

宏  #define clrbit(x,y)  x=~(1y)

三、指定的某一位数取反

宏  #define reversebit(x,y)  x^=(1y)

四、获取的某一位的值

宏 #define getbit(x,y)   ((x) (y)1)

C语言中如何将一个数字的各个位上的数分别提取?

#includestdio.h

int main()

{

int a;

int b[111]={0};//这里数组必须赋于初值,不然系统会随机赋值,将输出错误!赋值任何数

scanf("%d",a);//都行!

int i=0;

while(a!=0)

{

b[i]=a%10;            //将各个位的数赋值于数组b[i] ;

a/=10;           //现在数组b[i]记录的是各个位上的数的反序;

i++;            //i记录这个数是几位数 ;

}

for(int j=i-1;j=0;j--)

{

printf("%d ",b[j]) ;        //最后反序输出数组b[j];

}

return 0;

}

有不理解的地方,欢迎追问。望采纳!

怎样用c语言实现取一个数字的个位

取一个数字的个位,可以分为取整数的个位,和浮点数的个位两种情况:

1)取一个整数的个位,可以直接求余

例如 变量 int num=127;

num%10 就可以得到个位的7

2)取浮点数的个位

因为%是不能对浮点数直接运算的,因此需要强制取整之后执行

例如变量 double num=27.83;

((int)num)%10 就可以得到个位的7

C语言取位函数的实现

我有点没搞明白(45、81、673938)取最后一位是怎么得出5138的,不是518吗?

但还是随便写一下吧

#include stdio.h

#include stdlib.h

int getLastBit(int number);

int main()

{

int i = 0, n = 0;

int number = 0, newnumber = 0;

printf("输入整数个数:");

scanf("%d", n);

for(i = 1; i = n; i++)

{

scanf("%d", number);

newnumber *= 10;            

newnumber += getLastBit(number);    

}

printf("新整数是:%d\n", newnumber);

return 0; 

}

int getLastBit(int number)

{

if(number = 0)

{

printf("错误!\n");

exit(1);

}

else

return number%10;

}


网站题目:c语言取位函数的实现 c语言取位数的函数
文章来源:http://www.cdkjz.cn/article/higcjg.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220