这是一道将十进制整数转换为b进制(b为整数)的题目。
理论上可以转换任意b进制(1除外),但是由于输入限制(只使用getchar()),只能制定10以内的b,因此如果要尽可能地接近理想情况,需要编写一个将字符串转换为数字的函数。
#include<stdio.h>
#include<ctype.h>
char itob(int n, char s[], int b); /* 编写函数 itob,使其输出n的b进制表示,储存在s中 */
int atoi(char w[]); /* 编写一个函数,将字符串转换为数字,实现任意进制转换 */
main() {
int i,n,b,c;
char n_1[100],b_1[100],s[100];
printf("请输入数字n:\n");
for(i=0; i<100 && (c=getchar()) != EOF && c!= '\n';++i)
n_1[i]=c;
n_1[i]=0;
printf("请输入底b:\n");
for(i=0; i<100 && (c=getchar()) != EOF && c!= '\n';++i)
b_1[i]=c;
b_1[i]=0;
n=atoi(n_1);
b=atoi(b_1);
itob(n,s,b);
printf("n(%d)的%d进制表示为%s\n",n,b,s);
return 0;
}
char itob(i