官网整站优化,90设计网站免费素材,网站发布流程,女子医院网站设计怎么做1.写一个函数算一个数的二进制(补码)表示中有几个1
#includestdio.h//统计二进制数中有几个1
//如13:1101
//需要考虑负数情况 如-1 结果应该是32// n 1101
//n-1 1100
//n 1100
//n-1 1011
//n 1000
//n-1 0111
//n 0000
//看n的变化
int funca(int c){int co…1.写一个函数算一个数的二进制(补码)表示中有几个1
#includestdio.h//统计二进制数中有几个1
//如13:1101
//需要考虑负数情况 如-1 结果应该是32// n 1101
//n-1 1100
//n 1100
//n-1 1011
//n 1000
//n-1 0111
//n 0000
//看n的变化
int funca(int c){int count0;while(c){cc(c-1);//新nnn-1的结果;nn-1其实是在相当于把二进制中最右边的1去掉,执行几次,就相当于有几个1count;}return count;
}int func(unsigned int c){int count0;while(c){if((c%2)1)//算二进制数是否是1count;cc/2;}//去掉一位二进制数return count;
}
int fun(int c){int count0;for(int i0;i32;i){//int 有32个二进制if(((ci)1)1)count;}return count;
}
int main()
{int a;scanf(%d,a);printf(%d\n,funca(a));printf(%d\n,func(a));printf(%d\n,fun(a));return 0;
}2.算两个整数的二进制位有几个位(bit)不同 //如1999 2299 //结果为7
#includestdio.h
int fun(int c){int count0;while(c){cc(c-1);count;}return count;
}int main()
{int a,b;scanf(%d%d,a,b);int ca^b;//确认二进制数中有几个不同位数 相同为0 相异为1printf(%d\n,fun(c));return 0;
}3.获取一个整数二进制中的奇数位 偶数位 分别输出
#includestdio.h
void func(int m)
{printf(奇数位:\n);for(int i30;i0;i-2){printf(%d,(mi)1);}printf(\n偶数位:\n);for(int i31;i1;i-2){printf(%d,(mi)1);}
}
int main()
{int a0;scanf(%d,a);func(a);return 0;
}4.递归将字符串逆序存储
#includestdio.hint funcation(char brr[]){int i0;char *endNULL;for(i0;brr[i]!\0;)i;endbrr[i];//非库函数实现的strlenreturn (end-brr);
}//递归实现将字符串内容反向逆序
//012345
//abcdef
//先将a的位置放上f 后将f的位置放为\0 以便得到真正需要处理的字符串长度 在递归结束后将f的位置放a
//依次类推
void fun(char *temp ){char changetemp[0];int lengfuncation(temp);temp[0]temp[leng-1];temp[leng-1]\0;if(funcation(temp1)1)//只要长度超过1 就进入递归fun(temp1);temp[leng-1]change;
}
int main(){setbuf(stdout,NULL);//clion软件及时输出缓冲区内容char array[10]abcdefg;fun( array);printf(%s,array);return 0;
}5.递归实现计算一个数的每位之和
#includestdio.h//递归实现计算一个数的每位之和
int digsum(unsigned int a){if(a9)return digsum(a/10)a%10;elsereturn a;
}
int main(){int number0;//1729scanf(%d,number);printf(%d,digsum(number));return 0;
}6.递归实现N的k次方
#includestdio.h
//递归实现N的k次方
double fun(int c,int d){if(d0)//负次方return (1.0/(fun(c,-d)));else if(d1)return c;elsereturn fun(c,d-1)*c;
}
int main(){int a0,b0;scanf(%d%d,a,b);printf(%lf\n,fun(a,b));return 0;
}