| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3956 人关注过本帖
标题:如何实现从键盘输入二进制代码字符串
只看楼主 加入收藏
sky8558
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2018-2-1
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:16 
如何实现从键盘输入二进制代码字符串
请教:在以下程序基本功能不变的情况下,如何实现手动输入二进制代码?

程序代码:
/* 二进制转十进制 */

#include<stdio.h>
#include <math.h>
#include <stdlib.h>
#include <string.h>

main()
{
    char s[]="0000000011111111";                /*待转二进制字符串,也是要变为手动键盘输入的部分*/

    char *p = s;

    int i, j, n = 0;    

    j = strlen(s);                              /*求出二进制位数*/

    printf("%d位二进制数\t",j);

    puts(s);    
    
    for (i = 0;i < j;i++)
    {        
        if(*(p + i) == '1')                     /*判断某一位是否为'1'*/
        {
            n=n + pow(2.0,j - 1 - i);           /*求相应十进制的值*/
        }
    }    
    printf("转为十进制后,值为:%d\n",n);
    
}


图片附件: 游客没有浏览图片的权限,请 登录注册
搜索更多相关主题的帖子: 输入 二进制 代码 字符串 include 
2018-03-08 15:52
Jeyyion_han
Rank: 5Rank: 5
等 级:职业侠客
威 望:4
帖 子:207
专家分:301
注 册:2018-1-22
收藏
得分:7 
#include<stdio.h>
#include <math.h>
#include <stdlib.h>
#include <string.h>

main()
{
    //char s[]="0000000011111111";                /*待转二进制字符串,也是要变为手动键盘输入的部分*/
   
    char *s;
    printf("enter string:");
    scanf("%s",s);  //或者 gets(s);
    char *p;
    p=s;

    int i, j, n = 0;   

    j = strlen(s);                              /*求出二进制位数*/

    printf("%d位二进制数\t",j);

    puts(s);   
   
    for (i = 0;i < j;i++)
    {        
        if(*(p + i) == '1')                     /*判断某一位是否为'1'*/
        {
            n=n + pow(2.0,j - 1 - i);           /*求相应十进制的值*/
        }
    }   
    printf("转为十进制后,值为:%d\n",n);
   
}
收到的鲜花
  • sky85582018-03-09 11:10 送鲜花  2朵  
2018-03-08 16:17
Jeyyion_han
Rank: 5Rank: 5
等 级:职业侠客
威 望:4
帖 子:207
专家分:301
注 册:2018-1-22
收藏
得分:0 
我没运行,大概就是这样,你试试。
2018-03-08 16:18
Jeyyion_han
Rank: 5Rank: 5
等 级:职业侠客
威 望:4
帖 子:207
专家分:301
注 册:2018-1-22
收藏
得分:0 
我没运行,大概就是这样,你试试。
2018-03-08 16:18
sky8558
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2018-2-1
收藏
得分:0 
回复 2楼 Jeyyion_han
scanf||getchar我都试过了,用固定字符串没有问题,改为键盘输入就报错。
搞了一下午,没解决,倒是把以前不明白的其它问题弄明白了。我怀疑我的原程序设计结构有问题。

附:经你改过后的报错码

图片附件: 游客没有浏览图片的权限,请 登录注册


2018-03-08 16:34
Jeyyion_han
Rank: 5Rank: 5
等 级:职业侠客
威 望:4
帖 子:207
专家分:301
注 册:2018-1-22
收藏
得分:0 
回复 5楼 sky8558
报什么错误
2018-03-08 16:53
Jeyyion_han
Rank: 5Rank: 5
等 级:职业侠客
威 望:4
帖 子:207
专家分:301
注 册:2018-1-22
收藏
得分:0 
可能我用的中文打的分号,你根据你报的错误来改一下 试试。
2018-03-08 16:55
sky8558
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2018-2-1
收藏
得分:0 
程序代码:
/*与本题程序对应的另一个程序*/
/*十进制转二进制*/
#include <stdio.h>

main()
{
    int i, x, n, a[100];

    printf("input numbers:\n");

    scanf("%d", &x);                       /*这里可以键盘输入*/

    for (i=0 ;; i++)
    {
        a[i] = x % 2;

        x = x / 2;

        if (x == 0)
        {
            break;
        }
    }
    for (;i > -1; i--)
    {
        printf("%d",a[i]);
    }
    printf("\n");
}

/*给出这个程序是想说明你和我的输入函数使用上应该没错*/
/*上题键盘输入不是写不出,而是写了不可用(用各种方法写入过),一定有别的问题没注意到*/
/*也可能是我的程序设计最初思路就有问题*/
2018-03-08 16:55
sky8558
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2018-2-1
收藏
得分:0 
回复 7楼 Jeyyion_han
分号全改了一遍,报错一样。
2018-03-08 16:59
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10539
专家分:42927
注 册:2014-5-20
收藏
得分:7 
#include <stdio.h>
#include <string.h>

int bin_dec(char *bin)
{
    int i, dec=0;
    char *p = bin+strlen(bin)-1;
    for (i=0; p>=bin; --p, ++i)
    {
        if (*p=='1')
            dec += 1<<i;
    }
    return dec;
}

main()
{
    char s[33]; //32位
    printf("二进制数: ");
    gets(s);
    printf("转为十进制后,值为:%d\n", bin_dec(s));
}
收到的鲜花
  • sky85582018-03-09 11:11 送鲜花  3朵   附言:好文章
2018-03-08 16:59
快速回复:如何实现从键盘输入二进制代码字符串
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026087 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved