
畅游C语言
文章平均质量分 70
由浅入深,玩转C语言
皓皓松
与坚持梦想者同行!
展开
-
【C】溢出问题
溢出问题#includeint main(){ int i=0; int a[10]; for(;i<=10;i++) { printf("这是一行文字\n"); a[i]=0; } return 0;}我们先猜测一下,i从0到10,应该输出11次文字然而··(在Dev-c 的原创 2016-05-28 22:31:19 · 775 阅读 · 0 评论 -
【C】printf的返回值
#includeint main(){printf("%d",printf("%d",printf("%d",43)));return 0;}原创 2016-05-26 09:18:45 · 12597 阅读 · 2 评论 -
【C】喝汽水思考题
#includeint main(){ int empty = 0;//定义 空瓶子的数量 并初始化为 0 int count = 0;//定义 喝的汽水总睡 并初始化为 0 int i = 1; //定义 一个检查循环次数的变量 i int money = 0;//定义 并初始化钱数 printf("本店一元一瓶汽水,两个空瓶子免费换一瓶汽水\n请输入你的钱原创 2016-05-27 11:23:34 · 980 阅读 · 0 评论 -
【C】万年历
用C语言实现万年历#includeint TheFirstDay(int y) //计算1月1日星期几{ int m = 13,d = 1; int w; y--; w = d+2*m+3*(m+1)/5+y+y/4-y/100+y/400; w=w%7+1; printf("w = %d",w); return w;}int IsLeapYear(原创 2016-06-02 12:42:23 · 1766 阅读 · 0 评论 -
【C/C++】Sleep函数的用法
Sleep函数功能: 执行挂起一段时间,也就是等待一段时间在继续执行用法:Sleep(时间)头文件:Windows下为--> windows.h Linux 下为 --> unistd.h注意:(1)Sleep是区分大小写的,有的编译器是大写,有的是小写。 (2)Sleep括号里的时间,在windows下是已毫秒为单位,而Linux是以秒为单位#includ原创 2016-06-08 20:22:35 · 239035 阅读 · 10 评论 -
【C/C++】枚举类型举例
#include#includeint main(){ enum week//定义一个星期的枚举类型week { Sun, Mon, Tue, Wed, Thu, Fri, Sat }; week day;//定义枚举变量 day int i;//定义整形变量 i printf_s("请输入0~6之间的一个数字:\n"); scanf_s("%d"原创 2016-06-08 21:13:11 · 4134 阅读 · 1 评论 -
【C/C++】const在C和C++下的区别
比如一句 const int a = 0;在C编译器下解释为: a并不是一个常量,只是一个变量具有了常属性。在C++编译器下解释为: a就是一个常量验证方法:#include#includeint main(){ const int a = 1; int str[a];//由于数组括号里只能写常量 ,可以根据编译器是否允许成功来判断 是否是常量 system("p原创 2016-06-09 10:07:17 · 1326 阅读 · 2 评论 -
【C】少年时代的经典游戏:三子棋
刚接到这个题目的时候,感觉用个数组并不难。然而写起来,光是判断能否从一个点到另一个点就用了N次if else 语句最后出的问题是,一个点不能覆盖另一个点,还要加一个判断好了,这个问题解决了,又来个问题一个点,本来就无路可走了。可是我选择了这个点,无法返回重新输入了。。。最终,小浩陪你玩三子棋第一版的解决方法是,如果选了一个无路可走的棋子,那么。。。重新开始吧原创 2016-06-10 15:55:26 · 1415 阅读 · 0 评论 -
【C/C++】浅谈sizeof
一、sizeof是什么?sizeof是什么,很多人以为sizeof是个函数你看,她后面不是加着一个括号吗?是,的确有括号。可是有括号的一定就是函数吗?C语言一共有32个关键字,而sizeof就是其中之一,用来判断数据类型或者表达式长度原创 2016-06-12 15:58:24 · 1978 阅读 · 0 评论 -
【C/C++】计算二进制中的1的简单方法
一、什么是二进制的1众所周知,计算机存取一个数都是以0,1的方法存取的二、求二进制的1的方法(1)普通版#includeint count_one_bits(int value){ int count = 0; while( value != 0 ) { if(value%2 == 1) count++; value /= 2; } return co原创 2016-06-13 17:08:55 · 7935 阅读 · 1 评论 -
【C/C++】unsigned与二进制
一、unsigned是C语言中32个关键字之一所谓unsigned,就是无符号的类型,只有正,没有负数二、比较unsigned和int的区别(1)阅读下面的两个程序:①int#includeint main(){ int num = 0; for(num = 9; num>=0; num--) { printf("%d ",num); } return 0;原创 2016-06-15 13:08:23 · 3452 阅读 · 1 评论 -
【C/C++】深入预处理
一、预处理指令(1)预处理指令的功能预处理指令提供按条件跳过源文件中的节、报告错误和警告条件,以及描绘源代码的不同区域的能力。(2)预处理器的作用预处理器的主要作用就是把通过预处理的内建功能对一个资源进行等价替换 二、预处理包含的方面预处理包括:①文件包含(#include)②条件编译(#if、#indef、#ifdef、#endif、#undef 等)③布局控原创 2016-06-15 20:09:56 · 974 阅读 · 0 评论 -
【C/C++】sizeof之打印输出数组元素
一、数组所谓数组,就是相同数据类型的元素按一定顺序排列的集合。在C/C++里,int str[5] = {1,2,3,4,5}就是一个有五个元素的数组注意:str[0] = 1;//数组的下标从0开始,到 n-1二、数组如何打印(1)基础版方法:利用for循环,增加变量i根据数组长度来判断循环的次数代码块:#include#includeint main原创 2016-06-16 19:28:37 · 10332 阅读 · 1 评论 -
【C/C++】strcpy,strncpy和strchr
一、strcpy与strncpy的不同之处这两个函数都有拷贝字符串的功能函数原型:char *strcpy( char *str1, const char *str2);//str1是要复制到的字符串,str2是被复制的字符串char *strncpy( char *str1, const char *str2, size_t count );//这里多了一个元素count原创 2016-06-21 22:12:05 · 730 阅读 · 0 评论 -
【数据结构】单链表的基本操作
一、单链表基本概念单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素。二、单链表的基础用法这里我们先讲一些简单的、基础的用法如初始化,销毁,插入元素,求链表长度,打印链表以及链表的销毁除此之外,链表还可以有查找元素,指定位置插入,指定位置删除等用法三、代码块各部分的单独代码块:结构体:typedef struct Node{ Da原创 2016-06-22 17:54:36 · 4843 阅读 · 1 评论 -
【C/C++】深入预处理之line
一、#line是什么它是众多预处理语句之一 二、#line有什么作用可以用来改变编译器,用来指出清高和错误信息的文件号和行号三、具体代码比较首先,我们要知道用__LINE__检测行号未修改行号:#includeint main(){ printf("当前行号为:%d",__LINE__); return 0;} 运行结果修改原创 2016-06-24 13:33:47 · 1574 阅读 · 0 评论 -
【C/C++】折半查找(二分查找)
一、二分查找在C和C++里,二分查找是针对有序数组所用的一种快速查找元素的方法。二、二分查找的条件以及优缺点条件:针对有序数组(元素从小到大或从大到小)优点:查询速度较快,时间复杂度为O(n)缺点:有硬性条件的限制,而且即使查到后,插入与删除困难。三、二分查找C语言代码块(封装后)封装函数解释:函数原型:binary_research(int arr[],int l原创 2016-06-30 17:34:48 · 42226 阅读 · 0 评论 -
【C/C++】求最大公约数的三种方法
一、最大公约数与最小公倍数最大公约数,属于数论所探究的内容。最大公约数可以通过下面的三种方法求出来。最小公倍数呢,它与最大公约数的乘机为所求数之积。 比如求 x,y的最大公约数和最小公倍数记住这个公式: x*y=最小公倍数*最大公约数二、求最大公约数的三种方法①辗转相除法算法流程图代码块:int measure(int x, int y){原创 2016-07-02 20:48:47 · 128110 阅读 · 14 评论 -
【C/C++】解密杨辉三角
一、杨辉三角所谓杨辉三角,就是下面这个图形通过找规律可以发现,除了每一行的第一个和最后一个是1以外其余的数都是通过上一行的两个数相加得到的二、程序分析①定义一个二维数组。并向里面按照规律赋元素,最后打印输出②需要利用for循环进行复制 除了1之外 其余赋值方法用 a[i][j] = a[i-1][j-1]+a[i-1][j]; //i为行数,j为列数原创 2016-07-05 10:12:37 · 2145 阅读 · 0 评论 -
【C/C++】深入位运算之比赛顺序
一、问题描述有5个人参加比赛,有人让他们预测比赛结果A选手说:B第一,我第三。B选手说:我第二,E第四。C选手说:我第一,D第二。D选手说:C最后,我第三。E选手说:我第四,A第一。比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。二、问题分析(1)设置A,B,C,D,E五个选手定义五个变量A,B,C,D,E,分别代表五个选手的名次;(2)循环嵌套原创 2016-07-06 22:50:21 · 1194 阅读 · 0 评论 -
【C/C++】二维数组之简易三子棋
一、三子棋五子棋,五个棋子不论是横着,竖着,斜着,只要能连成一条直线,就赢了三子棋(简易版)也是如此。二、思路分析①棋的类型棋类的C语言实现方法主要看棋的类型一种是像象棋那种,需要选择棋子,进行的是棋子移动的棋另一种,就是像三子棋,五子棋一样。放置棋子的棋②要点(1)数组棋盘可以用一个二维数组来表示并用0表示某一点无棋子的情况用1代表黑棋用2代表原创 2016-07-18 09:46:34 · 2237 阅读 · 2 评论 -
【C/C++】回溯经典算法之-->八皇后问题
一、八皇后问题八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。 高斯认为有76种方案。1854年在柏林的象棋杂志上不同的作者发表了40种不同的解,后来有人用图论的方法解出92种结果。原创 2016-07-09 21:04:45 · 54169 阅读 · 5 评论 -
【C/C++】模拟实现strcpy的N种境界
一、什么是strcpy?所谓的strcpy,是C语言中用来进行字符串拷贝的函数函数原型:char* strcpy(char* strDestination,const char* strSource);头文件:string.h 简单用法:#include#includeint main(){ char str[35] = {0}; char* p = "welc原创 2016-07-19 09:37:49 · 508 阅读 · 0 评论 -
【C/C++】将字符串中间的空格替换为"%20"
一、字符串按二、原创 2016-07-22 08:42:05 · 5634 阅读 · 0 评论 -
【C/C++】大端与小端
一、计算机字节序小端字节序存储:低位存放着低地址,高位存放着高地址大端字节序存储:低位存放着高地址,高位存放着低地址二、如何用C语言来判断机器的大端与小端定义一个整形变量a,并初始化为1由于整型是4个字节我们利用char取出第一个字节判断该元素是0 还是1如果为1,则为小端否则为大端三、两种方法(1)共用体union代码块:int check原创 2016-07-23 12:08:31 · 1259 阅读 · 0 评论 -
【C/C++】左旋字符串
一、左旋实现一个函数,可以左旋字符串中的k个字符。AABCD左旋一个字符得到ABCDAAABCD左旋两个字符得到BCDAA二、思路分析 三、代码实现左旋n个字符得到的字符串 判断两个字符串是否为左旋的关系int IsLeftRotate(const char* SourceStr,char* NewStr){ int i = 0; if原创 2016-07-25 12:22:24 · 583 阅读 · 0 评论 -
【C/C++】位运算之找出独苗
一、问题描述一组数据中只有一个数字出现了一次。其他所有数字都是成对出现的。请找出这个数字。(使用位运算)二、问题分析三、代码实现#includeint* check(int arr[]){ int *parr = arr; int ck = 0; int i = 0; while(*arr) { if(0 == (ck<<arr[i])) ck|=(原创 2016-07-26 12:03:28 · 404 阅读 · 0 评论 -
【C/C++】命令行参数
一、命令行参数main( int argc, char *argv[ ], char *envp[ ] ){ program-statements}argc代表命令行参数的个数argv是存着这些命令行参数的首地址的数组二、代码实现:#include#includeint main(int argc, char* argv[])原创 2016-07-28 16:51:15 · 2727 阅读 · 0 评论 -
【C/C++】用递归实现n的k次方
一、递归使用三要素(1)条件限制用if条件进行限制,在某一状态下进行递归调用自身(2)条件逼近通过一步步的递归调用,应该向if判断条件的方向逼近以停止递归(找到递归的重点)(3)将大化小每次递归的都要将一个大的问题划分成子问题 二、思路原创 2016-08-01 15:45:58 · 5405 阅读 · 1 评论 -
【C/C++】用回调函数实现计算器
一、问题概述用C语言实现一个简易计算器,可以用来实现加减乘除的功能二、问题分析这个问题大可用switch,case语句实现但是这里我们用一种比较高大上的方法函数指针和指针数组中 回调函数 三、代码实现#includevoid Add(int x,int y){ printf("%d\n",x+y);}void Sub(int x,int y){原创 2016-08-03 15:07:27 · 1568 阅读 · 1 评论 -
【数据结构】C语言实现单链表
用C语言实现基础单链表结构体首先,我们定义一个结构体Nodetypedef int DataType;typedef struct Node{ int data; struct Node* next;}Node,*PNode;Node这个结构体中,包含一个数据元素,和一个指向下一个节点的指针初始化链表void InitList(PNode* pHead){原创 2016-10-19 09:18:21 · 824 阅读 · 0 评论 -
【C语言/C++】算术移位和逻辑移位以及一道移位的题目
最近下了个牛客APP,在上面做了几道题。在做题的过程中呢。我发现了一道比较有意思的题目老规矩,直接上代码int main(){ int a = 1; int b = 32; printf("%d %d\n", a << b, 1 << 32); return 0;}乍一看,咦,结果一定输出的是 两个相同的数字 吧如果你说是,那么,恭喜你,你看我的这篇文章是有意义的原创 2016-11-22 15:44:34 · 7140 阅读 · 4 评论 -
【C语言/C++】关键字
本篇博文旨在分别介绍C语言/C++的关键字;C语言关键字按四大类分,C++关键字按首字母大小排序;主要用于关键字的快速查看,回忆C语言关键字C语言有32个关键字,这些关键字可以分为下面几个类别数据类型关键字 (1)int 整形 (2)char 字符型 (3)float 单精度浮点数 (4)double 双精度浮点 (5)signed 有符号数原创 2017-03-01 13:54:06 · 1106 阅读 · 0 评论