自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

qq_45239139的博客

面包会有的

  • 博客(26)
  • 收藏
  • 关注

原创 【C语言编程】计算一个整数中二进制的个数

题目:实现一个函数,输入一个整数,输出该整数二进制表示中1的个数,例如,把9表示成二进制是1001,有2位是1.因此,如果输入9,则函数输出2.思想:三种不同的解法如下,每种解法都有改进进步的地方解法一:**缺陷:**如果我们输入的是负数,那么程序会崩溃,因为负数的最高位是1,如果一直做右移运算,那么最终这个数字就会陷入死循环解法二:**优点:**将第一种方法的数字移位改成了将1移...

2019-08-30 16:59:40 765

原创 【C语言编程】动态内存常见笔试题

题目1:错误之处在于:1.没有释放内存(free§),内存泄漏2.malloc之后需要判定 NULL3.释放完内存之后,需要设为 NULL4.str没有发生变化还是空指针(函数申请到的内存,并没有正确的被函数外部获取到), 形参是实参的拷贝,直接修改形参不会影响到实参,应该参数传指针。改进方式如下:题2:错误之处:GetMemory函数结束后,里面的内存都会被释放,所以p的...

2019-08-29 09:47:30 311

原创 【C语言编程】替换空格(将字符串中的每个空格都替换)

题目:实现一个函数,将字符串中的每个空格都替换成“%20”思路:采用时间复杂度为O(n)的解决方法,这样程序更好更有效率,我们先计算出原字符串中的空格数量,因为将空格替换成 “%20”, 长度增加了2,所以将原来字符串中的空格全部替换后的新字符串长度就是原字符串长度加上空格数乘2,接着我们利用两个指针从字符串后开始往前遍历,一个指针负责遍历原字符串中的元素,另外一个指针负责替换空格。源码:...

2019-08-28 17:22:52 1297

原创 【C语言编程】通讯录

题目:实现一个手机通讯录的功能!思路:需要我们熟练掌握结构体的相关知识,还有一些字符串函数的使用源码:

2019-08-28 17:14:36 129

原创 【C语言编程】assert函数模拟实现

题目:模拟实现assert函数思路:将两个数组中的元素进行依次顺序比较:(1)如果先找出哪个数组中的元素大于另一个数组中对应的元素,那么大的那个元素所在的数组大于另外一个数组,例如“iaha"和”haha",第一个数组大(2)如果是这样两个数组,“haha"和”hahahaha",那么第二个数组大(3)如果是“iaha"和”hahahaha"这样两个数组,那么第一个数组大源码:运...

2019-08-27 17:47:58 213

原创 【C语言编程】找出数组中重复的数字

题目:找出一个数组中重复的数字,例如数组{2,3,1,0,2,5,3},重复数字为2和3思路:使用两次for循环,第一次循环是用来遍历数组中的每个元素,第二次循环是用来遍历是否有相同的元素源码:运行结果如下:...

2019-08-27 17:05:00 8008 6

原创 【C语言编程】去除字符串首尾空格,中间留下一个空格

题目:编写代码完成如下功能:删除字符串首尾的空格,中间的连续空格只留一个,原来字符串的顺序不变,如“as****adadq"(是空格)变成"asadadq"思路:先创建一个函数将字符串首尾的空格删除,接着将删除后的字符串遍历,只保留中间最后一个空格源码:运行结果如下:...

2019-08-26 17:45:57 1768

原创 【C语言编程】warning C4047

源码:因为这里的a是int类型,而q是int*类型,两个不同类型的变量间接级别不同,但是我们发现运行后会出来一段很长的数字,这就是典型的未定义行为,虽然下面给了警告,但是在C语言里能够通过运行,如果换做是在C++中直接就是程序报错不能运行。下图为在C++中运行的结果:...

2019-08-26 16:39:46 4366 1

原创 【C语言编程】字符串压缩

题目:字符串压缩,输入字符串只包括a-z字母以及结束标志,编写函数实现对连续出现的相同字符进行压缩,例如:“xxxyyyyz"压缩后字符串为"3x4yz" “yyyyyyy"压缩后为”7y”思路:例如for循环来遍历,当遇到当前元素与下一个元素不相同时,打印%d%c, 这里的%d表示有多少个当前元素,我们可以用count来记数,注意打印完后要将count归为1源码:运行结果如下:...

