C语言基础
一把大锤子
这个作者很懒,什么都没留下…
展开
-
回文数
一、题目描述判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例 2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例3:输入: 10输出: false解释: 从右向左读, 为 01 。因此它不是一个回文数。...原创 2020-04-26 21:33:29 · 116 阅读 · 0 评论 -
字符串比较之最长公共前缀
一、题目描述示例 1:输入: [“flower”,“flow”,“flight”]输出: “fl”示例 2:输入: [“dog”,“racecar”,“car”]输出: “”解释: 输入不存在公共前缀。二、我的思路定义一个指针str指向字符串的第一个字母,让后面的字符串与str比较,如果全都相等str++继续比较。如果不相等,则修改str。并定义一个指针temp指向当前字符串...原创 2020-04-20 21:48:37 · 258 阅读 · 0 评论 -
求一个数x的平方根
一、我的思路1、当然第一种最简单的方法,直接return sqrt(x)。我们都知道c语言中有一个专门求平方根的函数。直接返回这个函数也是可以的。当然这有点投机取巧。2、第二种方法,我们利用二分查找的思想。因为我们都知道一个数的平方根不会大于它本身,也不会小于0。所以也就是在0到它本身的区间进行查找。不过直觉还告诉我们,一个数的平方根最多不会超过它的一半。所以二分法也就是在有限的区间里,一次排...原创 2020-04-18 22:24:59 · 1557 阅读 · 0 评论 -
删除排序链表中的重复项
一、题目描述给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次示例 1: 输入: 1->1->2输出: 1->2示例 2: 输入:1->1->2->3->3输出: 1->2->3二、我的思路从头遍历整个链表,借助一个cur指针指向链表的下一个元素,如果下一个元素与目前元素相等,就将该元素的指针指向下下个元素,再进行比...原创 2020-04-16 22:00:02 · 147 阅读 · 0 评论 -
二进制与八进制、十进制、十六进制之间的相互转换
计算机中有四种进制方式:1、二进制:由0和1两个数字组成。2、八进制:八个符号,由0~7八个数字组成。开头一般以0开头。3、十进制:十个符号,由0~9十个数字组成,不能以0开头。是咋们日常生活中最常用的数字。4、十六进制:十六个符号,由0~9个数字和a-f组成。a表示数字10,b表示数字11,以此类推。一般都是以0x开头。一、二进制与其他进制之间的转换(1)二进制转十进制:按权展开求和...原创 2020-02-27 21:41:48 · 4892 阅读 · 0 评论 -
C语言中文件操作的几种基本函数
C语言的文件操作函数可分为以下几类:一、fopen函数fopen函数的原型为:FILE *fopen(const char *path,const char *mode);其中参数path 是指要打开的文件,也通常称为文件的路径参数mode是指打开的文件的格式,也是权限。返回值:通常返回打开文件的指针。对于mode文件的打开方式有以下几种类型:r:读取的打开,如果文件不存在或者无法找...原创 2020-02-26 20:55:47 · 2428 阅读 · 0 评论 -
野指针产生的原因
野指针:也称悬挂指针,它指的是一个已删除的对象或未申请访问受限内存区域的指针。它与空指针不同,野指针无法通过简单的判断是否为NULL避免,只能通过了解和规范使用来尽可能减少野指针的使用。它的产生有以下三种原因:一、指针定义时为初始化。先看以下一段代码:#include <stdio.h>void Swap(int *p1,int *p2){ int *tmp; *tmp=...原创 2020-02-25 18:18:47 · 973 阅读 · 0 评论 -
八大排序的时间复杂度和空间复杂度
常见的排序算法有:内部排序和外部排序算法,我们所接触到的八大排序算法都属于内部排序。内部排序算法又可分为插入排序、选择排序、交换排序、归并排序和基数排序;插入排序又可分为直接插入排序和希尔排序、选择排序又可分为简单选择排序和堆排序、交换排序又可分为冒泡排序和快速排序。具体关系可有下图表示:它们的时间复杂度和空间复杂幅度分别是:在基数排序中,r代表关键字的基数,d代表关键字的长度,n代表关...原创 2020-02-04 14:49:04 · 738 阅读 · 1 评论 -
斐波那契数列的三种实现方式
一、循环实现代码如下:#include <stdio.h>int main(){int a=1,b=1,c=1;for(int i=3;i<=n;++i){ c=a+b; a=b; b=c;} return c; }时间复杂度为O()二、递归实现一般来说递归实现的代码都要比循环简洁,但效率不高。斐波那契数列递归实现的代码如下:int fac(i...原创 2019-11-12 10:29:24 · 1121 阅读 · 0 评论 -
数组的定义
数组不是原生类,数组可以被object接收,所以数组是对象,只要是能被object接收的都是对象。原生类有:int,double,boolean,float,byte,short,long,char;1、定义数组时需要注意的几个点:(1)定义一维数组时必须显示数组的长度(2)定义多维数组时,其一维数组的长度必须首先声明,其他维数组的长度可以稍后待定。(3)采用给定初始数组时,不必申明长度...原创 2019-11-06 16:53:06 · 1347 阅读 · 0 评论