1.位取反(利用“位与”aaaaaaaa和55555555来得出偶数位和奇数位,然后左移和右移进行相加或者“位或”)
define swap(a) (((a&0xaaaaaaaa)>>1)+((a&0x55555555)<<1))
void main()
{
int m=10;
printf(“%d\n”,swap(m));
}
2.递归
2.1(通过递归来得出一个数每一位)
void print(int a)
{
if(a>9)
print(a/10);
printf(“%d “,a%10);
}
void main()
{
int n;
printf(“输入一个数,打印它的各个位”);
scanf(“%d”,&n);
print(n);
}
2.2(通过递归自定义一个求字符串长度的函数)
int my_strlen(const char *str)
{
if(*str==’\0’)
return 0;
else
return my_strlen(str+1)+1;
}
void main()
{
char *p=”abcdef”;
printf(“%d\n”,my_strlen(p));
}