晃慌黄 2021-04-30 07:39 采纳率: 95%
浏览 232
已采纳

C语言编程实现:输入一行字符(不超过80个),过滤掉非二进制数字的字符后,转换成十进制数打印显示

输入样例:2x1213s4s60340a5102304511

输出样例:110010011:403

备注:只考虑无符号整数,即不考虑负数补码的问题,过滤下来的二进制数一律按无符号整数处理即可

本人小白,学习没多久,这个题不太会做了,不知道怎么

  • 写回答

7条回答 默认 最新

  • 快乐鹦鹉 2021-04-30 08:24
    关注

    不好意思,上面写错了一点

        char p[] = "2x1213s4s60340a5102304511";

        int j = 0;

        for (int i = 0; i<strlen(p); i++)

        {
            if (p[i] == '0' || p[i] == '1')

            {
                p[j] = p[i];

                j++;

            }
        }
        p[j] = 0;

        UINT uVal = 0;

        UINT d = 1;

        for (int i = strlen(p) - 1; i >= 0; i--)

        {
            if (p[i] == '1')

                uVal += d;

            d = d * 2;

        }

     

    这样最后uVal就是403了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
    晃慌黄 2021-04-30 08:31

    #include <stdio.h> #include <math.h> int main() { char p[80]; int i,j=0,num = 0; gets(p); for(i=0;i<strlen(p);i++) { if(p[i]=='0'||p[i]=='1') { p[j]=p[i]; j++; } p[j]='\0'; } for(i=strlen(p)-1;i>=0;i--) num+=p[i]*pow(2,i); printf("%d",num); }

    回复
    晃慌黄 2021-04-30 08:31

    大佬跟着你写的,但是这个有错,我没找出来

    回复
    晃慌黄 2021-04-30 08:33

    #include <stdio.h> #include <math.h> int main() { char p[80]; int i,j=0,num=0; gets(p); for(i=0;i<strlen(p);i++) { if(p[i]=='0'||p[i]=='1') { p[j]=p[i]; j++; } p[j]='\0'; } for(j=strlen(p)-1;j>=0;j--) num+=p[j]*pow(2,j); printf("%d",num); }

    回复
    展开全部7条评论
查看更多回答(6条)
编辑
预览

报告相同问题?

手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部