1、二进制转换成十进制
#include
int main()
{
int remainder, number = 0, decimal_number = 0, temp = 1;
printf("\n Enter any binary number= ");
scanf("%d", &number);
while (number > 0)
{
remainder = number % 10;
number = number / 10;
decimal_number += remainder * temp;
temp = temp * 2;
}
printf("%d\n", decimal_number);
}
测试结果:
Enter any binary number= 1010
10
2、二进制转换成八进制
#include
int three_digits(int n)
{
int r, d = 0, p = 1;
for (int i = 0; i < 3; i++)
{
r = n % 10;
d += r * p;
p *= 10;
n /= 10;
}
return d;
}
int main(void)
{
int binary_num, d = 0, base = 1, remainder, td, res = 0, ord = 1;
printf("Enter the binary no: ");
scanf("%d", &binary_num);
while (binary_num > 0)
{
if (binary_num > 111)
td = three_digits(binary_num);
else
td = binary_num;
binary_num /= 1000;
d = 0, base = 1;
while (td > 0)
{
remainder = td % 10;
td /= 10;
d += (base * remainder);
base *= 2;
}
res += d * ord;
ord *= 10;
}
printf("\nOctal equivalent is: %d", res);
return 0;
}
测试结果:
Enter the binary no: 1010
Octal equivalent is: 12
3、二进制转换成十六进制
#include
int main()
{
long int binary, hexa = 0, i = 1, remainder;
printf("Enter the binary number: ");
scanf("%ld", &binary);
while (binary != 0)
{
remainder = binary % 10;
hexa = hexa + remainder * i;
i = i * 2;
binary = binary / 10;
}
printf("The equivalent hexadecimal value: %lX", hexa);
return 0;
}
测试结果:
Enter the binary number: 1010
The equivalent hexadecimal value: A
4、字符串转换成整型
#include
#include
#include
#include
int c_atoi(const char *str)
{
int i;
int sign;
long value;
long prev;
i = 0;
sign = 1;
value = 0;
/* 跳过空格 */
while (((str[i] <= 13 && str[i] >= 9) || str[i] == 32) && str[i] != '\0')
i++;
if (str[i] == '-')
{
sign = -1;
i++;
}
else if (str[i] == '+')
{
sign = 1;
i++;
}
while (str[i] >= 48 && str[i] <= 57 && str[i] != '\0')
{
prev = value;
value = value * 10 + sign * (str[i] - '0');
if (sign == 1 && prev > value)
return (-1);
else if (sign == -1 && prev < value)
return (0);
i++;
}
return (value);
}
void test_c_atoi()
{
printf("<<<< TEST FUNCTION >>>>\n");
assert(c_atoi("123") == atoi("123"));
assert(c_atoi("-123") == atoi("-123"));
assert(c_atoi("") == atoi(""));
assert(c_atoi("-h23") == atoi("-h23"));
assert(c_atoi(" 23") == atoi(" 23"));
assert(c_atoi("999999999") == atoi("999999999"));
printf("<<<< TEST DONE >>>>\n");
}
int main(int argc, char **argv)
{
test_c_atoi();
if (argc == 2)
{
printf("Your number + 5 is %d\n", c_atoi(argv[1]) + 5);
return (0);
}
printf("wrong number of parmeters\n");
return (1);
}
测试结果:
./c_atoi "123"
<<<< TEST FUNCTION >>>>
<<<< TEST DONE >>>>
Your number + 5 is 128
【欢迎关注编码小哥,学习更多实用的编程方法】