2019-08-26 16:30:25 2267

原创 【C语言编程】判断一个数n是不是2的次方

题目:如何判断一个数n是否是2的k次方,注意:不需要求出k,只需要判断思路:这里我们要知道,2的次方的数字比如32,用二进制表示时,只有一个1其他全为0,因为此特殊性,所以我们只需判断这个数的二进制是否只有一个1就可以了源码:运行结果如下:...

2019-08-26 15:23:45 1262

原创 【C语言编程】求一个有序数组中两个元素值相加为k的数字,返回这两个元素的下标

题目:求一个有序数组中两个元素值相加为k的数字,返回这两个元素的下标。要求时间复杂度位O(n),空间复杂度为O(1)思路:因为是有序数组,所有将数组中前一部分的元素和后一部分的元素相加,这样循环最终得到最终我们想要的答案源码:运行结果如下:...

2019-08-25 17:09:35 518

原创 【C语言编程】判断一个数是不是回文数

题目:编写一个函数,求一个数字是否是回文数,回文数:给定一个数,这个数顺读和逆读都是一样的,例如:121,1221思路:(1)先计算出这个数是多少位数(2)再用首位数字和末尾数字进行判断,如果不相等,直接判断不是回文数,如果相等那么再将首位数字和末尾数字去除,再循环上述方法进行判断源码:运行结果如下:...

2019-08-25 14:53:01 4055

原创 【C语言编程】一个整形数组里除了两个数字之外,其他数字都出现了两次,找出这两个数字

题目:一个整形数组里除了两个数字之外,其他数字都出现了两次,请写程序找出这两个只出现一次的数字,例如数组为{1,3,5,7,1,3,5,9},找出7和9思路:(1)先遍历并按位与之后得到的是这个数组中出现一次的两个数按位与的结果(2)在这个结果中找到2进制的1,并且记录下产生不同1的位置(3)将数字按照上面记录的不同位置分成两类,再分别再不同类中与0按位与源码:运行结果如下:...

2019-08-24 12:04:42 816

原创 【C语言编程】从第一个字符串中删除第二个字符串中所有的字符

题目:输入两个字符串,从第一个字符串中删除第二个字符串中所有的字符,例如:输入“They are students.“和"aeiou”,则删除之后的第一个字符串变成“Thy r stdnts"。思路:将第二个字符串的元素一一拿出用来和第一个字符串的元素进行比较,如果发现相同的元素,则将后面的元素提前,这样就能将相同的元素删除源码:运行结果如下:...

2019-08-24 11:30:09 4466 3

原创 【C语言编程】在字符串中找到第一个出现一次的字符

题目:在字符串中找出第一个只出现一次的字符。如输入“abaccdeff",则输出‘b’,要求时间复杂度为O(n)思路:我们可以创建一个数组,这个数组专门用来记录字符串中哪个字符出现了几次,最后在这个数组中寻找第一个出现一次的字符就可以了源码:运行结果如下:...

2019-08-22 09:55:13 1196

原创 【C语言编程】求出一个有正数也有负数的数组中的最大子数组和

题目:输入一个整形数组,数组里有正数也有负数,数组中一个或连续的多个整数组成一个子数组,求所有子数组的和的最大值,要求时间复杂度为O(n),例如输入的数组为{1,-2,3,10,-4,7,2,-5},和最大的子数组为{3,10,-4,7,2},因此输出为该子数组的和18思路:题目要求时间复杂度为O(n),这说明了,数组只能遍历一遍,所有此时我们需要采用空间换取时间的方法来解决这个问题。源码...

2019-08-21 16:40:03 728

原创 【C语言编程】模拟实现strstr函数

题目:模拟实现strstr函数的功能思路;首先我们要知道strstr函数基本要求和功能,例如函数 strstr(str1,str2),它的功能是判断字符串str2是不是字符串str1的子串,也就是说判断str2字符串是否被包含在str1字符串中源码:运行结果如下:...

2019-08-21 15:28:38 377

原创 【C语言编程】求出数组中元素出现次数超过数组长度一半的数字

题目:编写函数:求数组中元素出现次数超过数组长度一半的数字,如{1,2,3,2,2,2,5,4,2}数字2为超过数组长度一半的数字。思路:不管数组长度是偶数还是奇数,超过一半数组长度的数字元素都一定是数组中间的那个元素,那么我们只需要将原来的数组进行从小到大或者从大到小的排序,最后我们要找的数字就是中间的那个元素。源码:运行结果如下:...

