Tag Archives: C/C++

Makefile选项CFLAGS、LDFLAGS、LIBS

CFLAGS 表示用于 C 编译器的选项,

CXXFLAGS 表示用于 C++ 编译器的选项。
这两个变量实际上涵盖了编译和汇编两个步骤。

CFLAGS: 指定头文件(.h文件)的路径,如:CFLAGS=-I/usr/include -I/path/include。同样地,安装一个包时会在安装路径下建立一个include目录,当安装过程中出现问题时,试着把以前安装的包的include目录加入到该变量中来。

LDFLAGS:gcc 等编译器会用到的一些优化参数,也可以在里面指定库文件的位置。用法:LDFLAGS=-L/usr/lib -L/path/to/your/lib。每安装一个包都几乎一定的会在安装目录里建立一个lib目录。如果明明安装了某个包,而安装另一个包时,它愣是说找不到,可以抒那个包的lib路径加入的LDFLAGS中试一下。

LIBS:告诉链接器要链接哪些库文件,如LIBS = -lpthread -liconv

Continue reading

C语言中的getchar()与回车

写一个需要输入字符的小程序时,在写了第二个getchar(),但是控制台(在第一个getchar()的输入提示显示正常的情况下)没有提示第二个getchar()应该有的输入提示。纳闷,查了下。

 

1. 现象

观察以下代码:

如果从键盘输入一个字符’a’后回车,那么’a’成功赋给ch1。我又想从键盘输入另一个字符’b’,但此时对ch2的赋值是不成功的。 Continue reading

【未完待续】C语言100个算法经典例题

自己实现C语言100个算法经典例题,个别没看懂和绘图的程序略过。

本文目录

  1. 【程序1】1~4组成无重复数字的三位数
  2. 【程序2】企业利润计算(switch)
  3. 【程序10】题目:打印楼梯,同时在楼梯上方打印两个笑脸。
  4. 【程序13】 题目:打印出所有的“水仙花数”
  5. 【程序14】将一个正整数分解质因数。
  6. 【程序17】字符串字符统计
  7. 【程序18】求s=a+aa+aaa+aaaa+aa...a 的值
  8. 【程序19】完数
  9. 【程序20】自由落体
  10. 【程序21】题目:猴子吃桃问题
  11. 【程序22】乒乓球比赛
  12. 【程序24】数组前n项和
  13. 【程序25】题目:求1+2!+3!+...+20!的和
  14. 【程序26】题目:利用递归方法求5!。
  15. 【程序27】题目:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。
  16. 【程序28】年龄的递推计算
  17. 【程序29】题目:打印正整数
  18. 【程序30】判断回文数
  19. 【题目31】判断输入星期
  20. 【程序36】题目:求100之内的素数
  21. 【程序37】题目:对10个数进行排序
  22. 【题目38】求一个3*3矩阵对角线元素之和
  23. 【题目39】将一个数插入有序数组中
  24. 【题目40】逆序输出一个数组
  25. 【题目41】学习static定义静态变量的用法
  26. 【题目42】学习使用auto定义变量的用法
  27. 【题目43】学习使用static的另一用法
  28. 【题目45】学习使用register定义变量的方法
  29. 【题目46】宏#define命令练习(1)
  30. 【题目47】宏#define命令练习(2)
  31. 【题目48】宏#define命令练习(3)
  32. 【题目49】#if #ifdef和#ifndef的综合应用
  33. 【题目50】#include的应用练习
  34. 【题目51】学习使用按位与&
  35. 【题目52】学习使用按位或|
  36. 【题目53】学习使用按位异或^
  37. 【题目54】取一个整数a从右端开始的4~7位
  38. 【题目55】学习使用按位取反~
  39. 【题目61】打印出杨辉三角形(要求打印出10行如下图)
  40. 【题目66】输入3个数a,b,c,按大小顺序输出
  41. 【题目67】输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组
  42. 【题目68】有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数
  43. 【题目69】有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位
  44. 【题目70】写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度
  45. 【题目71】编写input()和output()函数输入,输出5个学生的数据记录
  46. 【题目72】创建一个链表
  47. 【题目73】反向输出一个链表
  48. 【题目74】连接两个链表
  49. 【题目75】放松一下,算一道简单的题目
  50. 【题目76】编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数1/1+1/3+...+1/n(利用指针函数)
  51. 【题目77】填空练习(指向指针的指针)
  52. 【题目78】找到年龄最大的人,并输出。请找出程序中有什么问题
  53. 【题目79】字符串排序
  54. 【题目80】海滩分桃子
  55. 【题目81】填数字
  56. 【题目82】八进制转换为十进制
  57. 【题目83】求0—7所能组成的奇数个数
  58. 【题目84】一个偶数总能表示为两个素数之和
  59. 【题目85】判断一个素数能被几个9整除
  60. 【题目86】两个字符串连接程序
  61. 【题目87】回答结果(结构体变量传递)
  62. 【题目88】打印*
  63. 【题目89】电话传送数据
  64. 【题目90】专升本一题,读结果
  65. 参考
 

