文章目录
1. 第1题
1.1 题目描述
编写一个函数,把二进制字符串转换为一个数值,例如,有下面的语句:
char *pbin="01001001";
那么把pbin作为参数传递给该函数后,它应该返回一个int类型的值73
1.2 编程源码
#include<stdio.h>
#include<math.h>
int str2bin(const char *s,int len){
int sum=0;
int base = 1;
for(int i=len-1;i>=0;--i){
sum += base * (s[i]-'0');
base*=2;
}
return sum;
}
int main(void){
printf("%d\n", str2bin("01001001",8));
return 0;
}
1.3 结果显示
2. 第2题
2.1 题目描述
编写一个程序,通过命令行参数读取两个二进制字符串,对这两个二进制数使用~运算符、&运算符、|运算符和^运算符,并以二进制字符串形式打印结果(如果无法使用命令行环境,可以通过交互式让程序读取字符串)。
2.2 编程源码
#include<stdio.h>
#include<math.h>
unsigned int str2bin(const char *s,int len){
int sum=0;
int base = 1;
for(int i=len-1;i>=0;--i){
sum += base * (s[i]-'0');
base*=2;
}
return sum;
}
void dec2bin(char *s,unsigned int n){
int len=0;
char c;
if(n==0)s[len++] = '0';
while(n){
s[len++] = (n&1)+'0';
n >>=1;
}
s[len] = '\0';
for(int i=0,j=len-1;i<j;++i,--j){
c=s[i];
s[i]=s[j];
s[j]=c;
}
}
int main(int argc, char** argv){
char s[10];
dec2bin(s, str2bin(argv[1],8)&str2bin(argv[2],8));
printf("%s & %s = %s\n", argv[1],argv[2],s);
dec2bin(s, str2bin(argv[1],8)|str2bin(argv[2],8));
printf("%s | %s = %s\n", argv[</