//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; }