C语言程序-位操作

来源:互联网 发布:双色球中奖算法 编辑:程序博客网 时间:2024/05/29 09:15

1.unsigned int reverse_bit(unsigned int value);
这个函数的返回值value的二进制位模式从左到右翻转后的值。

如:
在32位机器上25这个值包含下列各位:
00000000000000000000000000011001
翻转后:(2550136832)
10011000000000000000000000000000
程序结果返回:
2550136832

#include<stdio.h>#include <math.h>#include <windows.h>unsigned int reverse_bit(unsigned int value){    int i = 0;    unsigned int Ret = 0;    for (i = 0; i < 32; i++)    {        if (!(value >> i))        {            break;        }        else if ( (value >> i) & 0x01)        {            Ret += pow(2, (31 - i));        }     }    return Ret;}int main(){    unsigned int data = 0;    unsigned int Ret = 0;    printf("请输入一个数:\n");    scanf_s("%u", &data);    printf("翻转后的数为 :%u\n" ,reverse_bit(data));    system("pause");    return 0;}

2.不使用(a+b)/2这种方式,求两个数的平均值。

#include<stdio.h>#include <windows.h>int main(){    double a = 0;    double b = 0;    double c = 0;    printf("请输入两个数: ");    scanf_s("%lf %lf", &a, &b);    c = a + ((a - b) / 2.0);    printf("平均数为%lf\n",c);    system("pause");    return 0;}

3.编程实现:
一组数据中只有一个数字出现了一次。其他所有数字都是成对出现的。
请找出这个数字。(使用位运算)

#include<stdio.h>#include <math.h>#include <windows.h>int main(){    int arr[9] = { 0 };    int i =  0;    int j =  0;    int a = 0;    printf("请输入4对相同的数字和一个单独不同的数字\n");    for (i = 0; i < 9; i++)    {        scanf_s("%d", &arr[i]);    }    for (i = 0; i < 9; i++)    {        a ^= arr[i];    }    printf("单独的数字是:%d\n", a);    system("pause");    return 0;}

4.有一个字符数组的内容为:”student a am i”,请你将数组的内容改为”i am a student”.
要求:
不能使用库函数。只能开辟有限个空间(空间个数和字符串的长度无关)。

#include<stdio.h>#include <math.h>#include <windows.h>int main(){    int i = 0;    int j = 0;    int R = 13;    int L = 0;    int k = 14;    char arr[14] = { "student a am i" };    char arr2[14] = { 0 };    for (i = 13; i >= 0; i--)    {        if (arr[i - 1] == ' ' || i == 0)        {            for (R = i; R < k;)            {                arr2[L++] = arr[R++];            }            k = i - 1;            arr2[L++] = ' ';            i--;        }    }    for(i = 0; i < 14 ;i++)    {        printf("%c", arr2[i]);    }    printf("\n");    system("pause");    return 0;}
原创粉丝点击