这个程序仅仅是由十进制转换为其他进制的过程,其转换的规则如下图所示。
我使用的思路:首先在除基的过程中用一个数组保存余数,然后在输出进制转换结果的时候倒序输出,并且在输出前判断余数是否大于10,如果大于10则要转化为字母。
/* 【问题描述】输入一个十进制整数,将其转换成N进制数(1<N<=16) 【输入形式】一个十进制数 整数N 【输出形式】数字或字母由 (0-9,A,B,C,D,E,F) 【样例输入】300 16 【样例输出】12C 【样例输入】100 2 【样例输出】1100100 */ #include <stdio.h> #include <stdlib.h> void change(int n,int m) { int a,str[100],i; for (i=0;n!=0;i++) { str[i]=n%m; n=n/m; } for (;i>0;i--) { switch (str[i-1]) { case 10:printf("A");break; case 11:printf("B");break; case 12:printf("C");break; case 13:printf("D");break; case 14:printf("E");break; case 15:printf("F");break; default:printf("%d",str[i-1]);break; } } } int main() { int m,n,str[100]; while ((scanf("%d%d",&n,&m)!=EOF)) change(n,m); return 0; }