//4:有一个字符数组的内容为:"student a am i",请你将数组的内容改为"i am a student". #include <stdio.h> #include<windows.h> #include <string.h> //把每次解析出来的单词翻转 void fanw(char *l, char *r) { char* left = l; char* right = r; char temp; while (left < right) { temp = *left; *left = *right; *right = temp; left++; right--; } } //解析出来每个单词 void fans(char *p) { while (*p != '\0') { char *pst = p; while (*p != '\0' && *p != ' ') { p++; } fanw(pst, p - 1); p++; } } int main() { char p[30] = "student a am i"; int len = strlen(p); printf("原字符串是:%s\n", p); printf("翻转后的字符串是:"); fanw(p, p + len - 1); fans(p); printf("%s\n", p); system("pause"); return 0; } //3:一组数据中只有一个数字出现了一次。其他所有数字都是成对出现的。 //请找出这个数字。(使用位运算) /*#include<stdio.h> #include<windows.h> int main() { int a[] = { 1, 2, 6, 5, 5, 8, 1, 9, 6, 4, 4, 8, 9 }; int size = sizeof(a) / sizeof(a[0]); int i = 0; for (i=1; i < size; i++) { a[0] ^= a[i];//用按位异或可以得到两个数A,B不同部分C,再接着用C异或B可以得到A } printf("different num:%d\n", a[0]); system("pause"); return 0; }*/ //2:不使用(a+b)/2这种方式,求两个数的平均值。 //方法1 /*#include <stdio.h> #include <windows.h> int main() { int a = 25; int b = 5; printf("%d\n", (a&b) + ((a^b) >> 1));//左移相当于乘2,右移相当于除以2 system("pause");//按位与找相同部分,按位异或找不同部分 return 0; }*///相同部分加上不同部分的二分之一 //方法2 /*2:#include<stdio.h> #include<windows.h> int fun(int a, int b) { int average = 0; average = (a + b) >> 1; return average; } int main() { int a, b; int average; printf("please enter two nums:"); scanf_s("%d %d\n", &a, &b); average = fun(a, b); printf("%d\n", average); system("pause"); return 0; }*///存在溢出问题,当A,B无限大时,此方法不适用 //1:unsigned int reverse_bit(unsigned int value); //这个函数的返回值value的二进制位模式从左到右翻转后的值。 /*#include<stdio.h> #include<windows.h> #include<math.h> unsigned int reverse_bit(unsigned int value) { int ret=0; int i = 0; for (i = 0; i < 32; i++) { ret += ((value >> i) & 1)*pow(2.0, 31 - i); //实际上没有翻转,只是从最低位向最高位扩展求得 } return ret; } int main() { unsigned int value, back; printf("请输入一个整数:"); scanf_s("%u", &value); back = reverse_bit(value); printf("翻转后的值为:%u\n", back); system("pause"); return 0; }*/
:unsigned int reverse_bit(unsigned int value); //这个函数的返回值value的二进制位模式从左到右翻转后的值
猜你喜欢
转载自blog.csdn.net/pigdwh/article/details/80257497
今日推荐
周排行