该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
输出问题:置顶有
◆十进制转二进制的一种方法:http://post.baidu.com/f?kz=4201639
输入:
C 库函数有
#include
C89 支持的
long int strtol(const char *start, char **end; int radix);
unsigned long int strtoul(const char *start, char **end; int radix);
C99 加的,至少 64 位的。
long long int strtoll(const char * restrict start, char ** restrict end; int radix);
unsigned long long int strtoull(const char * restrict start, char ** restrict end; int radix);
/*-------------------------------------------*/
#include
#include
#include
#include
#define buffer_size 80
int main (int argc, char *argv[])
{
long number;
int radix;
char buffer[buffer_size];
char *current, *rest;
while (printf("please enter a radix (2-36, other to exit): "), 1 == scanf("%d", &radix) && radix >= 2 && radix <= 36) {
printf("enter the number to be converted: ");
scanf("%79s", buffer);
buffer[buffer_size - 1] = '\0';
errno = 0;
number = strtol(buffer, &rest, radix);
switch (number) {
case LONG_MAX:
case LONG_MIN:
if (ERANGE == errno) {
printf("the number you just entered was out of range.\n");
break;
}
default:
printf("the number you entered [");
for (current = buffer; current != rest; current++)
putchar(*current);
printf("] is : %ld\n", number);
}
};
printf("exit.\n");
return 0;
}