- 博客(35)
- 收藏
- 关注
原创 写一个函数返回参数中二进制中1的个数(三种方法)
法二:将32为二进制位依次与1相与(0&1=0,1&1=1),计算相与等于1的共多少位。另外还可用此方法判断一个数是否为2的n次方,n&(n-1)==0即为2的n次方。输入一个整数n,输出该数32位二进制表示中1的个数,其中负数用补码表示。如n=4(二进制0100)n-1=0011,(0100)&0011=0。count+1=2,1/2=0,循环停止。n&(n-1)每次都会消去n最左边的1,直至n=0。n%2=0,count不变,2/2=1,法三:通过n&(n-1 )判断。如n=5(二进制0101)
2024-09-29 17:15:04
408
原创 两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同(两种方法)
法一:两个数每一位分别与1相与比较,若二者对应位与1相与(0&1=0,1&1=1)结果不同,则表示该位二进制数不同,count++7对应二进制:00000000 00000000 00000000 00000111。8对应二进制:00000000 00000000 00000000 00001000。法二:两数异或,在计算异或(相同为0,相异为1)后的结果中有多少个二进制位为1的。
2024-09-29 16:58:01
516
原创 获取一个整数二进制序列中所有偶数位和奇数位
(2)循环判断,将对应二进制位与1相与(0&1=0,1&1=1),输出对应二进制位,每输出一次二进制位向右移2位。获取一个整数二进制序列中所有偶数位和奇数位,分别打印出二进制序列。(1)判断32位二进制位从右向左从1开始计数还是从0开始计数。该代码32位二进制位从右向左从1开始计数。
2024-09-29 16:50:40
306
原创 输出X形图案
输入一个整数(2-20),表示输出的行数,也表示组成“X”的反斜线和正斜线的长度。主要在于判断行和列的关系,何时需要输出“*”,何时输出“ ”(空格)
2024-09-29 16:44:10
232
原创 输入年份和月份,计算这一年这个月有多少一天(两种方法)
法二:循环+switch判断语句,其中default语句是对月份输入错误的判断。运行结果:(运行循环+switch判断语句这个代码)主要在于区分2月,闰年2月有29天,非闰年有28天。
2024-09-29 16:41:01
1367
原创 求字符串长度三种方法(临时变量、递归、指针)
通过循环判断*str指向的值是否为'\0',进行count++通过循环判断*str指向的值是否为'\0',进行更深一层的递归。不是所有的指针都能相减,指向同一空间的两个指针才能相减。指针减指针的绝对值得到指针和指针之间元素的个数。1.创建临时变量count。
2024-09-27 21:21:29
328
原创 字母大小写转换
(2)通过ASCII码判断是否为大写/小写,再通过其大写小写字母ASCII码差值32输出其小写/大写 注意scanf()返回值的使用:scanf读取成功的时候,返回的是读取的数据的个数,scanf函数在读取失败时,返回EOF。(1)通过函数islower(ch)/isupper(ch)判断是不是小写/大写,再通过函数toupper(ch)/tolower(ch)将字母转换为大写/小写。输入大写字母,自动输出小写字母。输入小写字母,自动输出大写字母。
2024-09-27 13:29:18
313
原创 对整数序列中指定删除某个数,输出后序列中未被删除的数字前后位置没有发生改变
(4)输出删除指定数字之后的序列,序列中未被删除的数字前后位置没有发生改变。(2)第二行输入N个整数,输入用空格分隔N个整数。(1)第一行输入一个整数N(0<=N<=50)(3)第三行输入想要进行删除的整数。
2024-09-27 13:19:15
241
原创 需要走n阶台阶,一次可以选择走一阶或者走两阶 一共有多少种走法(递归)
需要走n阶台阶,一次可以选择走一阶或者走两阶 一共有多少种走法,处理方法类似于求斐波拉契数列。
2024-09-27 13:15:36
247
原创 不使用临时变量,实现两个数的交换(通过运算符)
可使用异或操作符(按位异或,相同为0,相异为1):a^a=0,0^a=a。不建议使用加法交换,当所需交换的两个数值足够大时,相加可能会造成溢出。即有(1)a=a^b;
2024-09-27 00:17:48
247
原创 隐式类型转换(整型提升char--->int)
表达式的整型运算要在CPU的相应运算器内执行,CPU内整形运算器(ALU)的操作数的字节长度一般就是int的字节长度,同时也是CPU的通用寄存器的长度因此,即使两个char类型的相加,在CPU执行时实际上也要先转换为CPU内整型操作数的标准长度。为了获得这个精度,表达式中的字符和短整型操作数在使用之前被转换为 普通整型,这种转换称为整型提升。C语言的整型算数运算总是至少以缺省整型类型的精度来进行的。1.有符号数整型提升是按照变量的数据类型的符号位来提升的。所以整型提升的时候,高位补充符号位,即为1。
2024-09-27 00:05:06
380
原创 求一个整数存储在内存中的二进制中1的个数(补码存储)
反码:11111111 11111111 11111111 11111110。补码:11111111 11111111 11111111 11111111。-1的原码:10000000 00000000 00000000 00000001。1的补码:00000000 00000000 00000000 00000001。反码为原码原码符号位不变,其他位按位取反。故-1存储的二进制位中1的个数为32。故1存储的二进制位中1的个数为1。正数原码、反码、补码相同。
2024-09-26 23:57:54
210
原创 通过函数对数组进行初始化、打印、逆序
3.实现函数init(),初始化数组全为0组元素的逆置。1.实现print(),打印数组的每个元素。2.实现reverse(),函数完成数。创建一个整型数组,完成对数组的操作。
2024-09-25 22:06:38
254
原创 三种方法实现字符串逆序(非递归,递归,递归+指针)
运行结果:(最好字符串长度为单数、双数两种情况都分别测试一下)注意单目运算符sizeof()和库函数strlen()区别。字符串:abcdefg(个数为单数)逆序。字符串:abcdef(个数为双数)逆序。
2024-09-25 21:56:37
715
原创 汉诺塔(递归)
汉诺塔:圆盘从下至上按大到小顺序从一根柱子重新摆放在另一根柱子上,并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。输入汉诺塔总共圆盘个数,总共三个底座(A,B,C),输出移动过程(A->B:将A顶上的盘移到B座)
2024-09-24 18:54:27
273
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅
1