//1.编写函数:
//unsigned int reverse_bit(unsigned int value);
//这个函数的返回值value的二进制位模式从左到右翻转后的值。
//
//如:
//在32位机器上25这个值包含下列各位:
//00000000000000000000000000011001
//翻转后:(2550136832)
//10011000000000000000000000000000
//程序结果返回:
//2550136832
//
//2.不使用(a + b) / 2这种方式,求两个数的平均值。
//
//3.编程实现:
//一组数据中只有一个数字出现了一次。其他所有数字都是成对出现的。
//请找出这个数字。(使用位运算)
//4.
//有一个字符数组的内容为:"student a am i", 请你将数组的内容改为"i am a student".
// 要求:
// 不能使用库函数。只能开辟有限个空间(空间个数和字符串的长度无关)。
//
//unsigned int reverse_bit(unsigned int value);
//这个函数的返回值value的二进制位模式从左到右翻转后的值。
//
//如:
//在32位机器上25这个值包含下列各位:
//00000000000000000000000000011001
//翻转后:(2550136832)
//10011000000000000000000000000000
//程序结果返回:
//2550136832
//
//2.不使用(a + b) / 2这种方式,求两个数的平均值。
//
//3.编程实现:
//一组数据中只有一个数字出现了一次。其他所有数字都是成对出现的。
//请找出这个数字。(使用位运算)
//4.
//有一个字符数组的内容为:"student a am i", 请你将数组的内容改为"i am a student".
// 要求:
// 不能使用库函数。只能开辟有限个空间(空间个数和字符串的长度无关)。
//
#include<stdio.h>
#pragma warning(disable:4996)
#define LEN 20
unsigned int reverse_bit(int x)
{
int i = 0;
int value;
for (; i < 32; i++)
{
value= x % 2;
printf("%d ",value);
x/=2;
}
}
int average(int x, int y)
{
int min = x > y ? y : x;
int max = x > y ? x : y;
int average = min + (max - min) / 2;
return average;
}
void find_num(int n[],int len)
{
int i = 1;
for (; i < len; i++)
{
n[0] = n[0] ^ n[i];
}
printf("%d\n",n[0]);
}
//
//int main()
//{
//
// /*int x;
// scanf("%d",&x);
// reverse_bit(x);*/
//
// /*int x, y;
// scanf("%d%d",&x,&y);
// printf("%d\n", average(x,y));*/
//
// /*int n[] = { 1,3,4,1, 3, 4, 9 };
// int len = sizeof(n) / sizeof(n[0]);
// find_num(n, len);*/
//
// char arr1[] = "student a am i";
// char arr2[] = { 0 };
// character(arr1, arr2);
// system("pause");
// return 0;
//}
#include <stdio.h>
void reverse_all(char *star, char *end)
{
while (star<end)
{
*star = *star^*end;
*end = *star^*end;
*star = *star^*end;
star++;
end--;
}
}
int main()
{
char arr[] = "student a am i";
char *p = arr; //指针p,q指向字符串首地址
char *q = p;
reverse_all(arr,arr + strlen(arr) - 1); //整体逆置
//局部逆置
while (*p != '\0' && *q != '\0')
{
if (*q == ' ')
{
reverse_all(p, q - 1); //q指向空格,q-1尾部逆置
q++;
p = q;
}
q++;
}
reverse_all(p, q - 1); //最后一个单词还需要逆置一次
printf("%s", arr);
system("pause");
return 0;
}