重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
设一个数为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语言
下面是三种方式:
①通过模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)
#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;
}
有不理解的地方,欢迎追问。望采纳!
取一个数字的个位,可以分为取整数的个位,和浮点数的个位两种情况:
1)取一个整数的个位,可以直接求余
例如 变量 int num=127;
num%10 就可以得到个位的7
2)取浮点数的个位
因为%是不能对浮点数直接运算的,因此需要强制取整之后执行
例如变量 double num=27.83;
((int)num)%10 就可以得到个位的7
我有点没搞明白(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;
}