c语言
文章平均质量分 55
海绵宝宝的欧尼
要想人前显贵,必得人后受罪!
展开
-
c::预处理
【预处理】预处理语句是一些行首以#开始的特殊语句,例如:#include,#define等就是预处理语句。在编译程序的编译过程中,进行其它编译处理(词法分析、语法分析、代码生成、优化和连接等)之前,先进行这些语句的分析处理。预处理语句使用的目的在于帮助程序员编写出易读、易改、易移植并便于调试的程序。预处理语句主要有三种:宏定义和宏替换、文件包含、条件编译。,宏包含宏常量,宏函数,条件编译。原创 2016-10-10 19:27:40 · 6433 阅读 · 1 评论 -
c::顺序表和链表
这节来说下顺序表和链表【前言】:1、什么是线性结构:n个数据元素的有序集合 1)集合中必存在唯一的“第一个元素” 2)集合中必存在唯一的“最后一个元素” 3)除第一个元素外,其他的元素都只有一个后继 4)除最后一个元素外,其他的元素都只有一个前驱2、线性表 1、顺序表 1.1定义: 把线性表中的节点按照逻辑次序原创 2016-12-19 19:49:59 · 1167 阅读 · 0 评论 -
c::动态顺序表的简单实现
我简单的实现下动态顺序表:1、声明:#ifndef __TEST__#define __TEST__#include#includetypedef int Datatype;typedef struct SeqListdD{ Datetype* array; int size; //有效元素的个数 int capacity; //空间的总容量}S原创 2016-12-19 20:12:14 · 767 阅读 · 0 评论 -
C::如何实现翻转一个字符串
1、首先我们先要明白:什么叫翻转一个字符串?我举个例子:比如给定一个字符串“love you”,经翻转后就成为了“ouy evol”.2、接下来怎么解决:(如何进行翻转)1)我们首先定义两个指针:一个指向字符串的首地址*left,一个指向字符串尾部*right2)让left向后走,让right向前走,在走的过程中,这两个指针指向的内容要进行交换,最终两个指针会相遇,相遇的时候就停止原创 2017-01-04 14:07:13 · 655 阅读 · 0 评论 -
c::关于strcpy的几道经典的面试题~
试题1:void test1(){ char str1[10]; char* str2 = "0123456789"; strcpy(str1,str2);}【说明】:1)str2要赋值到str1中,str2的大小是11要加上末尾的'\0',而str1的大小是10,数组会发生越界2)它具体的赋值是str2从内存的起始地址开始进行赋值,赋值到str2的字节数具有不确定性原创 2016-12-28 21:43:07 · 2193 阅读 · 0 评论 -
c::你了解str--家族吗?
我总结下关于string家族,此家族比较庞大,比较重要,同时也是面试官特别常考的一个点,那么现在我就带大家一起走进string家族1、strcpy 1)原型:char* strcpy(char* dest,const char* src); 2)作用:把从src地址开始且含有'\0'的字符串复制到以dest开始的地址空间 【说明】:src和dest所指的内原创 2016-12-26 20:17:21 · 500 阅读 · 0 评论 -
c::一道关于找凶手的题
1、题目:日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯的一个。以下为4个嫌疑犯的供词。A说:不是我。B说:是C。C说:是D。D说:C在胡说已知3个人说了真话,1个人说的是假话。2、分析问题:1)一共有四个人,任何一个人都有可能,所以我们用循环来进行每个人的排除2)根据条件“已知3个人说了真话,1个人说的是假话”。将其作为我们判断的原创 2016-12-28 23:50:09 · 1012 阅读 · 0 评论 -
c::你会翻转一个数的二进制位吗?
1、题目说明:unsigned int reverse_bit(unsigned int value);这个函数的返回 值value的二进制位模式从左到右翻转后的值。在32位机器上25这个值包含下列各位:00000000000000000000000000011001翻转后:(2550136832)10011000000000000000000000000000原创 2016-12-29 09:41:20 · 774 阅读 · 0 评论 -
C::单链表面试:
这里我就把有关单链表的几道经典的面试题总结下:注意:这里有关的节点的表示法是与我前面的单链表那一篇有联系的,所以读者要是具体实现,不想继续写哪些繁琐的东西,可以直接用我写的单链表那一篇。1、从尾到头打印单链表void Print_r(PNode pHead);说明:从尾到头,我们首先想到的就是递归,最容易想到的也是最容易实现的void Print_r(PNode pHead原创 2016-12-20 12:18:46 · 657 阅读 · 0 评论 -
c::用字符串代替空格f
1、题目要求:请实现一个函数,把字符数组中的每个空格替换成“%20”。2、分析:1)想法一:我们可以再创建一个数组,当遇到空格的时候,就将所要替换的字符串一个一个放进去,这种方法当然可行,但是效率低又造成空间的浪费,所以我们不采取这种方法。2)想法二:从前往后:在原基础上进行替换(空间是足够的),如果从前往后遇到空格就进行替换,必然后对原来的字符造成覆盖,不可以实现3)想法三:原创 2016-12-31 17:20:45 · 671 阅读 · 0 评论 -
c::求数组中的异数~
函数说明:1)一个数组中有一个数出现了一次,其余的数字出现了两次。思路分析: A: 首先可能会想到的办法是:再建一个数组,进行数组的遍历,遇到相同的数,就放到新的数组中,最终剩下的就是异数。 B:但是上面的这种办法会有开空间的开销,所以我们想到另外一种办法:利用异或,我们知道异或就是相同的数异或为零,针对此题,最终异或下来的数就是异数。#includeint main(){原创 2017-02-04 17:41:05 · 508 阅读 · 0 评论 -
c::如何左旋一个字符串中的k个字符~
函数说明:1.实现一个函数,可以左旋字符串中的k个字符。比如:AABCD左旋一个字符得到ABCDA AABCD左旋两个字符得到BCDAA实现方法:1)方法一: 说明:将要左旋的字符先存放在一个临时变量中,然后将后面的字符向前挪动,最后将放入到临时变量中的字符放入到挪动后最后空出来的位置。 代码实现:#include原创 2017-02-01 22:37:13 · 337 阅读 · 0 评论 -
C::输出1-100中出现的9的次数
此题很简单,此题有坑点!!!#includeint main(){ int i = 0; int count = 0; for(i = 1; i<=100; i++) { if(i%10 == 9) { count++; } if(i/10 == 9) { count++; } } printf("%d ",count); return 0原创 2016-12-24 21:41:24 · 446 阅读 · 0 评论 -
C::写一个可以演示多个字符从两端移动,中间汇聚的代码
首先我们来分析下思路:1)我们可以定义两个数组,一个用来存储原来要被移动的字符,一个用来放移动后的字符2)当从两端向中间汇聚的时候,要有一定的节奏,此时,我们可以用,sleep函数接下来我们来看下代码具体如何实现://welcome to world!//##############//w############!#include#includeint main(){原创 2016-12-24 21:31:03 · 374 阅读 · 0 评论 -
c::从打印100-200之间的素数这个小问题一点点的入坑c语言
从打印100-200之间的素数这个小问题一点点的入深c语、算法思想: 首先拿到一个问题,我们先要想怎么做,有什么办法,怎么实现,c语言是面向过程的,面向过程和面向对象不同,那么过程顾名思义就是上来直接将问题干掉,简单粗暴。接着,在能想到的办法中,将所有都列举出来的时候,问题就来了,那种解决办法是最好的,这就是c语言编写中的程序优化问题。那么接下来我就利用这个题来说明下:EG:原创 2016-10-10 19:57:04 · 7140 阅读 · 1 评论 -
c::~atoi的实现
【atoi函数的功能:】将字符串转化成整形数 * 开始扫描字符串的后,跳过空白字符,直到遇到正负号或者数字的时候才开始转换,当再次遇到非数字或者字符 串‘\0’的时候停止转化,并将结果返回。【atoi函数写的时候要注意的点:】1).字符串前的空白2). 字符串所表示数值的正负号3). 结束条件,遇到非数字或者字符'\0'结束4). 考虑溢出,分别原创 2016-11-17 19:47:47 · 4384 阅读 · 0 评论 -
c::单链表的实现(值得一看)
关于单链表的实现,我就不啰嗦了,直接上代码1、头文件#ifndef __TEST__#define __TEST__#include#include#includetypedef int DataType;typedef struct Node{ DataType data; //存储的数据 struct Node* pNext; //指向下一个节点原创 2016-11-26 08:23:45 · 4644 阅读 · 0 评论 -
C::有趣的约瑟夫环
关于约瑟夫环有一个有趣的故事:据说著名犹太历史学家 Josephus有过以下的故事:在罗马人占领乔塔帕特后,39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀,然后再由下一个重新报数,直到所有人都自杀身亡为止。然而Josephus 和他的朋友并不想遵从,J原创 2016-11-26 08:37:08 · 1816 阅读 · 0 评论 -
C::求一个数的二进制中1的个数
求二进制中1的个数,你们三种看到这个问题,会想到什么方法?这里我提供方法:(最后一位是一位大神想出来的,很牛逼!)慢慢往下看。1) int Count_One_Bits(int value){ int count = 0; while(value) { if(value%2 == 1)//这个数模2为1,则此位就为1 { count++; } value原创 2016-12-21 18:38:17 · 391 阅读 · 0 评论 -
c::求两个数的最大公约数和最小公倍数
采用的方法是辗转相除法:#includeint main(){ int a = 4; int b = 6; int i = 0; int t = 0; int temp = 0; if(a>b) { t = a; a = b; b = t; } i = a*b; while(a%b!= 0) { temp = b; b = a%b; a =原创 2016-12-21 19:17:29 · 690 阅读 · 0 评论 -
C::求一元二次方程的根
#define _CRT_SECURE_NO_WARNINGS#include#include#define EPS 0.000000001int main(){ double a = 0,b = 0,c = 0; //一元二次方程的系数 double x1 = 0,x2 = 0; //一元二次方程的根 double m = b*b-4*a*c; //记录代尔塔的值 dou原创 2016-12-21 19:21:46 · 696 阅读 · 0 评论 -
c::编写一个函数,它从标准输入读取C 源代码,验证所有的花括号都能正确的成对出现
分析:1)要从标准输入读取C源代码,我们用getchar()函数来接受字符2)要验证花括号是否匹配,我们可以采用计数的方式进行解决:当出现左括号的时候,我们对计数变量count++,当遇到右括号的时候,我们对count--,只要判断count的值是否为0就可以了,如果是0,那么就匹配成功,否则匹配不成功。 我们来看下代码:#includeint main(){ int co原创 2016-12-21 21:21:14 · 1207 阅读 · 1 评论 -
C::模拟密码登录
实现的函数功能说明:编写代码实现,模拟用户登录情景,并且只能登录三次。只允许输入三次密码,如果密码正确则提示登录成,如果三次均输入错误,则退出程序。我们先来分析下题目的要求:1)登录三次,所以我们使用循环来做,2)密码输入是否正确,我们使用if语句进行判断,来看下代码如何具体实现:#include#includeint main(){ char password[7]原创 2016-12-24 09:58:43 · 588 阅读 · 0 评论 -
C::写一个简单的猜字游戏
关于写这个简单的猜字游戏,要用到一个知识点:随机数的产生。1、关于随机数的两个函数:rand()和srand()函数:(其中srand()函数是初始化随机种子,rand()函数是产生随机数)接下来我来详细讲解下:1)rand(产生随机数)表头文件: #include定义函数 :int rand(void)函数说明 :因为rand的原创 2016-12-24 11:38:08 · 1427 阅读 · 1 评论 -
c::输出一个整数的每一位
给一个整数,我们要输出此整数的每一位,这里我给出两种方法:1)递归的方式用递归实现123 12+3 1+2+3 #includevoid Print(num){ if(num>10) { Print(num/10); } printf("%d ",num%10);}int main(){ int num = 123; Print(num); return原创 2016-12-24 21:25:28 · 594 阅读 · 0 评论 -
c::在一个字符串中查找第一个只出现一次的字符
拿到这道题,我们首先想到的做法是:设置一个计数器,从字符串的第一个字符开始进行遍历,遇到字符就开始让计数器自增,但是我们如何处理不同的字符到底被计数了所少次呢,这时候就比较棘手,那么我们就来用下面我介绍的这种方法来进行解决。思路分析:1)我们知道字符的大小不会超过256,所以我们先设置一个大小为256的数组2)我们开始进行字符串的遍历,将每一个字符作为数组的下标进行自增,(其实原理就是原创 2017-02-03 13:51:38 · 1012 阅读 · 0 评论