满意答案
hunterhlj
2015.05.05
采纳率:47% 等级:8
已帮助:965人
你的16进制输入的时候有点问题,获得16进制数十%x,不是%d,获得后直接输出就可以了1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768#include<stdlib.h> #include<math.h>#include<string.h>#include<stdio.h>int f1(char a[]){ int n,j,i,sum=0,t=0,p=1,c; n=strlen(a); for(i=n-1;i>=0;i--) { p=1; t=(a[i]-48); if(i==n-1) p=1; else for(j=0;j=0;i--,j++) { sum=sum+(int)(b[i]-'0')*(int)pow(8,j); } c=sum; printf("对应的10进制数:%d\n",c); return c;} int main(){ int c=0,R,d; char a[50],b[16]; printf("请输入将被转换的数的进制:"); scanf("%d",&R); if(R==2) { printf("输入一个2进制数:"); scanf("%s",a); c=f1(a); } if(R==8) { printf("输入一个8进制数:"); scanf("%s",b); c=f2(b); } if(R==10) { printf("输入十进制数:"); scanf("%d",&d);printf("对应的10进制数:%d\n",d); } if(R==16) { printf("输入十六进制数:"); scanf("%x",&d);printf("对应的10进制数:%d\n",d); } return 0;}
00分享举报