中易网

c语言中一个数换成2的n次幂的和

答案:2  悬赏:50  
解决时间 2021-02-09 17:41
c语言中一个数换成2的n次幂的和
最佳答案
int input;
char str[31];
for(int i=31,i>=32,i--) {
str[i]=input mod 2;
input=input>>1;
}
顺手打的~www
全部回答
你给出的数据不是太准确呀,搞到我调了好久,你自己用大数计算器算算吧,其实,1001,1101,1351等等还有很多都是符合你条件的数,搞到我下了我大数计算器验证了后才知道。 你的主要错误就是多乘了1次,具体情况看看代码吧,是我的注释。 还有什么问题再m我吧。 #include "stdio.h" #include "math.h" char code[6]={'a','b','c','d','e','\n'}; double data(int k,int m ); int judge(int k,int m,double x ); void convert(double d,int k,int a[]); void main() { int k,m; int flag=0; double x,i; do { printf("请输入进制k(2~16)和位数m(1~4):\n"); scanf("%d %d",&k,&m); if(k<2||k>16||m<1||m>4) printf("输入参数有误!\n"); }while(k<2||k>16||m<1||m>4); x=data(k,m); for(i=pow(k,m-1);i<=x;i++)//这里i的初始值为了保证位的一致 { flag=judge(k,m,i); if(flag==1) printf("在%d进制%d位数中:%.0lf 是幂自守数!\n",k,m,i); } } double data(int k,int m)//找出k进制m位数的最大值 { double x=0.0; int i; for(i=0;i
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