Tag: 反转

使用递归反转字符串

我从互联网上得到这个代码,但我无法得到整个代码。 例如if(*str) 。 这段代码是什么意思? 还可以返回一个字符串吗? 我认为main中的数组可以直接在函数中更改,但这里已经返回了.. #include #define MAX 100 char* getReverse(char[]); int main(){ char str[MAX],*rev; printf(“Enter any string: “); scanf(“%s”,str); rev = getReverse(str); printf(“Reversed string is: %s\n\n”,rev); return 0; } char* getReverse(char str[]){ static int i=0; static char rev[MAX]; if(*str){ getReverse(str+1); rev[i++] = *str; } return rev; }

C中的就地字符串反转

我正在尝试学习C的基础知识,但我无法弄清楚为什么这段代码不起作用。 reverse()中的while循环导致总线错误。 我在编程采访书中发现了几乎完全相同的代码作为有效的解决方案,但是我在这里发布的这个或其他类似的方法都没有发生总线错误。 #include void reverse(char* str) { char* end = str; char tmp = 0; if(str) { while(*end) { end++; } –end; while(end>str) { tmp = *end; *end– = *str; *str++ = tmp; } } } int main() { char* a = “12”; puts(a); reverse(a); puts(a); return 0; }

这段代码如何反转位数?

unsigned reverse_bits(unsigned input) { //works on 32-bit machine input = (input & 0x55555555) <> 1; input = (input & 0x33333333) <> 2; input = (input & 0x0F0F0F0F) <> 4; input = (input & 0x00FF00FF) <> 8; input = (input & 0x0000FFFF) <> 16; return input; } 这是如何运作的?