把int类型的值按二进制模式从左到右变换
#include <stdio.h>
void swap(int *value)
{
printf("value:%x\n",*value);
/*
*value = ((*value)&0xff000000) >> 24 | \
((*value)&0x00ff0000) >> 8 |\
((*value)&0x0000ff00) << 8 |\
((*value)&0x000000ff) << 24;
*/
int i=0;
int n=sizeof(int)*8;
printf("int length:%d\n",n);
int revalue=0;
for(i=0;i<=n/2;i++){
revalue |= (((*value&(1<<i))<<(n-2*i-1)) \
| ((*value&(1<<(n-i-1)))>>(n-2*i-1)));
}
*value = revalue;
}
int main(void)
{
int a;
scanf("%d",&a);
printf("a:%d\n",a);
swap(&a);
printf("a:%x\n",a);
return 0;
}
字符串左右互换:
#include <stdio.h>
#include <string.h>
#include <malloc.h>
void recerse_string(char *str)
{
int len=0;
char *string=str;
if(str == NULL)
return;
while(*(str++) != '\0')
len++;
printf("str len:%d str:%s\n",len,str);
int i=0;
char c;
for(i=0;i<len/2;i++){
c = *(string+i);
*(string+i) = *(string+len-i-1);
*(string+len-i-1) = c;
}
printf("string:%s\n",string);
}
int main(void)
{
char *str;
str=malloc(10*sizeof(char));
scanf("%s",str);
recerse_string(str);
printf("str:%s\n",str);
free(str);
return 0;
}