
C/C++
文章平均质量分 70
mzlogin
公众号:闷骚的程序员
展开
-
(课本习题)一个简单的用递归解决的小程序
题目:编写一个完整的程序,实现功能:向用户提问“现在正在下雨吗?”,提示用户输入Y或N。若输入Y,显示“现在正在下雨”;若输入N,显示“现在没有下雨”;否则继续提问“现在正在下雨吗?”。 以前做的时候没有用到递归的方法,没有用到string,所以写得感觉很不健全,还用到了goto语句,感觉很不爽。今天偶然又看到这个题,用递归重写了下,原来就是这么简单。 #include using原创 2008-10-07 04:42:00 · 1898 阅读 · 5 评论 -
Windows下用GCC连接MySQL数据库
一个网友在坛子上问到的问题,说用MinGW GCC编译运行一个连接MySQL数据库的程序时遇到错误:undefined reference to `mysql_init@4undefined reference to `mysql_real_connect@32undefined reference to `mysql_close@4 我遂去MySQL原创 2010-05-18 20:21:00 · 7008 阅读 · 12 评论 -
gcc与g++的区别与联系
在论坛逛的时候遇到好几回了,发现每次都看懂了,但不久又忘了,在些做个笔记,以备不时之需。 以下内容源自CSDN别人的讨论贴与博文。 GCC stands for “GNU Compiler Collection”. GCC is an integrated distribution of compilers for several major programming langua转载 2010-05-17 16:15:00 · 993 阅读 · 0 评论 -
对五子棋胜负的一个模拟判断
在这个模拟中,采用文件来存储棋盘状况。data.txt的内容类似下面这样,0表示未下子,1表示黑子,2表示白子:0 0 0 0 0 0 0 1 0 0 0 0 0 0 00 0 0 0 0 0 2 0 0 0 0 1 0 0 00 0 0 1 2 2 2 2 1 1 2 0 0 0 00 0 0 0 2 1 0 1 1 2 0 0 0 0 00 0 0 2 1 1 1 2 2原创 2010-04-30 14:28:00 · 3988 阅读 · 5 评论 -
对成对数据的排序与处理
论坛中有位朋友提的问题,本来以为不难的一个题的,没想到加上调试等时间还是花了好久才解决掉。而且方案也并不算完美吧。贴上留个印,方便以后遇到类似的问题查阅。 题目:有一组数据的.txt文件,上万行,如下形式:3 13 12 12 22 22 22 12 13 21 12 12 11 11 1目的是统计出1 1的个数n1,1 2原创 2010-04-28 21:46:00 · 1242 阅读 · 1 评论 -
算法设计与分析课后习题3.2
题目:编写一个算法,其功能是给一维数组a输入任意6个整数,假设为:5 7 4 8 9 1 ,然后建立一个具有以下内容的方阵,并打印出来(屏幕输出)。 5 7 4 8 9 1 1 5 7 4 8 9 9 1 5 7 4 8 8 9 1 5 7 4 4 8 9 1 5 7 7 4 8 9 1 5 设计思路:每次把数组的最后一个元素先暂存在一边,然后把其余所有元素后原创 2008-10-19 07:46:00 · 3638 阅读 · 0 评论 -
判断一个字符串是否为回文的递归算法
//编译器:GCC 4.2.1 运行环境:Redflag Linux 6.0 Desktop //如果在VC++下编译可能要加入string和algorithm两个头文件并修改函数返回值类型 #include using namespace std; int Ifhw(string s,string q,int &i) { if(s[i]==q[i]&&i!=-1)原创 2008-10-11 04:41:00 · 4737 阅读 · 0 评论 -
编写函数用递归求1到N的和
题目:在主程序中提示输入整数n,编写函数用递归的方法求1+2+3+....+n的值。 #includeusing namespace std;int D(int n,int &M){M=M+n;if(n>=1) D(n-1,M);else return 0;}int main(){int n,M=0;while(cin>>n){D(n,M原创 2008-10-07 20:12:00 · 8426 阅读 · 4 评论 -
linux下用vim编写C/C++单个源程序的基本方法
在Linux下可以用于编程的工具实在是太多了,我比较喜欢的是Kdevelop,今天又学了下在终端直接用vim编写简单C/C++程序的方法。这样貌似更方便些。 一、在终端直接用vim编写C程序 在某路径下打开一个终端,或打开终端后进入你想存放源文件的路径,然后 [root@localhost ~]# vim hello.c 接下来就可以输入源程序了,这里我们用一个最简单的程序做原创 2008-10-01 04:36:00 · 1754 阅读 · 0 评论 -
从string对象中去掉标点符号
//编译器:GCC 4.2.1 环境:Redflag Linux 6.0 Desktop 题目:编一个程序,从string对象中去掉标点符号。要求输入到程序的字符串必须含有标点符号,输出结果则是去掉标点符号后的string对象。 #include using namespace std; string s,t; string::size_type j=0,v原创 2008-10-13 03:47:00 · 4537 阅读 · 0 评论 -
一个简单的词法分析程序
这是我们的编译原理课程的第一个实验,蛮简单的,或者说我写得蛮简单。当然会有更好的实现方法呵呵~~ 实验名称:词法分析程序设计 目的与要求: (1)掌握词法分析器的构造过程以及基本方法; (2)理解正规式、NFA、DFA及最小化DFA的转换过程和方法。 实验内容要点: 给定一个正规式R=XY*|YX*Y|XYX,(*号为上标)请先将此正规式转变为NFA、DFA、最小原创 2008-10-25 12:01:00 · 2082 阅读 · 0 评论 -
在屏幕上打印N*N方阵的副上三角阵
题目:编程打印形如下面图形的n*n方阵的副上三角阵 1 3 6 10 15 2 5 9 14 4 8 13 7 12 11 (算法设计与分析P108第4题) 设计思路:仔细观察发现每一行的每个元素比它上一行的对应元素的下一个要小一,故考虑用一个整型向量容器来放置元素,然后每次对元素从下标较大的做起逐个加1,每次比上次少加一个元素,并且少输出一个下标最小原创 2008-10-26 14:18:00 · 4055 阅读 · 0 评论 -
数 转换为 大写
也是笔试题,题目要求为: 实现数字到大写的转换,如输入120.000078,转换后为"壹佰贰拾点零零零零柒捌". 分析: 可以直接将输入用字符串获取,因为即使是double型也精度有限,可能会违背用户的本意。然后得到小数点位置将变量dot置为对应下标,如果没有小数点则将其置为字符串长度大小,再分小数点前和小数点后处理。 小数点后:直接将数字转换为对应原创 2009-10-07 14:45:00 · 1026 阅读 · 0 评论 -
循环队列的一个简单实现
这是笔试中遇到的一道题,要求实现循环队列,有入队,出队,判断是否为空,是否满等操作。 分析: 可以使用一个数组来存放循环队列,队头标记与队尾标记初始都为0,入队操作即队尾标记加1,若加1后相对循环等于队头则上溢;出队操作即队头标记加1,若加1后相对循环等于队尾则下溢;若队头标记等于队尾标记则为空;若队尾标记加1相对循环等于队头则为满。 具体实现如下: tem原创 2009-10-07 03:40:00 · 995 阅读 · 0 评论 -
一个超简易的拾色器程序
那日突然心血来潮。。。想写一个简单的拾色器。 最后出来的东西比较简易,因为感觉这东西也没必要做得怎么好看,实用就行了。源码和程序的下载链接:http://download.youkuaiyun.com/source/2402476 刚开始打算做一个MFC对话框程序,通过响应WM_MOUSEMOVE来完成,无果。使用过SetCapture、HOOK等方法均没尝试成功。后来只好退而求其次,使用一个原创 2010-05-28 12:50:00 · 2877 阅读 · 3 评论 -
使用VC与GCC操作SQLite数据库的最简单Demo
一、准备工作 到http://www.sqlite.org/download.html下载Source Code里的amalgamation版,里头有4个文件,sqlite3.c、sqlite3.h、shell.c、sqlite3ext.h。它们具体是干嘛的原创 2011-07-03 22:15:21 · 1822 阅读 · 0 评论 -
C++中的#,##,和"
想要灵活应用宏,离不开#和##。"在学习#和##之前,先来看一个关于"的例子:#include #include int main(){ const char* p1 = "Hello," "World!"; // 一个空格 const char* p2 = "Hello," "World!"; // 多个空格 const c原创 2014-11-09 22:47:59 · 12077 阅读 · 2 评论 -
有static变量的namespace被多个cpp包含
有如下三个文件header.hheader.h12345678#pragma oncenamespace NS1{ static int var = 10;}void print_var();src.cppsrc.cpp1234567#in原创 2013-10-26 02:23:40 · 1829 阅读 · 0 评论 -
文件被多个中间文件输出目录相同的工程包含
case: 两个工程Proj1和Proj2,同时包含demo.cpp,其中Proj1在工程配置里预定义宏MACRO_PROJ1,Proj2在工程配置里预定义宏MACRO_PROJ2,两个工程的中间文件输出目录为同一个,文件demo.cpp内容如下:#include int main(){#ifdef MACRO_PROJ1 printf("output by pr原创 2013-06-22 14:00:37 · 1524 阅读 · 0 评论 -
为基于xulrunner的内嵌Gecko程序启用Profile
Mozilla自带的Profile支持实际上是非常给力的,看看%appdata%/Mozilla/Firefox下的文件就能知道,这里存放着许多的信息,它们提供了很多东西,例如:1.可以通过Profiles/…default/chrome下的userchrome.css文件来定制自己的firefox外观,比如用#appmenu-button { display:none !important;原创 2012-06-19 22:45:52 · 3478 阅读 · 1 评论 -
HGE引擎学习笔记1 : 如何模拟物理碰撞
模拟物理碰撞要解决的几个问题: 1.怎样模拟速度的变化?设置一个摩擦系数friction(0 2.怎样模拟碰撞?每个时间片处理过程中,判断物体的边缘坐标加上dx与dy后有没有超过屏幕边缘,如果超过,则采取一定的策略重新设置物体坐标让其在正常范围内,如X轴超过,则对dx取反;如Y轴超过,则对dy取反.计算好坐标之后再进行绘图. 3.碰撞过程中的声音处理这里涉及到音原创 2012-02-12 23:30:33 · 1451 阅读 · 0 评论 -
while(cin>>ch)如何退出
方法:回车后,在新行Ctrl+z并回车。若输入数据后Ctrl+z再回车无效。原因:输入缓冲是行缓冲。当从键盘上输入一串字符并按回车后,这些字符会首先被送到输入缓冲区中存储。每当按下回车键后,cin.get() 就会检测输入缓冲区中是否有了可读的数据。cin.get() 还会对键盘上是否有作为流结束标志的 Ctrl+Z 或者 Ctrl+D 键按下作出检查,其检查的方式转载 2012-02-04 17:43:04 · 2634 阅读 · 0 评论 -
C/C++中的#与##
先来看两段代码:// main.cpp#include #define MZ_PRINT(n) printf("x"#n"=%d", x##n);int main(){ int x1 = 1; MZ_PRINT(1); return 0;}这段代码在经过g++ -E预编译以后:... // 头文件相关内容int main(){ int x1 = 1;原创 2012-01-05 11:01:24 · 932 阅读 · 0 评论 -
文思创新笔试面试里做得不好的题总结
1.进程与线程的差别进程是程序的一次执行.线程可以理解为进程中执行的一段程序片段.在一个多任务环境下中下面的概念可以帮助我们理解两者的区别.进程间是独立的,这表现在内存空间,上下文环境上;线程运行在进程空间里.一般来讲(不使用特殊技术),进程无法突破进程边界存取其它进程内的存储空间;而线程由于处于线程空间内,所以同一进程所产生的线程共享内一内存空间.同一进程中的两段代码不能够同时执行,除非原创 2011-11-06 13:42:48 · 1260 阅读 · 1 评论 -
捷通华声笔试面试里做得不好的题总结
1.new与malloc的区别(1)new是C++操作符,malloc是C库函数.(2)对于 非内部数据结构的对象而言,malloc无法满足动态对象的要求.对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数,由于mallce是库函数而不是运算符,不在编译器的控制权限之内,不能够把执行构造函数和析构函数的任务强加于malloc/free.(3)new可以认为是mallo原创 2011-11-04 22:16:17 · 6368 阅读 · 1 评论 -
关于拷贝构造函数与赋值运算符的一点知识
#include using namespace std;class demo{public: demo() { cout << "default constructor" << endl; } demo(const demo& d) { cout << "copy constructor" << endl; } demo& operator=(const dem原创 2011-11-03 22:52:00 · 850 阅读 · 0 评论 -
简单的全排列算法实现
问题描述:实现一个简单的全排列算法,以整形数组{1,2,3,4,5}为例,假设元素无重复。 问题分析:如果用多层循环来实现,那么……有多少个元素将需要有多少层循环,这样作为实现一个算法的角度来看显然是不可取的。以a[] = {1,2,3,4,5}为例,它的全排列是1 {2,3,4,5}的全排列2 {1,3,4,5}的全排列3 {1,2,4,5}的全排列4原创 2011-11-20 19:05:48 · 1254 阅读 · 0 评论 -
青蛙跳台阶的问题
这几天正在复习算法,今天在看一篇文章时偶然看到这个题目,想了一下居然没什么思路...(抱歉,实在太菜.),文章中提示了一个关键词:Fibonacci数列.然后我又小百度了一下,找了一个具体分析实例,结合两处,这才理清了思路.(汗啊...基础全忘光了,这以后咋办啊...深感担忧..原创 2011-10-11 23:26:33 · 3449 阅读 · 2 评论 -
让你用GCC编译的程序拥有一个自定义的.ico图标
本文参考页面:《Setting icons for Windows programs with gcc》 说是翻译,实际上是根据理解自己来描述一遍,不忠实原文。 效果演示:使用.ico图标前,.exe文件图标、运行时程序左上角图标、任务栏图标均为系统默认,使用后则都已翻译 2011-07-30 23:04:30 · 7803 阅读 · 4 评论 -
遇到的关于ifstream::eof()的一点小问题
文件test.dat里有如下内容:10, 11, 12, 13, 100 结果使用 int i_val; std::ifstream in("test.dat"); while(!in.eof()) { in >> i_val; std::cout } 对内容进行输出时总会原创 2009-09-29 15:30:00 · 2493 阅读 · 1 评论 -
C++控制台版简易仓库管理系统
应优快云论坛里一位网友请求写的,实现功能如下: 编写一个仓库管理程序管理仓库内货物的信息,信息组成部分由:货物编号,货物名称,货物单价,货物数量等。要求能增加或删除货物信息,能按编号或名称查询货物信息,能显示库存量不足一定值(由用户从键盘输入)的货物信息,能显示所有货物的信息,用子函数实现各个子功能。 用VC6.0环境编写。 由于写得比较匆忙,所以此版本健壮性不是特别的好。原创 2009-04-10 23:25:00 · 2458 阅读 · 0 评论 -
C/C++里自带提供的整数进制转换的几种方式
一、输出格式化 (1)在C里 printf函数提供的有各进制的格式化参数,比如%o,%x就分别表示格式化为八进制和十六进制 printf("%o",i); 与 printf("%x",i); 就分别表示以八进制和十六进制输出 (2)在C++里 coutcout 表示格式为八进制 cout 表示格式为十进原创 2009-04-08 14:35:00 · 11015 阅读 · 0 评论 -
定义宏,比较a与b的大小,不用大于小于符号
RT:定义宏,比较a与b的大小,不用大于小于符号 在论坛上看到的题目,花了几分钟想了想,出了个demo,然后刷新了下帖子,发现已经有高手发出了类似的解答。防止以后笔试面试中遇到,在这贴一个。也不知道是否存在问题。 #define MAX(a,b) ((((int)((a)-(b)))>>31)?printf("b大/n"):((((int)((a)-(b)))|0x0)?pri原创 2010-03-18 10:38:00 · 2382 阅读 · 0 评论 -
在C++里while语句的一个妙用
一道简单的题: 提示用户输入任意个整数,然后输出它们的和。 按我以前的思路,肯定要定义一个数组,然后用一个循环解决问题。这样就产生了数组长度的问题:如果定义的长度不够,会无法正常进行;如果长度过长,就造成了空间的浪费。指针?感觉没必要。 偶然翻了一下C++ Primer,发现了里面讲while语句时提到的一种用法能完美地解决这个问题,具体程序可以如下: #include原创 2008-09-29 03:33:00 · 1468 阅读 · 2 评论 -
算法设计与分析课后习题3.5
题目:编程打印如以下规律的n*n方阵 1 1 1 1 1 1 1 2 2 2 2 1 1 2 3 3 2 1 1 2 3 3 2 1 1 2 2 2 2 1 1 1 1 1 1 1 思路:由外向内数,位于第一圈的元素值都是1,位于第N圈的值都是N //算法设计与分析180页第5题 #include #include using namespace s原创 2008-10-19 07:59:00 · 1801 阅读 · 0 评论 -
GCC4.2.1与VC6.0编译器容错性小对比
虽然才用Linux不久,但我现在写写小程序的时候已经习惯了GCC+GDB+vim的模式,说实在的我目前也只是照着网上那些爱好者们的说法来做,他们说怎样好,我就试着去学习怎样的模式,我知道这样太盲目,可是也没有更好的办法去选择,除了在网上找找信息外,遇见什么问题身边连个讨论的人都没有。无奈,希望能早点看到Linux普及的那天--会有那么一天么?我心里没底。 学校安排的上机还都是在VC6.0的环境原创 2008-10-24 05:15:00 · 2635 阅读 · 0 评论 -
统计字符串中每个英文字母的个数
题目:编程序,提示用户输入一任意长度的字符串,输出此字符串中每个英文字母的个数。 源程序代码: #include #include using namespace std; int main() { coutstring s; getline(cin,s); int count[26]; memset(count,0,sizeof(coun原创 2008-10-26 11:09:00 · 9069 阅读 · 0 评论 -
控制台扫雷程序C++源代码(Dim版V0.10)
很久很久以前(感觉上),我们算法课上的老师就说给我们现场编个扫雷游戏看看。可过了N周后还是没见行动。郁闷了,就想自己写个出来算了,不过又还没学会编图形界面,所以只好做一个控制台的实现了。经过几个小时从无到有的思考和编程,这样一个简单版的扫雷从这里诞生。至今为止还没看到别人的相关代码,所以也许这里面的算法很烂,不过好歹是完完全全地从咱手中写出来的,小骄傲一下哈。最近还只是在考虑究竟学不学图形编程的问原创 2008-11-13 05:25:00 · 2000 阅读 · 0 评论 -
语法分析:算术表达式递归下降分析程序设计
1、实验目的: (1)掌握自上而下语法分析的要求与特点。 (2)掌握递归下降语法分析的基本原理和方法。 (3)掌握相应数据结构的设计方法。 2、实验内容: 编程实现给定算术表达式的递归下降分析器。 算术表达式文法如下: E-->E+T|T T-->T*F|F F-->(E)|i 3、设计说明: 首先改写文法为LL(1)文法;然后为每一原创 2008-11-24 14:20:00 · 7540 阅读 · 2 评论 -
语法分析:算术表达式预测分析程序设计
1、实验目的: (1)掌握自上而下语法分析的要求与特点。 (2)掌握LL(1)语法分析的基本原理和方法。 (3)掌握相应数据结构的设计方法。 2、实验内容: 编程实现给定算术表达式的分析器。 算术表达式文法如下: E-->E+T|T T-->T*F|F F-->(E)|i 3、设计说明: 首先改写文法为LL(1)文法;构造LL(1)分析表,然后编写预测分析程序。 4、设计分析与步骤 (1)将原算术原创 2008-11-24 14:48:00 · 3267 阅读 · 1 评论