C语言基础编程题——3道
1.编程实现:两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同?
输入例子:
1999 2299
输出例子:7
#include <stdio.h>
int Once(int x,int y){
int n = x^y;//异或之后不同位变为一,相同位为零
int count = 0;
while (n!=0){
count++;
n = n&(n - 1);
}
return count;
}
int main(){
int x = 1999, y = 2299;
printf("有%d个bit位不同\n",Once(x,y));
return 0;
}
2.获取一个整数二进制序列中所有的偶数位和奇数位,分别打印出二进制序列
#include <stdio.h>
void PrintTwo(int n){
int num1[16] = {
0 };
int num2[16] = {
0 };
int i,j,k;
for (i = 0,j=0,k=0; i < 32;++i){
if (i%2!=0){
num1[j] = n & 1;
++j;
}
else{
num2[k] = n & 1;
++k;
}
n = n >> 1;//右移
}
printf("奇数位为:");
for (i = j-1; i >=0;--i){
printf("%d ",num1[i]);
}
printf("\n");
printf("偶数位为:");
for (i =k-1; i >=0; --i){
printf("%d ", num2[i]);
}
printf("\n");
}
int main(){
int n;
scanf("%d",&n);
PrintTwo(n);
return 0;
}
3.写一个函数返回参数二进制中 1 的个数。
比如: 15 0000 1111 4 个 1
#include <stdio.h>
int One(int n){
int count = 0;
while (n != 0){
count++;
n = n&(n - 1);//每次与一次少一个1,与几次就少几个1
}
return count;
}
int main(){
int n;
scanf("%d", &n);
printf("%d\n",One(n));
return 0;
}