函数fun的功能是将一个由字符0和1组成的表示二进制数的字符串,转换成相应的十进制整数值返回。该串长度最大不超过15
例如,若表示二进制数的字符串为: "10011”, 则运行结果应为: 10011- ->19
根据题目可以提出以下重点:
1.由题目可知该题为进制转换题有二进制转为10进制;
2.输入的字符只能是'0'或'1';
3.长度最大不能超过15;
思路:建立一个15位的字符串,进入fun先判断输入的字符串有几位(使用strlen 测试字符串长度函数)在判断是不是有‘0’或‘1’组成的,如果是继续判断,不是则退出。
如果是则进入循环 b[i]-'0' 由于b为字符与数值进行运算时会转为acsll值,所以减去一个'0'可以转换为数值。
#include <stdio.h>
#include <string.h>
int fun(char *b) {
int len = strlen(b);
int he = 0;
int cifang = 1; // 初始化2的0次方为1
// 先计算2的(length-1)次方,然后从高位到低位遍历字符串
for(i=0;i<len;i++){
if(b[i]=='0'||b[i]=='1'){ //条件2
for (int i = len - 1; i >= 0; i--) {
he += (b[i] - '0') * cifang;
cifang *= 2; // 每次乘以2以得到下一个更高的幂次
}
return he;
}
else printf("输入错误");
return 0;
}
}
int main() {
char a[16];
printf("请输入一个二进制数(长度不超过15):");
scanf("%15s", a); //条件3
int jg = fun(a);
printf("十进制值为:%d\n", jg);
return 0;
}

2万+

被折叠的 条评论
为什么被折叠?