Continue reading

Linux下C语言编程入门

首先我们需要确保已经安装了linux系统,并确保有vim编辑器。学习笔记总共分13小节,如下:

  1. Linux基本命令(安装软件,目录操作)
  2. Vim编辑器的使用
  3. Linux下使用gcc命令编译第一个C程序
  4. Vim编辑器分栏编辑显示
  5. 头文件和函数定义分离
  6. 多个c文件编译使用makeFile进行编写简化操作
  7. main函数中的return
  8. 关于return 0和命令连接符&&
  9. main函数中的参数
  10. 标准输入流,输出流,错误流
  11. 输入输出流以及错误流的重定向机制
  12. 管道原理及应用
  13. 使用管道将两个程序连接

下面我们先讲解一些预备知识。 Continue reading

二分法猜价格策略的C语言实现

之前看书上的一个例程写的程序,不过例程类似于《幸运52》节目中的猜价格,主持人让参与者猜测商品的价格,如果猜测的结果高了,主持人给出高了的提示,低了同理,直至参与者猜出正确的价格。

而本例程并非给出这样的程序,而是给定设定好的价格(假定参与者不知情,只有主持人知道),参与者给出初始价格,根据获知主持人的提示,参与者根据二分法的策略猜测价格,直至才到正确价格停止。

Continue reading

动态规划的精华体现——Floyd算法

今天下午老师讲了图相关算法(Prim和Kruskal两个求最小生成树的,还有Dijkstra,SPFA,Bellman-Ford,Floyd算法等)和内容,其实这么说很不准确,一直从第一天开始就一直在讲图的相关内容,毕竟个人感觉树也是图的一种罢了。下面这个四句话摘自某百度知道:

  • 图——实际上是关系的直观表示;
  • 树——实际上是一种有层次的特殊的关系;
  • 表——实际上是线性关系,可以看作特殊的图(每个节点只和唯一的节点有关系),特殊的树(每个节点只有一个儿子);
  • 他们之间是可以相互转换的,因为复杂度低的数据结构是可以用复杂度高的数据结构表示的

本节做Floyd算法的记录。部分内容来自网络,以及代码在别人的基础上改了不少。

Continue reading

用C语言一个小时实现八数码(Eight Digital)游戏!

什么?!你竟然不知道什么是八数码游戏?

好吧,就是将随机的在九宫格里的1到8这八个数,按照每次只能移动一格的游戏规则,使得里面的数字从最初的状态变成第一行为1,2,3,第二行4,5,6,第三行7,8,0的最终状态。则游戏胜利!

今天下午老师讲的是DFS,BFS,DBFS以及AStar算法等。其中,非常经典的例子就是——八数码。课间闲得无聊,就想实现一下这个游戏。

由于前阵子写了一个问题百出的2048游戏,和2048类似,都是需要用到二维数组(从某种角度上来说就是矩阵)所以,今天写起这个来还算比较容易。下面是游戏程序思路的关键点及源码,和最重要的不足。 Continue reading

并查集补充:Ackerman函数及C语言实现(递归方法和非递归方法)

第二天数据结构讲的是并查集,这里是补充并查集的补充内容:Ackerman函数。想看并查集内容,请移步→谈并查集思想——基础入门

【1.Ackerman函数定义】

  • 当两个连续函数都趋于无穷时,我们常用洛必达法则来比较它们趋向无穷的快慢。
  • 函数的阶越高,它趋向无穷的速度就越快。
  • 在定义在正整数域上的函数中,n!趋向于正无穷的速度非常快,所以在算法设计中如果出现这样的时间复杂度就太糟糕了。logn趋向无穷的速度则非常慢。

Continue reading

POJ3264 Balanced Lineup——用链表实现一维线段树的建立,插入,查询

今天下午考试,一个程序也没写出来,尽管结果在意料之中,但是还是有些开心,毕竟我看到的两道题,都有思路。一个是做函数的求导,另一个是Crossing River。不管了,正题开始,要看数组解本题的,以及具体的输入输出样例的,请移步→POJ3264——用数组实现一维线段树的建立,插入,查询

POJ 3264 Balanced Lineup

给定Q(1 ≤ Q≤ 200,000)个数A1,A2… AQ,,多次求任一区间Ai–Aj中最大数和最小数的差。

Continue reading