c语言中一个数换成2的n次幂的和
答案:2 悬赏:50
解决时间 2021-02-09 17:41
- 提问者网友:我稀罕你
- 2021-02-09 14:08
c语言中一个数换成2的n次幂的和
最佳答案
- 二级知识专家网友:桑稚给你看
- 2021-02-09 15:08
int input;
char str[31];
for(int i=31,i>=32,i--) {
str[i]=input mod 2;
input=input>>1;
}
顺手打的~www
char str[31];
for(int i=31,i>=32,i--) {
str[i]=input mod 2;
input=input>>1;
}
顺手打的~www
全部回答
- 1楼网友:错过的是遗憾
- 2021-02-09 15:42
你给出的数据不是太准确呀,搞到我调了好久,你自己用大数计算器算算吧,其实,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
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