问题 问答题

请编写一个函数fun(char*num),该函数返回与传入的二进制数相应的十进制数,参数num指向存放8位二进制数的字符数组。二进制数转换为十进制数的方法是将二进制数的每一位乘以该位的权然后相加,如二进制数10010100=1*27+0*26 +0*25+1*24+0*23+1*22+0*21+2*0=148。
注意:部分源程序已存在文件test32_2.cpp中。
请勿修改主函数main和其他函数中的任何内容,仅在函数fun的花括号中填写若干语句。
文件test32_2.cpp的内容如下:
#include<iostream.h>
int fun(char *num)


void main ( )

char num[8],ch;
cout<<"Enter an 8 bit binary number";
for(int i=0;i<8;i++)

cin>>ch;
num[i]=ch;

cout<<fun(num)<<end1;

答案

参考答案:
int fun(char *num)
{
int result=0;
int middle;
for(int i=7;i>=0;i--)
{
if (hum[i] ==’ 1’ )
{
middle=l;
for(iht k=l;k<=(7-i);k++)
{
middle=middle*2;
}
result =result+middle;
}
}
return result
}

解析: 本题为条件判断语句、循环语句和数组的综合应用。需要注意的是数组下标为0的元素存放的为二进制数中权最大的位,而数组下标为7的元素存放的为二进制数中权最小的位,而且在数组中存放的是二进制数的字符串,需要将每个字符转换成相应的整型数字才能乘以相应的权。

选择题
多项选择题