文章
4
粉丝
32
获赞
0
访问
1.8k
逻辑有点混乱凑合看看
#include<stdio.h>
#include<string.h>
int max(int a,int b){
if(a>b)return a;
else return b;
}
void add(char a[1005],char b[1005],char c[1005]){
int maxl=max(strlen(a),strlen(b));
int k=0;
for(int i=0;i<maxl;i++){
int av=(a[i]-'0');
int bv=(b[i]-'0');
if(a[i]==0)av=0;
if(b[i]==0)bv=0;
int ans=(av+bv)+k;
c[i]=ans%10+'0';
k=ans/10;
if(i==maxl-1 && k>0) c[i+1]='1';
}
}
int main(){
char a[1005],bin[1005]={0};
int inte[1003];
while(scanf("%s",a)!=EOF){
int l=strlen(a);
for(int i=0;i<l;i++) inte[i]=a[i]-'0';//转int数组
int j=0,m=0;
while(j<l){//高位舍完则结束
bin[m++]=inte[l-1]%2+'0';
for(int i=j;i<l;i++){//除2
inte[i+1]+=inte[i]%2*10;
inte[i]/=2;
}
if(inte[j]==0)j++;//高位得0则舍去
}
char shi[1005][1005]={0};
shi[0][0]='1';
for(int i=1;i<m;i++){//计算并存储每一位二进制对应的十进制
add(shi[i-1],shi[i-1],shi[i]);
}
char ans[1005]={0};
for(int i=m...
登录后发布评论
暂无评论,来抢沙发