解题思路:思路很清楚:将整数先用2进制表示,再将下标0~(n1-1),(n2+1)~32清零,然后整个数组转换为10进制
注意事项:pow()函数要求结果和参数都是double型
参考代码:
#include<stdio.h>
#include<math.h>
int main()
{
int value,i,j,length,n1,n2;
double m=0,sum=0;
int bit1[32]={0};
scanf("%d %d %d",&value,&n1,&n2);
i=0;
do{
bit1[i++]=value%2;
value/=2;
}while(value>0);
for(i=0;i<n1;i++)bit1[i]=0;
for(i=n2+1;i<=32;i++)bit1[i]=0;
m=0,sum=0;
for(j=0;j<=32;j++,m++)
{
sum+=bit1[j]*pow(2.0,m);
}
printf("%.0lf\n",sum);
return 0;
}
0.0分
0 人评分
C语言训练-求函数值 (C语言代码)浏览:583 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:688 |
WU-输出正反三角形 (C++代码)浏览:1024 |
C语言程序设计教程(第三版)课后习题8.6 (C语言代码)浏览:569 |
最小公倍数 (C语言代码)浏览:1033 |
矩形面积交 (C++代码)浏览:1138 |
sizeof的大作用 (C语言代码)浏览:1050 |
C语言程序设计教程(第三版)课后习题9.8 (C语言代码)浏览:617 |
C语言程序设计教程(第三版)课后习题11.3 (C语言代码)浏览:578 |
C语言程序设计教程(第三版)课后习题11.5 (C语言代码)浏览:1246 |