使用函数itob(n,s,b) 将一个整数n转化为b进制的字符串s(b的范围是2-36),例如itob(n,s,16)表示将整数n表示为16进制并以字符串形式返回。itob需要完成b进制在2-36之内的验证。 itob函数原型为 void itob(int n, char s[], int b); 输入输出格式: printf("Please intput the number:\n"); scanf("%d",); printf("Please intput the base:\n"); scanf("%d"); printf("Decimal %d in base %-2d : %s\n",n, i, buffer); b进制超出范围之后输出为 "Cannot support base %d\n" 例如 Please intput the number: 255 Please intput the base: 2 Decimal 255 in base 2 : 11111111
时间: 2024-01-15 13:03:02 浏览: 155
好的,下面是实现itob函数的代码:
```c
#include <stdio.h>
#include <string.h>
void itob(int n, char s[], int b) {
if (b < 2 || b > 36) { // 如果b超出范围,输出错误信息
sprintf(s, "Cannot support base %d", b);
return;
}
int i = 0;
int sign = n < 0 ? -1 : 1; // 判断正负号
if (sign == -1) {
n = -n;
}
// 将n转化为b进制的字符串
do {
int digit = n % b;
s[i++] = digit < 10 ? digit + '0' : digit - 10 + 'a';
n /= b;
} while (n > 0);
if (sign == -1) {
s[i++] = '-';
}
s[i] = '\0';
// 反转字符串
int len = strlen(s);
for (int j = 0; j < len / 2; j++) {
char temp = s[j];
s[j] = s[len - j - 1];
s[len - j - 1] = temp;
}
}
int main() {
int n, b;
printf("Please input the number:\n");
scanf("%d", &n);
printf("Please input the base:\n");
scanf("%d", &b);
char buffer[50];
itob(n, buffer, b);
printf("Decimal %d in base %-2d : %s\n", n, b, buffer);
return 0;
}
```
该函数先判断b是否在2-36的范围内,如果不是则输出错误信息。然后根据n和b的关系计算出对应的b进制字符串,并在最后判断正负号并反转字符串。
在主函数中,先输入n和b,然后调用itob函数将n转化为b进制的字符串并输出。
阅读全文