2019-08-20 18:46:03 857 1

原创 【C语言编程】指针笔试题

题目:int main() {char c[] = {“ENTER”,“NEW”,“POINT”,“FIRST”};charcp[] = {c+3,c+2,c+1,c}; charcpp = cp;printf("%s\n", **++cpp);printf("%s\n", –++cpp+3);printf("%s\n", *cpp[-2]+3);printf("%s\n", cp...

2019-08-20 15:48:46 1075

原创 【C语言编程】在有序二维数组中寻找整数

题目:二维数组中,每一行按照从左到右递增的顺序排序,每一列按照从上到下递增的顺序排序完成一个函数,输入这样的二维数组和一个整数判断数组中是否含有该整数,时间复杂度0(row+col)思路:例如一个符合条件的数组: 1 4 57 8 910 11 13我们可以知道左下角的10和右上角的5可以作为和我们要找的整数判断是否相等的依据,就以5为例子,如...

2019-08-19 15:51:03 230

原创 【C语言编程】汉诺塔问题

题目:有a、b、c三根棒和n只盘,且这n个盘叠放在a棒上,依次叠放为大盘在下,小盘在上。借助b棒将n只盘从a棒移到c棒上。每次只移一个盘,在移动时保持大盘在下,小盘在上。思路:(1)主要运用到了递归的思想,建立函数Hanoi(int n,char a,char c,char b),这个函数最终目的是要将a棒上的盘按照规则移动到c棒上(2)一种情况是如果a棒上只有一个盘,那么直接就可以移动到...

2019-08-18 11:40:46 1044

原创 【C语言编程】找出一个数组中只出现过一次的两个数字

题目:一个数组中只有两个数字是出现一次,其他所有数字都出现了两次,找出这两个数字,编程实现。思路:在这里我想到的方法是将数组中每个元素进行两两对比比较,这样排查出相同的元素,也就相应的能找到两个只出现过一次的元素。但是这种方法也有它的缺陷:时间复杂度高,为O(N^2),程序并不高效。优点就是代码少,简明易懂源码如下:运行结果如下:...

2019-08-17 16:17:16 348 1

原创 【C语言编程】转移表/表驱动

题目:给定两个数字,选择运用加减乘除四种运算方法进行计算思路:我用到两种方法解决次问题(1)最常用的方法就是用if lese if 语句来解决,这种方法的缺点就是圈复杂度高(2)运用转移表也叫表驱动的方法来解决,这种方法主要利用到了函数指针的思想,这种方法代码简明,圈复杂度小两种方法的代码如下图所示:...

2019-08-16 16:40:26 343

原创 【C语言编程】实现一个函数可以左旋字符串

题目:实现一个函数,可以左旋字符串中的k个字符。例如:ABCD左旋一个字符得到BCDA ,ABCD左旋两个字符得到CDAB 。思路:利用到一个temp(空盒子),将字符串的首元素赋值给temp,然后利用for循环和while语句,例如将字符串“abcdef”左旋一个字符,那么先将a赋值给temp,然后将"bcdef“都提前,再将a放在最后。代码如下图所示:运行结果如下:...

2019-08-03 16:05:30 100

原创 【C语言编程】创建函数实现一个数组的前半部分为基数,后半部分为偶数

题目:输入一个整数数组,实现一个函数,来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,所有偶数位于数组的后半部分。思路:运用指针start表示一个数组的开头元素,end表示数组的末尾元素,将start和1做&(与)运算,如果结果为1,那么表示此start元素是基数,则可以接着往下判断,如果遇到start不是基数则停止往下判断,end也是类似,将end和1做&amp...

2019-08-01 22:02:43 462

原创 【C语言编程】杨氏矩阵

题目:杨氏矩阵有一个二维数组.数组的每行从左到右是递增的,每列从上到下是递增的.在这样的数组中查找一个数字是否存在。时间复杂度小于O(N);数组:1 2 32 3 43 4 5思路:创建一个函数来寻找我们输入的数字是否在二维数组中存在,这个函数只要利用到while循环和if else if 语句。代码如下图所示:运行结果如下:当你输入的数字在创建的二维数组中存在时:...

2019-08-01 21:06:34 146

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除