题目:输入两个数n,m,n为十进制的数,将n转换成m进制
题解:相信大家都知道怎么用数学方法算出十进制转换成其他进制,而对于怎么用代码把它敲出来,其实思路都是相同的,对于n,我们让它对m取余,将每次取余的结果存在一个数组里,最后再把它倒序输出,既然要取很多次余,就要用到循环,每次循环n都要被m整除一次,直到n的值变为零,来看看代码吧。
#includechar c[24]="0123456789ABCDEF"; int a[1005]; int main() { int n,m; scanf("%d %d",&n,&m); int i=0; while(n!=0){ a[i++]=n%m; n=n/m; } for(int j=i-1;j>=0;j--){ int s=a[j]; printf("%c",c[s]);//一定要写%c } }
再延伸一下,对于一个十进制的数N,我们怎么同时输出它的二、八、十六进制呢,其实思路也是一样的,但是上面的的代码我们不可能同时敲三遍吧,这时我们就要很自然的想到函数,来看看吧
#includechar a[24]="0123456789ABCDEF"; int N,b[1005]; void count(int n){ int N1=N,i=0; while(N1!=0){ b[i++]=N1%n; N1=N1/n; } for(i=i-1;i>=0;i--){ int m=b[i]; printf("%c",a[m]); //%c!!!!!! if(i==0){ printf(" "); } } } int main() { scanf("%d",&N); int c[3]={2,8,16}; for(int j=0;j<3;j++){ count(c[j]); } return 0; }
差不多就是这样了,其实思路是很好理解的,就是我们在写的时候要注意一些细节!希望你看了能学会哦,希望我至少明天前把贪心学会!!
最后,如有问题,欢迎指正



