2017-12-11

来源:互联网 发布:2016网络流行语口头禅 编辑:程序博客网 时间:2024/06/05 19:56

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

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

#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>unsigned int reverse_bit(unsigned int x){      unsigned int y=0;    int tmp=0;    int n=0;    for (n=0;n<32;n++)    {        tmp=x&1;        y<<=1;        y|=tmp;        x>>=1;    }    return y;}int main(){   unsigned int x=0;    printf("请输入一个整型数:\n");    scanf("%d",&x);    printf("该数二进制序列的逆序值为%u\n",reverse_bit(x));      return 0;}

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

#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>int my_average(int x,int y){     x>>=1;    y>>=1;    return (x+y);}int main(){    int x=0;    int y=0;    printf("请输入2个整型数:\n");    scanf("%d%d",&x,&y);    printf("%d\n",my_average(x,y) );    return 0;}

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

#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>int search(int arr[],int sz){   int i=0;    int tmp=0;    for (i=0;i<sz;i++)    {        tmp=tmp^arr[i];    }    for (i=0;i<sz;i++)    {        if(tmp==arr[i])            return i;    }    return sz+1;}int main(){       int n=0;    int arr[]={1,2,3,3,2};    int sz=sizeof (arr)/sizeof(arr[0]);    n=search(arr,sz);    if (n>sz+1)    {        printf("该组数据中没有单独的数据\n");    }    else        printf("该组数据中单独的数据是%d\n",arr[n]);    return 0;}

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

#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>int my_strlen(char arr[]){    int i=0;    for (i=0;arr[i]!='\0';i++)    {        ;    }    return i;}int main(){    char arr[]={"student a am i"};    char arr1[20][20]={0};    int i=0;    int j=0;    int n=0;    int sz=my_strlen(arr);    while (1)    {        for (j=0;(arr[n]!=' ')&&(n<sz);n++,j++)        {       arr1[i][j]=arr[n];        }        arr1[i][j]='\0';        if (n==sz)        {            break;        }        i++;            n++;    }    for (;i>=0;i--)    {        printf("%s ",arr1[i]);    }    return 0;}
原创粉丝点击