| 网站首页 | 业界新闻 | 小组 | 交易 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
共有 2059 人关注过本帖
标题:求教二进制转十进制
只看楼主 加入收藏
lxldcr
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2019-6-17
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:8 
求教二进制转十进制
题目很简单,就是把一个二进制数转换为十进制数,然后输出。
Input Description
多组测试数据,第一行一个正整数 n (n<=1000),表示后面有 n 组测试数据,每组一行。
接下来有 n 行,每行为一个不超过32位的二进制数。
Output Description
对每组测试数据,在一行中输出对应的十进制数。
Sample Input
2
0111
1111
Sample Output
7
15
我的代码运行正确,但提交错误,谁能帮我指一下错误
#include <stdio.h>

int main(void)
{
    int n;
    int a,b;
    int p,i;
    int add,c;

  scanf("%d",&c);
  for(i=0;i<c;i++)
  {
      scanf("%d",&n);
      b=1;
      add=0;

       while(n!=0){
        a=n%10;
        p=a*b;
        b*=2;
        n=n/10;
        add=add+p;
    }

    printf("%d\n",add);
  }




    return 0;
}
搜索更多相关主题的帖子: 进制转 十进制 一行 int add 
2019-06-19 12:34
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:418
帖 子:8023
专家分:47195
注 册:2011-1-18
收藏
得分:5 
每行为一个不超过32位的二进制数
那如果输入 11111111111111111111111111111111 的话,应该输出 4294967295,还是 -1 ? 你的程序又输出是什么?



[此贴子已经被作者于2019-6-19 13:18编辑过]

2019-06-19 13:16
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:418
帖 子:8023
专家分:47195
注 册:2011-1-18
收藏
得分:0 
程序代码:
#include <stdio.h>

int main( void )
{
    unsigned n;
    scanf( "%u", &n );

    while( n-- )
    {
        char buf[33];
        scanf( "%s", buf );

        unsigned dec = 0;
        for( char* p=buf; *p; ++p )
            dec = dec*2 + (*p-'0');

        printf( "%u\n", dec );
    }
}
2019-06-19 13:22
lxldcr
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2019-6-17
收藏
得分:0 
回复 3楼 rjsp
运行正确,但提交代码后答案错误
2019-06-19 14:37
lxldcr
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2019-6-17
收藏
得分:0 
回复 2楼 rjsp
输入32个1后输出的居然是–3457
2019-06-19 14:43
孤独城堡
Rank: 2
等 级:论坛游民
帖 子:55
专家分:14
注 册:2008-9-27
收藏
得分:5 
C语言int的取值范围在32/64位系统中都是32位,范围为-2147483648~+2147483647,无符号情况下表示为0~4294967295。
32个1已经超出int的范围
2019-06-19 15:13
lin5161678
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:41
帖 子:1113
专家分:3613
注 册:2011-12-3
收藏
得分:5 
以下是引用孤独城堡在2019-6-19 15:13:36的发言:

C语言int的取值范围在32/64位系统中都是32位,范围为-2147483648~+2147483647,无符号情况下表示为0~4294967295。
32个1已经超出int的范围

32个1没有超出int的范围

https://zh.
2019-06-19 18:14
zbjzbj
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:郑州
等 级:版主
威 望:52
帖 子:618
专家分:3001
注 册:2011-4-22
收藏
得分:5 
这个组的概念怎么理解?为什么是n组测试数据,而不是n个测试数据?
2019-06-19 20:23
孤独城堡
Rank: 2
等 级:论坛游民
帖 子:55
专家分:14
注 册:2008-9-27
收藏
得分:0 
int的范围是-2147483648~+2147483647,只有10位数,你32个1是32位数,肯定超出了
2019-06-19 23:30
快速回复:求教二进制转十进制
数据加载中...
 
   



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

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