2012年6月29日
摘要: 面对C /CLI,很多人的第一个问题自然是“什么是C /CLI”,我个人喜欢将其看作是位于静态程序设计和动态程序设计之间的一座桥梁。C /CLI这个名称本身就包含着一组术语——而其中最重要的术语却是最不明显的那一个。首先来看第一个术语“C ”,这当然指的是由Bjarne Stroustrup在Bell实验室时发明的C 编程语言。它所支持的是一种为代码执行速度和执行体所占空间所高度优化的静态对象模型。除了堆内存分配以外,它不支持在运行时对应用程序进行任何的更改。它允许我们对底层机器进行无限的访问,但对于正在运行的程序中的活动类型、以及相关的程序基础构造,它的访问能力却非常有限、或者根本就不可能。 阅读全文
posted @ 2012-06-29 13:42 carekee 阅读(1497) 评论(0) 推荐(0)
摘要: 1.C++虽然主要是以C的基础发展起来的一门新语言,但她不是C的替代品,不是C的升级,C++和C是兄弟关系。没有谁比谁先进的说法,更重要的一点是C和C++各自的标准委员会是独立的,最新的C++标准是C++98,最新的C标准是C99。因此也没有先学C再说C++的说法,也不再(注意这个"不再")有C++语法是C语法的超集的说法。2.C++/CLI和C#是微软的,它们与C和C++没有任何关系,虽然部分语法相似。但哪两种语言不相似呢?都是abc这26个字母。3.不要使用TC/TC++/BC/CB等古老的编译器来学习C/C++,因为它们太古老了,不支持新的C/C++标准。不要使用CB 阅读全文
posted @ 2012-06-29 13:41 carekee 阅读(330) 评论(0) 推荐(0)
摘要: 1. 多态性和虚函数我们先看一个例子:例1- 1#include <iostream.h>class animal{public: void sleep() { cout<<"animal sleep"<<endl; } void breathe() { cout<<"animal breathe"<<endl; }};class fish:public animal{public: void breathe() { cout<<"fish bubble"< 阅读全文
posted @ 2012-06-29 13:40 carekee 阅读(280) 评论(0) 推荐(0)
摘要: 我们在使用《金山词霸》时发现,在《金山词霸》已经运行了的情况下,再次点击《金山词霸》的图标,那么它不会再运行另外一个《金山词霸》,而是将已有的《金山词霸》给激活,始终只能运行一个《金山词霸》的实例。在我们的程序当中如果要实现类似《金山词霸》的功能,就要解决两个问题,首先是要判断该程序已有一个实例在运行,其次是要将已运行的应用程序实例激活,同时退出第二个应用程序实例。对于第一个问题,我们可以通过设置命名互斥对象或命名信标对象,在程序启动的时候检测互斥对象或信标对象,如互斥对象或信标对象已存在,则可以判断此程序已有一个实例正在运行。第二个问题是如何找到已经运行的应用程序实例,如果我们能够找到已运行 阅读全文
posted @ 2012-06-29 13:39 carekee 阅读(511) 评论(0) 推荐(0)
摘要: 在对话框程序中,我们经常是利用对话框上的子控件进行命令响应来处理一些事件。如果我们想要让对话框(子控件的父窗口)类来响应我们的按键消息,我们可以通过ClassWizard对WM_KEYDOWN消息进行响应,当程序运行后,我们按下键盘上的按键,但对话框不会有任何的反应。这是因为在对话框程序中,某些特定的消息,例如按键消息,它们被Windows内部的对话框过程处理了(即在基类中完成了处理,有兴趣的读者可以查看MFC的源代码),或者被发送给子控件进行处理,所以我们在对话框类中就捕获不到按键的消息了。既然我们知道了这个处理的过程,我们就可以找到底层处理按键消息的函数,然后在子类中重载它,就可以在对话框 阅读全文
posted @ 2012-06-29 13:39 carekee 阅读(537) 评论(0) 推荐(0)
摘要: 我在上篇中“盘点”了TCPL和D&E以及入门教程、高效和健壮编程、模板和泛型编程等方面共十几本C++好书。冬去春来,让我们继续C++书籍精彩之旅。标准库当我还在研究院工作时,与同院另外两家研究所合作开发过一个大型水利枢纽调度集成项目。我们三家软件系统之间都要相互通信。在调试通讯模块时,细心的客户(一名好学的系统管理员)发现对于同一通信规约的解释代码,我的不超过30行,而对方的则超过了150行且很难看懂。这位系统管理员很纳闷,我说大家编程风格和习惯不一样,我使用了标准库,而他使用了传统C编程风格以及他所习惯的另外一些技术。别误会!我绝无贬低这位合作伙伴的意思。事实上,我对那些真正有着深厚 阅读全文
posted @ 2012-06-29 13:38 carekee 阅读(382) 评论(0) 推荐(0)
摘要: 有人在Quake III的源代码里面发现这么一段用来求平方根的代码: /*================SquareRootFloat================*/ float SquareRootFloat(float number) { long i; float x, y; const float f = 1.5F; x = number * 0.5F; y= number; i= * ( long * ) &y; i= 0x5f3759df - ( i >> 1 );//注意这一行 y= * ( float * ) &i; y= y * ( f - 阅读全文
posted @ 2012-06-29 13:38 carekee 阅读(336) 评论(0) 推荐(0)
摘要: C++是一门广泛用于工业软件研发的大型语言。它自身的复杂性和解决现实问题的能力,使其极具学术研究价值和工业价值。和C语言一样,C++已经在许多重要的领域大获成功。然而,一个不可否认的现实是,在低阶程序设计领域,C++挤压着C同时也在承受着C的强烈反弹,而在高阶程序设计领域,Java和C#正在不断蚕食着C++的地盘。也许C++与C合为一体永远都是一个梦想,也许Java和C#的狂潮终将迫使C++回归本位——回到它有着根本性优势的开发领域:低级系统程序设计、高级大规模高性能应用设计、嵌入式程序设计以及数值科学计算等。果真如此,我认为这未尝不是一件好事。C++吸引如此之多的智力投入,以至于这个领域的优 阅读全文
posted @ 2012-06-29 13:36 carekee 阅读(663) 评论(0) 推荐(0)
摘要: 1. API之网络函数 WNetAddConnection 创建同一个网络资源的永久性连接 WNetAddConnection2 创建同一个网络资源的连接 WNetAddConnection3 创建同一个网络资源的连接 WNetCancelConnection 结束一个网络连接 WNetCancelConnection2 结束一个网络连接 WNetCloseEnum 结束一次枚举操作 WNetConnectionDialog 启动一个标准对话框,以便建立同网络资源的连接 WNetDisconnectDialog 启动一个标准对话框,以便断开同网络资源的连接 WNetEnumResource 枚 阅读全文
posted @ 2012-06-29 13:35 carekee 阅读(215) 评论(0) 推荐(0)
摘要: TC是美国BORLAND 公司在IBM PC机上开发的一个高效、优化的C编译程序,它自带高效的全屏幕编辑程序,在集成开发环境下可支持编辑、编译、连接调试和运行等过程连续完成。 TC提供了与汇编语言的接口和在C程序中直接插入汇编指令代码的功能,支持以“远调用”和“近调用”方式来调用使用汇编语言编写的函数。 TC调用汇编语言函数时,对汇编语言的编写要求十分严格,并且对大小写字母也有严格的区分。如果在编写供TC调用的汇编函数时不按照规定好了的格式书写,调用是不会成功的。 下面先举一个在TC中调用汇编函数的例子,然后再详细讲解怎样做才能成功。步聚如下:1、在TC集成环境中编写一个主程序(名为TCMAI 阅读全文
posted @ 2012-06-29 13:34 carekee 阅读(435) 评论(0) 推荐(0)
摘要: 第一章 再谈main()主函数 每一C 程序都必须有一main()函数,可以根据自己的爱好把它放在程序的某个地方。有些程序员把它放在最前面,而另一些程序员把它放在最后面,无论放在哪个地方,以下几点说明都是适合的。1. main() 参数在Turbo C2.0启动过程中,传递main()函数三个参数:argc,argv和env。* argc: 整数,为传给main()的命令行参数个数。* argv: 字符串数组。在DOS 3.X 版本中,argv[0] 为程序运行的全路径名;对DOS 3.0 以下的版本,argv[0]为空串("") 。argv[1] 为在DOS 命令行中执行 阅读全文
posted @ 2012-06-29 13:34 carekee 阅读(1886) 评论(0) 推荐(0)
摘要: Windows 服务被设计用于需要在后台运行的应用程序以及实现没有用户交互的任务。为了学习这种控制台应用程序的基础知识,C(不是C++)是最佳选择。本文将建立并实现一个简单的服务程序,其功能是查询系统中可用物理内存数量,然后将结果写入一个文本文件。最后,你可以用所学知识编写自己的 Windows 服务。 当初我写第一个NT 服务时,我到 MSDN 上找例子。在那里我找到了一篇 Nigel Thompson 写的文章:“Creating a Simple Win32 Service in C++”,这篇文章附带一个 C++ 例子。虽然这篇文章很好地解释了服务的开发过程,但是,我仍然感觉缺少我需. 阅读全文
posted @ 2012-06-29 13:33 carekee 阅读(366) 评论(0) 推荐(0)
摘要: C++代码如下:#include <algorithm>#include <vector>#include <cstdio>using namespace std;typedef unsigned int Type;enum{ BASE_DATA = 10000, MAX_NUM = 100000 , MAX_SIZE = MAX_NUM+1000};struct MulOpt {Type data1;MulOpt(Type x):data1(x){}inline Type operator()(Type y){return data1*y;}};struc 阅读全文
posted @ 2012-06-29 13:33 carekee 阅读(252) 评论(0) 推荐(0)
摘要: 利用异或的性质来对文件进行加密:c=a^bc^b=a#include "stdio.h"#include "stdlib.h"void main(int argc,char *argv[]){FILE *fp1,*fp2;char c,ch;long j;if(3!=argc){printf("Command error/n");exit(1);}if((fp1=fopen(argv[1],"rb"))==NULL){printf("Can not open the source file/n" 阅读全文
posted @ 2012-06-29 13:32 carekee 阅读(241) 评论(0) 推荐(0)
摘要: 本文要介绍Turbo C程序设计的基本步骤及如何编译、调试和运行源程序。并给出Turbo C的常用编辑命令。最后介绍Turbo C编译、连接和运行时的常见错 误。 一、Turbo C程序设计基本步骤 程序设计方法包括三个基本步骤: 第一步: 分析问题。 第二步: 画出程序的基本轮廓。 第三步: 实现该程序。 3a. 编写程序 3b. 测试和调试程序 3c. 提供数据打印结果 下面, 我们来说明每一步的具体细节。 第一步: 分析问题 在这一步, 你必须: a. 作为解决问题的一种方法, 确定要产生的数据(输出)。作为这一子步的 一部分, 你应定义表示输出的变量。 b. ... 阅读全文
posted @ 2012-06-29 13:31 carekee 阅读(524) 评论(0) 推荐(0)
摘要: C语言是被使用的最广泛的一种高级语言,其历史相当久远。而其发展也相当神速, 从当初的标准C发展到后来的C++。其性能也发生了很多很大的变化。C语言拥有众多的编译器,其中不乏优秀者众多。从当初的Turbo C引入集成化编译环境后,C语言就以其灵活性,高效率,可移植性好深入人心。后来发展起来的C++,Java 等语言,无不是在 其基础进行扩充,使其更为灵活,更方便易用。新的C++编译器引入了很多特色。使得C语言语法更加灵活。摒弃了标准C对语法死板的要求。使得编程随心所欲。这里推荐 Borland C++ 和Visual C++.当然这是指Dos应用,如果开发Windows应用程序,那么当 首推Vi 阅读全文
posted @ 2012-06-29 13:31 carekee 阅读(303) 评论(0) 推荐(1)
摘要: 1.源程序的编译 在Linux下面,如果要编译一个C语言源程序,我们要使用GNU的gcc编译器.下面我们以一个实例来说明如何使用gcc编译器. 假设我们有下面一个非常简单的源程序(hello.c): intmain(intargc,char**argv) { printf("HelloLinux/n"); } 要编译这个程序,我们只要在命令行下执行: gcc-ohellohello.c gcc编译器就会为我们生成一个hello的可执行文件.执行./hello就可以看到程序的输出结果了.命令行中gcc表示我们是用gcc来编译我们的源程序,-o选项表示我们要求编译器给我们输出的 阅读全文
posted @ 2012-06-29 13:31 carekee 阅读(785) 评论(0) 推荐(0)
摘要: 在开始看本文以前,我先说明一下C语言的安装和使用中最应该注意的地方:许多网友在下载Turbo C 2.0和Turbo C++ 3.0后,向我问得最多的是在使用过程中碰到如下问题: 1)出现找不到 stdio.h conio.h等include文件;2)出现cos.obj无法连接之类的错误 这些问题是由于没有设置好路径引起的,目前下载的TC2,TC3按安装分类大概有两种版本:一是通过install安装,这类应该已经设置好了路径;二是直接解压后建立TC.EXE的快捷方式,在WINDOWS下双击即可运行(DOS下直接运行TC.EXE),目前国内大多为这种,因此下载使用前请注意路径设置:设置方法为.. 阅读全文
posted @ 2012-06-29 13:30 carekee 阅读(1425) 评论(0) 推荐(0)
摘要: 说明:Turbo C 的源程序错误分为三种类型:致命错误、一般错误和警告。其中,致命错误通常是内部编译出错;一般错误指程序的语法错误、磁盘或内存存取错误或命令行错误等;警告则只是指出一些得怀疑的情况,它并不防止编译的进行。 下面按字母顺序A~Z分别列出致命错误及一般错误信息,英汉对照及处理方法:(一)、致命错误英汉对照及处理方法:A-B致命错误Bad call of in-line function (内部函数非法调用)分析与处理:在使用一个宏定义的内部函数时,没能正确调用。一个内部函数以两个下划线(__)开始和结束。Irreducable expression tree (不可约表达式树.. 阅读全文
posted @ 2012-06-29 13:30 carekee 阅读(602) 评论(0) 推荐(0)
摘要: /*调用函数中的scanf前没有提示,其实在主函数中输入时,空格后还可以输入被调用函数中的参数*//*这样就避免了很多输出的麻烦,而且看着也比较的舒服:-)例如新建立一个文件,就可以直接输入mf a.txt(注意,中间有空格)就可以建立一个文本文件了*/#include<stdio.h>#include<dir.h>#include<string.h>#include<conio.h>#include<errno.h>#include<dos.h>#include<io.h>#include<proces 阅读全文
posted @ 2012-06-29 13:29 carekee 阅读(622) 评论(0) 推荐(1)
摘要: 排序是程序设计中非常重要的内容,它的功能是将一组无序的的数据,排列成有序的数据序列,经过排列后的数据,要么是从大到小排列,要么是从小到大排列。一般也只有这两种情况。 例如我们统计班级学生的成绩,那么一般是按照学号来进行统计,原来成绩是无序排列的,这样的话非常不适合于我们对成绩的查询,那么一般我们进行成绩查询之前,先进行排序,如按照高分到低分的排序,这样可以很快地查出本班的最高分和最低分,和成绩比较靠前或靠后的学生。排序有很多种方法,常用的有三种:冒泡排序、选择排序、插入排序等,下面我们就对这三种方法做一下分析和比较,以便大家能够更好的理解和应用。一、冒泡排序 1、冒泡排序的基本思想:对于n个数 阅读全文
posted @ 2012-06-29 13:29 carekee 阅读(1723) 评论(0) 推荐(0)
摘要: 1. 表达式定律 任何能产生数值结果的运算、操作都可以作为表达式,并可以放到任何需要数值结果的地方,只要数值类型能够匹配 常见的可以产生数值结果的运算和操作 算术、逻辑、位运算等 ? : &、*等操作 有返回值的函数 常见的需要数值的地方有: 赋值 条件判断 函数调用 2. 类型定律 任何类型都可以在任何需要类型的地方使用 已知特例 函数返回值不能定义为数组类型 常用类型 基本数据类型、指针、数组、结构…… 常见的需要类型的地方 定义变量 定义指针、数组和结构 函数参数和返回值 sizeof 3. 参数... 阅读全文
posted @ 2012-06-29 13:28 carekee 阅读(264) 评论(0) 推荐(0)
摘要: #include<stdio.h>#include<string.h>#include<stdlib.h>#include<ctype.h> int n; struct node{ int w; int flag; char c; struct node *plink,*llink,*rlink; char code[50]; }*num[100],*root; FILE *fp; char tmpcode[50]; int t=0;int main(void){ int i; void settree(); void code(); void 阅读全文
posted @ 2012-06-29 13:28 carekee 阅读(521) 评论(0) 推荐(0)
摘要: 我用三种不同的算法来做的:/*求围圈问题的详细算法和程序*//*n人围成一圈,编号为1,2,3,……,17,从1开始报数,报到m的倍数的人离开,一直下去,直到最后剩下1人,求此人的编号 */#include <stdio.h>#include <stdlib.h>int main(void){int n, m; int* a; /* 用于存储“那些人” */int i, j, s; printf("请输入多少个人:/n"); scanf("%d",&n); printf("请输入是哪个数字的倍数:/n" 阅读全文
posted @ 2012-06-29 13:27 carekee 阅读(538) 评论(0) 推荐(0)
摘要: #include "stdio.h"#include "alloc.h"#include "stdlib.h"typedef struct student{int num;int m;struct student *next;}node,*link;#define LEN sizeof(node)link readdate(int *n) {link head,p1,p2; int i;randomize(); p2=NULL;printf("/ninput the number of n:");scanf(&qu 阅读全文
posted @ 2012-06-29 13:27 carekee 阅读(1097) 评论(0) 推荐(0)
摘要: 1 基本解释 extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。 另外,extern也可用来进行链接指定。 2 问题:extern 变量 在一个源文件里定义了一个数组:char a[6]; 在另外一个文件里用下列语句进行了声明:extern char *a; 请问,这样可以吗? 答案与分析: 1)、不可以,程序运行时会告诉你非法访问。原因在于,指向类型T的指针并不等价于类型T的数组。extern char *a声明的是一个指针变量而不是字符数组,因此与实际的定义不同,从而造成运行时非法访问。应该将... 阅读全文
posted @ 2012-06-29 13:26 carekee 阅读(514) 评论(0) 推荐(0)
摘要: 比如999=3*3*3*37#include<stdio.h>voidmain(){inta,i;printf("pleaseinputanumber/n");scanf("%d",&a);printf("%d=",a);for(i=2;i<=a;i++){for(i;i!=a;a=a/i){if(a%i==0)printf("%d*",i);elsebreak;}}printf("%d",a);printf("/n");} 阅读全文
posted @ 2012-06-29 13:25 carekee 阅读(171) 评论(0) 推荐(0)
摘要: #include <stdio.h>#include <stdlib.h>#include <time.h>typedef struct m_l{long data; struct m_l *next;}mLong, *pLong;void tune(pLong long_data);void multi(pLong long_data, long data);long display(pLong long_data);void tune(pLong long_data){ pLong pl=long_data, tmp,ptr; long jw=0; in 阅读全文
posted @ 2012-06-29 13:25 carekee 阅读(452) 评论(0) 推荐(0)
摘要: /*按规则输入线性方程组的系数(每行N+1个数值,按顺序输入N个系数项,最后一项为常数项,用空格隔开),输出该方程组的系数行列式和它的值,最后输出方程组的解*//*处理整型数据*/#include <stdio.h>#include <stdlib.h> #define N 4 //行列式的行(列)数 typedef struct node{int data; //存储元素的值 int x; //存储元素的横坐标 int y; //存储元素的纵坐标 } array;int sum; //全局变量,存储行列式的值void Create(int H[][N], int X[ 阅读全文
posted @ 2012-06-29 13:24 carekee 阅读(2273) 评论(0) 推荐(0)
摘要: 程序可以实现如下三种功能:求某个日期对应的星期求某年某月有的天数 输出某年的日历.例如,打印2006年日历如下:-------------------------------------------------------------------------- 2006 年-------------------------------------------------------------------------- 一 月 二 月 周日 周一 周二 周三 周四 周五 周六 周日 周一 周二 周三 周四 周五 周六 1 3 5 7 9 11 13 1 3 5 7 14 15 16 17 18 阅读全文
posted @ 2012-06-29 13:24 carekee 阅读(439) 评论(0) 推荐(0)
摘要: #include "stdio.h"#include "string.h"#include "stdlib.h" void password(char *pass){char password[20],inletter=NULL;int i=0;clrscr();gotoxy(17,6);printf("/n/t/tInput your password:");while((i<20)&&(inletter!='/r')){ inletter=getch(); /*无回显输入* 阅读全文
posted @ 2012-06-29 13:20 carekee 阅读(803) 评论(0) 推荐(0)
摘要: /*创建行列式(人工输入数据),输出该行列式和代数余子式,并输出其值*//*2006-1-7 梁见斌*/ #include <stdio.h>#include <stdlib.h> #define N 3typedef struct node{int data; //存储元素的值 int x; //存储元素的横坐标 int y; //存储元素的纵坐标 } array;int sum; //全局变量,存储行列式的值void Create(int H[][N]); //构造一个行列式 void PrintH(const int H[][N]); //输出行列式 void P 阅读全文
posted @ 2012-06-29 13:20 carekee 阅读(2608) 评论(0) 推荐(1)
摘要: 第一章 再谈main()主函数 每一C 程序都必须有一main()函数,可以根据自己的爱好把它放在程序的某个地方。有些程序员把它放在最前面,而另一些程序员把它放在最后面,无论放在哪个地方,以下几点说明都是适合的。1. main() 参数在Turbo C2.0启动过程中,传递main()函数三个参数:argc,argv和env。* argc: 整数,为传给main()的命令行参数个数。* argv: 字符串数组。在DOS 3.X 版本中,argv[0] 为程序运行的全路径名;对DOS 3.0 以下的版本,argv[0]为空串("") 。argv[1] 为在DOS 命令行中执行 阅读全文
posted @ 2012-06-29 13:19 carekee 阅读(663) 评论(0) 推荐(0)
摘要: 我们在编制程序时,经常要用到清屏处理,如dos下的cls,Turbo C下的clrscr()等都具有清屏功能,但这些均为一般意义的清屏,并未显示其清屏规律.而有时为了达到清屏的艺术美观,往往对清屏有一些具体要求,如:开幕清屏;闭幕清屏;上清屏;下清屏;中清屏.为此,这里用C语言编制了几个子函数,用于程序中时,既可达到清屏的目的,有能增加屏幕的艺术美观. 子函数及演示程序:#include<stdio.h>#include<dos.h>#include<conio.h>void goto_xy(int x,int y);void dcls(int x1,int 阅读全文
posted @ 2012-06-29 13:19 carekee 阅读(543) 评论(0) 推荐(0)
摘要: #include <stdio.h>void main(void){unsigned long int f[31]; //存储每天的花数unsigned long int sum=0; //存储送的总花数int i;//计算每一天送的花数及送的总花数f[1] = 1; //第一天送的花数sum = sum + f[1];printf("第1天送%12ld朵花/n", f[1]);for (i=2; i<=30; i++) //计算第2天到第30天送的花数及总花数{f[i] = f[i-1] * 2;sum = sum + f[i];printf(" 阅读全文
posted @ 2012-06-29 13:18 carekee 阅读(229) 评论(1) 推荐(0)
摘要: #include void main(void){int yh[11][11]={0}; //存储 杨辉 三角中的数int i,j;//给杨辉三角中的各行列上的数赋值for(i=1; i<=10; i++){yh[i][1] = 1; //第一列的值都为1yh[i][i] = 1;//对角线上的值也都为1}for (i=2; i<=10; i++) //给 非第1列,非对象线 上的数赋值{for (j=2;j{yh[i][j] = yh[i-1][j-1] + yh[i-1][j]; // 它的值是 上一行中两数之和:与自己同列的数加上比自己小一列的数}}//输出杨辉三角for ( 阅读全文
posted @ 2012-06-29 13:17 carekee 阅读(167) 评论(0) 推荐(0)
摘要: #include <stdio.h>/*魔方阵排列规律(必须是奇数×奇数阵)(1)将1放在第一行中间一列(2)从2开始直到n*n,各数依次按下列规则存放:每一个数存放的行比前一个数行减一列数加1(3)如果上一数的行数为1,则下一个数行为n(最下一行)(4)当上一个数列为n是时,则一下数的列数应为1,行数减1(5)如果按上面规则确定位置上已有数,或上一个数是第1行第n列时,则把下一个数放在上一个数的下面*/void main(void){int a[16][16];int i,j,k,p,m,n;p=1; //表示阶数为偶数while(p==1) //若输入的数不符合要求, 阅读全文
posted @ 2012-06-29 13:17 carekee 阅读(242) 评论(0) 推荐(0)
摘要: #include void main(void){int a[20], n, i;int t; //临时变量,用于两个变量值的互换printf("我们要建立一个数组,请你输入数组的长度:");printf("数组长度为1-19之间的数:");scanf("%d", &n);for (i=1; i<=n; i++) //输入原数组元素{printf("请输入a[%d]: ", i);scanf("%d", &a[i]);}//输出原顺序 数组元素printf("/n 阅读全文
posted @ 2012-06-29 13:14 carekee 阅读(1070) 评论(0) 推荐(0)
摘要: #include void main(void){int a[11], i, j;int t; //用来进行两相变量值的互换int min;//用来存储每轮比较中的最小值的下标for (i=1; i<=10; i++) //输出10个数{printf("请你输入a[%d]:",i);scanf("%d",&a[i]);}//输出原顺序的数组for(i=1; i<=10; i++){printf("%6d", a[i]);}printf("/n");//选择法排序for(i=1;i<=9;i 阅读全文
posted @ 2012-06-29 13:13 carekee 阅读(174) 评论(0) 推荐(0)
摘要: 中断INT 21H : 1、字符功能调用类(Character-Oriented Function)01H、07H和08H — 从标准输入设备输入字符 02H — 字符输出 03H — 辅助设备的输入 04H — 辅助设备的输出 05H — 打印输出 06H — 控制台输入/输出 09H — 显示字符串 0AH — 键盘缓冲输入 0BH — 检测输入状态 0CH — 清输入缓冲区的输入功能 (1)、功能01H、07H和08H 功能描述: 从标准输入设备(如:键盘)读入一个字符。该中断在处理过程中将一直处于等待状态直到有字符可读为止。该输入还可被重定向,如果这样做,则无法判断文件是否已到文件尾 阅读全文
posted @ 2012-06-29 13:12 carekee 阅读(1476) 评论(0) 推荐(1)
摘要: //折半查找法/** 从表列中查一个数最简单的方法是从第1个数开始顺序查找,将要找的数与表列中的 数一一比较,直到找到为止(如果表列中无此数,则应找到最后一个数,然后判定“找不到”) 但这种“顺序查找法”效率较低。如果表列中有1000个数,且要找的数恰恰是第1000个数, 则要进行1000次比较才得到结果。平均比较次数为500次。 折半查找法是效率较高的一种方法,基本思路如下: 假如有已按由小到大排好序的9个数,A[1]--A[9] 其值分别为:1 3 5 7 9 11 13 15 17 若输入一个3,想查3是否在此数列中,先找出表列中居中的数,即a[5] 将要找的数3与a[5]比较,a[5] 阅读全文
posted @ 2012-06-29 13:12 carekee 阅读(1530) 评论(0) 推荐(0)
摘要: #include #include void main(void){int a[101],i,j;a[1]=0;for(i=2; i<=100; i++){a[i]=i;//假设2到100都为素数}for(i=2; i<=sqrt(100); i++){if(a[i]!=0){for(j=i+1; j<=100; j++){if(a[j]!=0 && a[j]%a[i]==0){a[j]=0;}elseNULL;}}}for(i=2; i<=100; i++){if(a[i]!=0){printf("%d是素数。/t",a[i]);} 阅读全文
posted @ 2012-06-29 13:12 carekee 阅读(261) 评论(0) 推荐(0)
摘要: #include <iostream>#include <vector>int _tmain(int argc, _TCHAR* argv[]){using namespace std;const _int64 LargeNumber=100000000;vector<_int64> a(1,1);_int64 i,n,temp,pro=0;cout<<"input an integer:"<<endl;cin>>n;vector<_int64>::iterator iter;for(i=1 阅读全文
posted @ 2012-06-29 11:46 carekee 阅读(160) 评论(0) 推荐(0)
摘要: 在3D图形编程中,经常要求平方根或平方根的倒数,例如:求向量的长度或将向量归一化。C数学函数库中的sqrt具有理想的精度,但对于3D游戏程式来说速度太慢。我们希望能够在保证足够的精度的同时,进一步提高速度。 Carmack在QUAKE3中使用了下面的算法,它第一次在公众场合出现的时候,几乎震住了所有的人。据说该算法其实并不是Carmack发明的,它真正的作者是Nvidia的Gary Tarolli(未经证实)。 // // 计算参数x的平方根的倒数 // float InvSqrt (float x) { float xhalf = 0.5f*x; int i = *(int*)&x; 阅读全文
posted @ 2012-06-29 11:16 carekee 阅读(649) 评论(0) 推荐(0)
摘要: 《C程序设计》的内容很丰富,按照我们现在的教学大纲,教学的主要内容是基础知识、四种结构的的程序设计、函数与数组的应用和一些简单的算法。在学习时,同学们应该把主要精力放在这些部分,通过实践(练习和上机调试等熟练掌握。当然,在初学C语言时,可能会遇到有些问题理解不透,或者表达方式与以往数学学习中不同(如运算符等),这就要求不气馁,不明白的地方多问多想,鼓足勇气进行学习,待学完后面的章节知识,前面的问题也就迎刃而解了,这一方面我感觉是我们同学最欠缺,大多学不好的就是因为一开始遇到困难就放弃,曾经和好多同学谈他的问题,回答是听不懂、不想听、放弃这样三个过程,我反问,这节课你听过课吗?回答又是没有,根本 阅读全文
posted @ 2012-06-29 11:14 carekee 阅读(339) 评论(1) 推荐(0)
摘要: 很多人学C语言很长一段时间了,还不知C究竟能干什么,以为学习c语言没什么用,纯粹是为了应付学校的考试.更有人说"学C语言?别做如此愚蠢的行为了!赶快学C++吧!"这种看法是不对的,不应该把c跟c++之间划起绝对的界限,过分看重c++而把c贬得一无是处,这是很片面的.C++功能虽然强大,但它毕竟是c的"超集",在c++里有哪一处找不到c的影子呢?没有c的支持,c++只能是无本之木。 一般情况下,c++编程方式编写的程序源代码量小,但编译后的代码量较大,运行的速度略低,不过开发时的工作量和工作难度较小;而c编程方式编写的源代码量较大,但可执行的效率高.如果一 阅读全文
posted @ 2012-06-29 11:14 carekee 阅读(578) 评论(0) 推荐(0)
摘要: 分类函数,所在函数库为ctype.h int isalpha(int ch) 若ch是字母('A'-'Z','a'-'z')返回非0值,否则返回0 int isalnum(int ch) 若ch是字母('A'-'Z','a'-'z')或数字('0'-'9'),返回非0值,否则返回0 int isascii(int ch) 若ch是字符(ASCII码中的0-127)返回非0值,否则返回0 int iscntrl(int ch) 若ch是作 阅读全文
posted @ 2012-06-29 11:13 carekee 阅读(676) 评论(0) 推荐(0)
摘要: 一.缩进格式 Tab是8个字符,于是缩进也是8个字符.有很多怪异的风格,他们将缩进格式定义为4个字符(设置为2个字符!)的深度,这就象试图将PI定义为3一样让人难以接受. 理由是:缩进的大小是为了清楚的定义一个块的开始和结束.特别是当你已经在计算机前面呆了20多个小时了以后,你会发现一个大的缩进格式使得你对程序的理解更容易. 现在,有一些人说,使用8个字符的缩进使得代码离右边很近,在80个字符宽度的终端屏幕上看程序很难受.回答是,但你的程序有3个以上的缩进的时候,你就应该修改你的程序. 总之,8个字符的缩进使得程序易读,还有一个附加的好处,就是它能在你将程序变得嵌套层数太多的时候... 阅读全文
posted @ 2012-06-29 11:13 carekee 阅读(329) 评论(0) 推荐(0)
摘要: 程序1】题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去 掉不满足条件的排列。2.程序源代码:main(){int i,j,k;printf(“/n“);for(i=1;i〈5;i++) /*以下为三重循环*/ for(j=1;j〈5;j++) for (k=1;k〈5;k++) { if (i!=k&&i!=j&&j!=k) /*确保i、j、k三位互不相同*/ printf(“%d,%d,%d/n“,i,j,k); }}======... 阅读全文
posted @ 2012-06-29 11:12 carekee 阅读(7560) 评论(0) 推荐(0)
摘要: 序大数阶乘的计算是一个有趣的话题,从中学生到大学教授,许多人都投入到这个问题的探索和研究之中,并发表了他们自己的研究成果。如果你用阶乘作关键字在google上搜索,会找到许多此类文章,另外,如果你使用google学术搜索,也能找到一些计算大数阶乘的学术论文。但这些文章和论文的深度有限,并没有给出一个高速的算法和程序。我和许多对大数阶乘感兴趣的人一样,很早就开始编制大数阶乘的程序。从2000年开始写第一个大数阶乘程序算起,到现在大约己有6-7年的时光,期间我写了多个版本的阶乘计算器,在阶乘计算器的算法探讨和程序的编写和优化上,我花费了很大的时间和精力,品尝了这一过程中的种种甘苦,我曾因一个新算法 阅读全文
posted @ 2012-06-29 11:11 carekee 阅读(9156) 评论(1) 推荐(4)
摘要: 发布一个实用的js window封装类,主要内容包括:1.获取屏幕宽度的函数2.获取屏幕高度的函数3.获取滚动条横向宽度4.获取滚动条竖向高度5.window.onscroll绑定事件6.删除window.onscroll绑定事件7.window.onload绑定事件8.让元素显示在屏幕中间9.获取屏幕中间显示距离顶部的高度10.固顶元素在屏幕中显示,不随滚动条的变化而变化Js代码 if(!coos)varcoos=function(){}; if(!coos.browser) { coos.userAgent=navigator.userAgent.toLowerCase(); coos.b 阅读全文
posted @ 2012-06-29 09:40 carekee 阅读(836) 评论(0) 推荐(0)