新手请教,自制进制转换函数
请教下面的程序错误在哪里,谢谢![](zzz/editor/img/code.gif)
#include<stdio.h> void transfer(int m,int k) { int a[20],i; for(i=0;m;i++) { a[i]=a%k; /*感觉问题出在这里*/ m/=k; } for(;i>=0;i--) printf("%d",a[i]); } void main() { int b,n; scanf("%d%d",&b,&n); transfer(n,b); }
![](images/smilies/tk/tk04.gif)
#include <stdio.h> #include <stdlib.h> char * dec_to_x_string(int, int); int get_digits(int, int); int main(void) { int dec, x; scanf("%d%d", &dec, &x); char * str = dec_to_x_string(dec, x); printf("%s\n", str); free(str); return 0; } char * dec_to_x_string(int dec, int x) { if(x < 2 || x > 36) { printf("UnsupportedOperation\n"); return NULL; } int digits = get_digits(dec, x), ch; char * str = (char *)malloc(sizeof(char) * digits + 1); str[digits] = '\0'; while(dec) { ch = dec % x; if(ch > 9) ch = ch - 10 + 65; else ch += 48; str[--digits] = (char)ch; dec /= x; } return str; } int get_digits(int dec, int x) { int digits = 0; while(dec) { dec /= x; digits++; } return digits; }