
C语言刷题专栏
文章平均质量分 96
hallelujah...
记录成长
坚持更新
终身学习
展开
-
C语言练习8(巩固提升)
一个数组中有一个数字出现次数大于 n/2 ,从第 0 个字符开始,假设它就是最多的那个数字,遇到相同的数字则计数 +1 , 遇到不同的则计数 -1 ,其实就是互相消耗,等到计数为 0 的时候,表示本次互拼完毕,从下一个字符重新开始互拼,但是归根结底出现次数大于 n/2 的这个数字数量更多,因此也是最后保留的字符。暴力破解即可,将 nums1 数组中的每一个数字,判断是否存在于 nums2 数组中,通过这种方式找出交集数据,找出之后判断这个数组是否已经在返回数组中存在,不存在则添加到返回数组中即可。原创 2023-09-03 19:42:22 · 715 阅读 · 103 评论 -
C语言练习7(巩固提升)
numsSize 大小的数组,其中每个元素的数据在 [1, numsSize] 区间之内,解法其实并不复杂,以数组元素的绝对值作为下标,将对应位置的数据置为负数,比如 0 号位置是 3 ,则把 3 号位置的数据重置为负值,等到数组遍历重置完毕,只有缺失的这个数字对应的位置保留正数,其他出现过的数字位置都会是负数, 要注意不要重复设置负数,因为负负得正。,输入一个整数,将这个整数以字符串的形式逆序输出,程序不考虑负数的情况,若数字含有0,则逆序形式也含有0,如输入为100,则输出为001。原创 2023-08-31 22:56:42 · 793 阅读 · 93 评论 -
C语言练习6(巩固提升)
x%y或者说x-y得到的结果都在[0,y-1]之间,这个结果也就可以拆分成[0,k-1]与[k,y-1],显然此时有y-1 - k +1个x可以得到后者.如下图所示.也就是说有y-k个(x,y)使得x-y≥k。3,给定一个长度为n的数组 nums ,请你找到峰值并返回其索引。当y<k时,任何一个x%y得到的结果都在[0,y-1]之间,显然y-1 < k 违背公式② k≤x%y,因此推导出y应当>k。说明:满足条件的数对有(2,3),(2,4),(2,5),(3,4),(3,5),(4,5),(5,3)原创 2023-08-28 21:07:44 · 676 阅读 · 117 评论 -
C语言练习5(巩固提升)
B:正确,将形参存在数组中,修改数组中内容,可以通过数组将修改结果带出去C:正确,形参如果用指针,最终指向的是外部的实参,在函数中对指向指向内容进行修改,改变的就是外部的实参 D:正确,全局变量不受函数的结束而结束,在函数中改变全局变量,主调函数中可以看到改变之后的结果。A:正确,形参按照值的方式传递,将来形参就是实参的一份临时拷贝,修改形参不会影响外部的实参 B:正确,形参按照指针方式传递,将来形参就是实参地址的一份拷贝,形参指向的是实参,修改形参指针指向的内容, 就是在操作实参 C:错误,原创 2023-08-27 20:29:27 · 1424 阅读 · 96 评论 -
C语言练习4(巩固提升)
中str初始化为空指针,但是str指针变量也有地址,所以参数char**p里面的p保存的是指针变量str的地址,所以调用GetMemory函数之后,动态开辟的空间的地址存放在了str中,在函数返回之后没有释放内存,但是这不会导致程序错误,只会导致内存泄漏。代码实现的思路应该是arr[i]是奇数的时候要存储起来,所以第一个空是1,最开始j是0,每次找到一个奇数就存储到arr[j]的位置,那接下里j需要+1,所以得第二个空是j++,当循环停止的时候,j其实就是奇数的个数。C选项,考虑的是数组越界问题。原创 2023-08-27 02:14:44 · 2119 阅读 · 118 评论 -
C语言练习3(巩固提升)
这部分的执行顺序如下:先执行n=b<a部分,其中,关系运算符优先级高于赋值运算符,所以先算b<a,得到0,n=0赋值运算的结果将作为括号内表达式的结果,即(n=b<a)&&(m=a)转换成(0)&&(m=a),&&运算前表达式为假,则后面的括号(m=a)不运算,m值还是0,最后,&&的结果是0,即k=0。变量a里边存的是字符’a’,第一次输出先加加再输出,输出的是’b’;,‘0’的ASCII码值是48,‘A’的ASCII码值是’65’,故’0’<c是真值1,1无疑是小于字符’9’的,最终是真。原创 2023-08-26 11:12:44 · 815 阅读 · 109 评论 -
C语言练习2(巩固提升)
本题考查的是二维数组的元素访问,A选项是 正确的,X[i]就是第i行的数组名,数组名表示首元素的地址,X[i]表示第i行的第一个元素的地址,+j后就是第i行下标为j的元素的地址,整体解引用就是X[i][j],A正确。“志之所趋,无远弗届,穷山距海,不能限也。本题主要考虑数组越界访问的情况,二维数组的行和列都是从0开始的,对于a数组来说,行下标最大是1,列下标最大是2,D选项中1>2表达式的值是0,是正确的,其他选项行和列都可能存在越界,A是行越界,B是行和列都越界,C是列越界。原创 2023-08-25 16:26:10 · 1821 阅读 · 124 评论 -
C语言练习1(巩固提升)
n为真,来到循环2判断m>n为真,执行m=m-n;先判断表达式1是否为真,若为真,则计算表达式2,并将表达式2的结果作为整个表达式最终的结果,表达式3不计算;,第一次调用函数:i初值是1,递归第二次调用函数时,i还是第一次那个变量,值已经变成了2,再一次调用函数时i就是3,依次类推。外循环有n次,当i=0,内循环为n次,当i=1,内循环为n-1次,当i=2时,内循环为n-2次,以此类推,总次数为。3=-6,再计算-6+(-6)=-12赋值给a,所以a的值为-12,也就是整个表达式的值,所以应选择D。原创 2023-08-24 22:37:54 · 1591 阅读 · 122 评论