C语言的一道题

题目描述

将一个二进制数,转换为对应的十进制数。

输入

输入一个二进制数,以回车结束。该二进制数为正数,长度不超过31。

输出

输出一个整数,为该二进制数对应的十进制数。

样例输入
100000000001

样例输出
2049

#include <stdio.h>

int main()
{
char ch1;
unsigned s=0;

while(scanf("%c",&ch1)==1&&ch1!='\n')
{
s=s*2+(ch1-'0');
}

printf("%d",s);

return 0;
}

这道题,输入输出都是可以的,不知道为什么提交就是错的:(求指点

第1个回答  2017-11-06
首先你看reverse函数完成得功能是啥,就是把数组倒置嘛
reverse(b, 8)是什么意思?
就是把数组b的前8个元素倒置
调用这个函数之后
数组b中的元素为8,7,6,5,4,3,2,1,9,10
然后你在看main函数中下面的那个for循环完成什么操作
很明显是求b中下标为6到9的这几个元素的和

即2+1+9+10 所以s = 22嘛追问

...你打错了吧?

相似回答