求一个C语言程序设计,题目:输入一个只包含0和1的二进制数,打印出相应的十进制、八进制和十六进制形式。

来源:百度知道 编辑:UC知道 时间:2024/06/01 06:34:00
必须要有相应的算法描述!谢谢
急!!!!!!!!!!!!!!!!!!!!!

输入只包含0和1 的字符串,再把 这一个字符串的每一个字符转换成对应的十进制数 相加,求得输入二进制数的十进制数,然后用printf()函数输出,printf()函数只要用不同的参数就可以输出不同进制的形式,全部代码如下:
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <string.h>
int main(int argc, char *argv[])
{
char str[64];
int num=0, len, i;
// 输入二进制数部分
printf("请输入你二进制数(注意二进制只有 1 和 0):\n");
for (i=0; (str[i]=getchar()) !='\n' ;i++) // 输入二进制数
{
if ((str[i]!='0') && (str[i]!='1')) // 判断输入的是不是 1 和 0
{
printf("输入错误!\n");
printf("请确认你输入是二进制数!\n");
printf("二进制数只有 1 和 0 !\n");
getch();
return 1;
}

}
// 把二进制转换成十进制
len = strlen(str)-1;
for (i = 0; i<len; i++)
{
num += (str[i]-48)*pow(2, len-1