Please enter a number:
0.25
Please enter numeration:
2
The output is:
0.010000000⏎
➤ ./numer_convert
Please enter a number:
126.4
Please enter numeration:
8
The output is:
1760.314631463⏎
➤ ./numer_convert
Please enter a number:
666
Please enter numeration:
16
The output is:
29A⏎
2.代码实现
#include<stdio.h>#include<math.h>#define eps 1e-6int s[100], point[100];intmain(){double origin_num;int numeration, bit, m =0, i =0, j =0;printf("Please enter a number:\n");scanf("%lf",&origin_num);printf("Please enter numeration:\n");scanf("%d",&numeration);//origin_num is an intergerif(fabs(origin_num -(int)origin_num)< eps){while(origin_num !=0){
bit =(int)origin_num % numeration;
origin_num =(int)origin_num / numeration;
s[++m]= bit;}printf("The output is:\n");for(int k = m; k >=1; k--){if(s[k]>=10)printf("%c",(char)(s[k]+55));elseprintf("%d",s[k]);}}//origin_num is a float numberelse{double after_dot = origin_num -(int)origin_num;int before_dot =(int)origin_num;while(before_dot !=0){
bit =(int)before_dot % numeration;
before_dot =(int)before_dot / numeration;
s[++m]= bit;}printf("The output is:\n");for(int k = m; k >=1; k--){if(s[k]>=10)printf("%c",(char)(s[k]+55));elseprintf("%d",s[k]);}if(before_dot ==0)printf("0");printf(".");while(j <=8){
after_dot *= numeration;
bit =int(after_dot)% numeration;
point[++i]= bit;
j++;}for(int k =1; k <= i; k++){if(point[k]>=10)printf("%c",(char)(point[k]+55));elseprintf("%d",point[k]);}}return0;}