把一个二进制数转化为十进制数。
输入格式
第一行一个正整数 n (1≤n≤30),表示二进制数的长度。
第二行一个二进制数。
输出格式
输出一个整数,表示对应的十进制数。
输出时每行末尾的多余空格,不影响答案正确性
样例输入 复制
5
10101
样例输出 复制
21
æè·¯ï¼åè¿å¶æ´æ°è½¬æ¢ä¸ºäºè¿å¶æ´æ°éç¨"é¤2åä½ï¼éåºæå"æ³ãå³ç¨2æ´é¤åè¿å¶æ´æ°ï¼å¯ä»¥å¾å°ä¸ä¸ªååä½æ°ï¼åç¨2å»é¤åï¼åä¼å¾å°ä¸ä¸ªååä½æ°ï¼å¦æ¤è¿è¡ï¼ç´å°å为0æ¶ä¸ºæ¢ï¼ç¶åæå å¾å°çä½æ°ä½ä¸ºäºè¿å¶æ°çä½ä½ææä½ï¼åå¾å°çä½æ°ä½ä¸ºäºè¿å¶æ°çé«ä½ææä½ï¼ä¾æ¬¡æåèµ·æ¥ã
åè代ç ï¼
#include "stdio.h"void fun(int n){
if(n==0) return;
fun(n/2);
printf("%d",n%2);
}
int main() {
int n;
scanf("%d",&n);
fun(n);
return 0;
}
/*
è¿è¡ç»æï¼ä¾å¦æ±10ç2è¿å¶
10
1010
*/
温馨提示:答案为网友推荐,仅供参考
第1个回答 2009-12-02
#include <stdio.h>
void main()
{
int a;
scanf(\"%d\",&a);//输入一个10进制数。
int result=0;//存储a的二进制结果。
int p=1;//p=1表示个位数
do
{
int b=a%2;//b是余数,第一个余数是二进制的个位。
result=result+p*b;
p=p*10;//*10表示下个是10位数。
a=a/2;
}while(a);
printf(\"\\n%d\\n\",result);
}
程序在vc6.0下编译通过可以直接用,你自己看看吧,思路是a%2的结果是二进制的个位数,(a/2)%2的结果是二进制的十位数所以p扩大10倍,以后依次类推。
void main()
{
int a;
scanf(\"%d\",&a);//输入一个10进制数。
int result=0;//存储a的二进制结果。
int p=1;//p=1表示个位数
do
{
int b=a%2;//b是余数,第一个余数是二进制的个位。
result=result+p*b;
p=p*10;//*10表示下个是10位数。
a=a/2;
}while(a);
printf(\"\\n%d\\n\",result);
}
程序在vc6.0下编译通过可以直接用,你自己看看吧,思路是a%2的结果是二进制的个位数,(a/2)%2的结果是二进制的十位数所以p扩大10倍,以后依次类推。
第2个回答 2019-04-10
很简单,
int i,n;int num = 0;
scanf("%d",&n);
for(i=0;i<n;++i){
num<<=1;
if(getchar()=='1'){
num++;
}
}
差不多就是这样吧,自己调一下
第3个回答 2020-12-02
C语言_010_二进制转十进制_上
第4个回答 2019-04-10
#include <stdio.h>
int main()
{
int len;
char bny_num[32];
scanf("%d", &len);
scanf("%s", bny_num);
int p = 1, res = 0;
while( len-- )
{
res += p * (bny_num[len]-'0');
p *= 2;
}
printf("%d\n", res);
return 0;
}本回答被提问者采纳
int main()
{
int len;
char bny_num[32];
scanf("%d", &len);
scanf("%s", bny_num);
int p = 1, res = 0;
while( len-- )
{
res += p * (bny_num[len]-'0');
p *= 2;
}
printf("%d\n", res);
return 0;
}本回答被提问者采纳