C语言基础篇(2):按位比较是否相等、找出不是成对出现的单数、不用中间变量实现两个数的交换

来源:互联网 发布:私人影院点播软件 编辑:程序博客网 时间:2024/05/01 05:29
//两个32比特位的数有几个不相同的比特位#include<stdio.h>#include<windows.h>int main(){int m, n, i, x, y, count = 0;printf("请输入m,n:");scanf_s("%d%d", &m, &n);for (i = 31; i >= 0; i--){x = m % 2;m = m / 2;y = n % 2;n = n / 2;if (x != y)   //通过循环比较每一位是否相等{count++;}}printf("不同的bit位有%d个\n", count);system("pause");return 0;}

//找出一串两两成对出现的数中只出现一次的单数#include<stdio.h>#include<windows.h>int main(){int arr[] = { 1, 3, 3, 1, 4, 9, 4, 5, 5 };int i = 0;int len = sizeof(arr) / sizeof(arr[0]);for (i = 1; i < len; i++){     arr[0] = arr[0] ^ arr[i];//将这组数中所有数取按位或,由于相异为1,相同为0,故位运算剩下为1的就是单数}printf("这个单数是:%d", arr[0]);system("pause");return 0;}

//不借用中间变量实现两个数的交换(此处的程序右移和除以2是一样)#include<stdio.h>#include<windows.h>int main(){int a, b;int avg = 0;scanf("%d%d", &a, &b);avg = (a + b) >> 1;//右移一位相当于除以2printf("%d\n", avg);system("pause");return 0;}

0 0
原创粉丝点击