2021-05-05几个C语言代码练习

2021 05 05

  • C语言代码练习
    • 1.求两个数二进制中不同位的个数
    • 2.获取一个整数二进制序列中所有的偶数位和奇数位,分别打印出二进制序列
    • 3.写一个函数返回参数二进制中 1 的个数
    • 4.不允许创建临时变量,交换两个整数的内容

C语言代码练习

1.求两个数二进制中不同位的个数

两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同? 输入例子:1999 2299
输出例子:7
代码:

#include
#include
void isDif(int m, int n) {
	int c = m ^ n;
	int count = 0;
	for (int i = 0; i < 32; i++) {
		if (((m&(1 << i)) ^ (n&(1 << i))) != 0) {
			count++;
		}
		
	}
	printf("这两个数二进制中不同位的个数为:%d\n", count);
	return count;
}

int main() {

	isDif(1999, 2299);

	system("pause");
	return 0;
}

结果:
2021-05-05几个C语言代码练习_第1张图片

2.获取一个整数二进制序列中所有的偶数位和奇数位,分别打印出二进制序列

代码:

#include
#include


void isOdd(int a) {
	printf("这个数的二进制的奇数位为:");
	for (int i = 30; i >= 0; i -= 2) {
		printf("%d", (a >> i) & 1);
	}
	printf("\n");
}


void isEven(int a) {
	printf("这个数的二进制的偶数位为:");
	for (int i = 31; i > 0; i -= 2) {
		printf("%d", (a >> i) & 1);
	}
	printf("\n");
}


int main() {
	int num = 0;
	printf("请输入一个数:");
	scanf_s("%d", &num);
	isOdd(num);
	isEven(num);


	system("pause");
	return 0;
}

运行结果:
2021-05-05几个C语言代码练习_第2张图片

3.写一个函数返回参数二进制中 1 的个数

代码:

#include
#include

void oneNum(int a) {
	int count = 0;
	for (int i = 0; i < 32; i++) {
		if (a & (1 << i)) {
			count++;
		}
	}
	printf("这个数二进制中1的个数为:%d\n", count);
}

int main() {
	int num = 0;
	printf("请输入一个数:");
	scanf_s("%d", &num);
	oneNum(num);

	system("pause");
	return 0;
}

运行结果:
2021-05-05几个C语言代码练习_第3张图片

4.不允许创建临时变量,交换两个整数的内容

代码:

#include
#include


int main() {
	int a = 20;    //0001 0100
	int b = 30;    //0001 1110
	a = a ^ b;     //0000 1010   //10
	b = a ^ b;     //0001 0100   //20
	a = a ^ b;     //0001 1110   //30
	printf("a=%d\n  b=%d\n", a, b);
	system("pause");
	return 0;
}

运行结果:
2021-05-05几个C语言代码练习_第4张图片

你可能感兴趣的:(C语言,c语言)