Chinaunix首页 | 论坛 | 博客
  • 博客访问: 99220
  • 博文数量: 102
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1011
  • 用 户 组: 普通用户
  • 注册时间: 2014-01-15 13:58
个人简介

普普通通一个人

文章分类

全部博文(102)

文章存档

2018年(1)

2015年(13)

2014年(88)

我的朋友

分类: C/C++

2014-02-20 10:46:39


点击(此处)折叠或打开

  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <math.h>

  4. int main(){
  5.     //初始化变量,i,j循环计数器,len数组长度,sum转化为10进制后的数字
  6.     int i = 0, j, len = 0, sum = 0;
  7.     //定义一个长度为100的数组b
  8.     char b[33];
  9.     //接收从键盘输入的字符串,并存入b中
  10.     scanf("%s", b);
  11.     //测量字符串数组的长度,保存在len中
  12.     len = strlen(b);
  13.     //判断起始位是不是0,是0则无效
  14.     while (b[i] == '0'){
  15.         i++;
  16.         len--;
  17.     }
  18.     //打印字符串数组的长度
  19.     printf("本二进制数共 %d 位\n", len);
  20.     //打印一下存入的二进制数据
  21.     printf("输入的二进制数是:");
  22.     //将当前i值赋值给j,让while循环从第一个为1的位置开始打印
  23.     j = i;
  24.     while (b[j] != '\0'){
  25.         printf("%c", b[j]);
  26.         j++;
  27.     }
  28.     //输出完二进制后,打印一个换行
  29.     printf("\n");
  30.     //开始计算10进制的值
  31.     //循环判断每一位上是0还是1,直到数组结束‘\0’
  32.     while (b[i] != '\0'){
  33.         //如果该位上的值等于‘1’,则计算2的(len-1)次方,存入sum中。
  34.         if (b[i] == '1')
  35.             sum = sum + pow(2, len - 1);
  36.         //让数组向后走
  37.         i++;
  38.         //随着数组向后走,2的次方数也应该相应递减
  39.         len--;
  40.     }
  41.     //打印出十进制数
  42.     printf("相应的十进制数为: %d\n", sum);
  43. }

阅读(453) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~