文档库 最新最全的文档下载
当前位置:文档库 › c——eoverlap

c——eoverlap

c——eoverlap
c——eoverlap

#include

#include

// This mex function implements the equivalent of:

//

// function y = example_mat(x)

// y = 2 * x + 1;

// return

// [y, z] = foo(a, b, c)

//

// nrhs = 3

// a : prhs[0]

// b : prhs[1]

// c : prhs[2]

//

// nlhs = 2

// y : plhs[0]

// z : plhs[1]

void mexFunction(int nlhs, mxArray *plhs[],

int nrhs, const mxArray *prhs[])

{

// must have single double array input.

if (nrhs != 3) { printf("in nrhs != 3\n"); return; }

if (mxGetClassID(prhs[0]) != mxDOUBLE_CLASS) { printf("input must be a double array\n"); return; }

if (mxGetClassID(prhs[1]) != mxDOUBLE_CLASS) { printf("input must be a double array\n"); return; }

// must have single output.

if (nlhs != 4) { printf("out nlhs != 4\n"); return; }

// get size of x.

int const num_dims1 = mxGetNumberOfDimensions(prhs[0]);

int const *dims1 = mxGetDimensions(prhs[0]);

int const num_dims2 = mxGetNumberOfDimensions(prhs[1]);

int const *dims2 = mxGetDimensions(prhs[1]);

int const num_dims3 = mxGetNumberOfDimensions(prhs[2]);

int const *dims3 = mxGetDimensions(prhs[2]);

if(dims1[0]<9 || dims2[0]<9 || dims1[0]!=dims2[0] || dims3[0]!=1){ printf("dims != 9\n"); return; }

// create new array of the same size as x.

int *odim = new int[2];

odim[0]=dims2[1];

odim[1]=dims1[1];

plhs[0] = mxCreateNumericArray(2, odim, mxDOUBLE_CLASS, mxREAL); plhs[1] = mxCreateNumericArray(2, odim, mxDOUBLE_CLASS, mxREAL); plhs[2] = mxCreateNumericArray(2, odim, mxDOUBLE_CLASS, mxREAL); plhs[3] = mxCreateNumericArray(2, odim, mxDOUBLE_CLASS, mxREAL);

// get pointers to beginning of x and y.

double const *feat1 = (double *)mxGetData(prhs[0]);

double const *feat2 = (double *)mxGetData(prhs[1]);

double const *flag = (double *)mxGetData(prhs[2]);

double *over_out = (double *)mxGetData(plhs[0]);

double *mover_out = (double *)mxGetData(plhs[1]);

double *desc_out = (double *)mxGetData(plhs[2]);

double *mdesc_out = (double *)mxGetData(plhs[3]);

float *feat1a = new float[9];

float *feat2a = new float[9];

float *tdesc_out = new float[dims2[1]*dims1[1]];

float *tover_out = new float[dims2[1]*dims1[1]];

int common_part=(int)flag[0];

for(int j=0;j

for (int i=0; i

over_out[j*dims2[1]+i]=100.0;

desc_out[j*dims2[1]+i]=1000000.0;

}

}

// printf("%f %f\n",flag[0],flag[1]);

// total number of elements in arrays.

/*int total = 1;

for (int i=0; i

total *= dims1[i];

printf("feat1 %d %d \n",num_dims1, dims1[i]);

}

*/

float max_dist,fac,dist,dx,dy,bna,bua,descd,ov;

for(int j=0,f1=0;j

max_dist=sqrt(feat1[f1+5]*feat1[f1+6]);

if(common_part)fac=30/max_dist;

else fac=3;

max_dist=max_dist*4;

fac=1.0/(fac*fac);

feat1a[2]=fac*feat1[f1+2];

feat1a[3]=fac*feat1[f1+3];

feat1a[4]=fac*feat1[f1+4];

feat1a[7] = sqrt(feat1a[4]/(feat1a[2]*feat1a[4] - feat1a[3]*feat1a[3]));

feat1a[8] = sqrt(feat1a[2]/(feat1a[2]*feat1a[4] - feat1a[3]*feat1a[3]));

for (int i=0,f2=0; i

//compute shift error between ellipses

dx=feat2[f2]-feat1[f1];

dy=feat2[f2+1]-feat1[f1+1];

dist=sqrt(dx*dx+dy*dy);

if(dist

feat2a[2]=fac*feat2[f2+2];

feat2a[3]=fac*feat2[f2+3];

feat2a[4]=fac*feat2[f2+4];

feat2a[7] = sqrt(feat2a[4]/(feat2a[2]*feat2a[4] - feat2a[3]*feat2a[3]));

feat2a[8] = sqrt(feat2a[2]/(feat2a[2]*feat2a[4] - feat2a[3]*feat2a[3]));

//find the largest eigenvalue

float maxx=ceil((feat1a[7]>(dx+feat2a[7]))?feat1a[7]:(dx+feat2a[7]));

float minx=floor((-feat1a[7]<(dx-feat2a[7]))?(-feat1a[7]):(dx-feat2a[7])); float maxy=ceil((feat1a[8]>(dy+feat2a[8]))?feat1a[8]:(dy+feat2a[8]));

float miny=floor((-feat1a[8]<(dy-feat2a[8]))?(-feat1a[8]):(dy-feat2a[8]));

float mina=(maxx-minx)<(maxy-miny)?(maxx-minx):(maxy-miny);

float dr=mina/50.0;

bua=0;bna=0;int t1=0,t2=0;

//compute the area

for(float rx=minx;rx<=maxx;rx+=dr){

float rx2=rx-dx;t1++;

for(float ry=miny;ry<=maxy;ry+=dr){

float ry2=ry-dy;

//compute the distance from the ellipse center

float a=feat1a[2]*rx*rx+2*feat1a[3]*rx*ry+feat1a[4]*ry*ry;

float b=feat2a[2]*rx2*rx2+2*feat2a[3]*rx2*ry2+feat2a[4]*ry2*ry2;

//compute the area

if(a<1 && b<1)bna++;

if(a<1 || b<1)bua++;

}

}

ov=100.0*(1-bna/bua);

tover_out[j*dims2[1]+i]=ov;

mover_out[j*dims2[1]+i]=ov;

//printf("overlap %f \n",over_out[j*dims2[1]+i]);return;

}else {

tover_out[j*dims2[1]+i]=100.0;

mover_out[j*dims2[1]+i]=100.0;

}

descd=0;

for(int v=9;v

descd+=((feat1[f1+v]-feat2[f2+v])*(feat1[f1+v]-feat2[f2+v]));

}

descd=sqrt(descd);

tdesc_out[j*dims2[1]+i]=descd;

mdesc_out[j*dims2[1]+i]=descd;

}

}

float minr=100;

int mini=0;

int minj=0;

do{

minr=100;

for(int j=0;j

for (int i=0; i

if(minr>tover_out[j*dims2[1]+i]){

minr=tover_out[j*dims2[1]+i];

mini=i;

minj=j;

}

}

}

if(minr<100){

for(int j=0;j

tover_out[j*dims2[1]+mini]=100;

}

for (int i=0; i

tover_out[minj*dims2[1]+i]=100;

}

over_out[minj*dims2[1]+mini]=minr;

}

}while(minr<70);

int dnbr=0;

do{

minr=1000000;

for(int j=0;j

for (int i=0; i

if(minr>tdesc_out[j*dims2[1]+i]){

minr=tdesc_out[j*dims2[1]+i];

mini=i;

minj=j;

}

}

}

if(minr<1000000){

for(int j=0;j

tdesc_out[j*dims2[1]+mini]=1000000;

}

for (int i=0; i

tdesc_out[minj*dims2[1]+i]=1000000;

}

desc_out[minj*dims2[1]+mini]=dnbr++;//minr }

}while(minr<1000000);

delete []odim;

delete []tdesc_out;

delete []tover_out;

delete []feat1a;

delete []feat2a;

}

C语言简介

1.C语言的历史 我们都知道最早的操作系统都是由汇编语言(低级语言)编写的。汇编语言过于依赖电脑硬件,因此程序的可读性和可移植性比较差。若想提高程序的可读性和可移植性,最好改用高级语言,可高级语言又不具备低级语言可直接访问硬件的特点,在这种情况下,一种兼有高、低语言特性的新语言----C语言诞生了。 C语言于1972~1973年间,由贝尔试验室的在B语言的基础上设计而出,在1978年发表,同时和(简称K&R)合着了着名的《The C Programming Language》,有人把这本书当做C 语言标准,可它并没有定义一个完整的标准。ANSI于1983年首次为C语言制定了标准,称为ANSI C。在1988年K&R根据ANSI C重新写了他们的着作。但在1987年ANSI更新并公布了新的C 语言标准,87 ANSI C。该标准并于1990年被ISO接受为ISO C。 2.C语言的特点 1)语言简捷、紧凑,使用方便、灵活。(C语言只有32个关键字) 2)运算符丰富。(C语言有34种运算符) 3)数据结构丰富。 4)具有结构化控制语句。 5)语法限制不严格,程序设计自由度大。 6)可以直接访问硬件进行操作。(如:位操作,指针等) 7)生成目标代码质量高,程序执行效率高。 8)程序可移植性好。(与汇编语方相比) 以上只是简单的介绍了一下C语言的特点,在以后的使用中会理解和发现C语言的更多特点。

3.简单的C程序介绍 例: 1)#include <> /*导入头文件*/ 2)#include <> 3)void main() /*主函数*/ 4){ /*函数体开始*/ 5)double x,s; /*声明变量*/ 6)printf("input number:\n"); /*输出语句*/ 7)scanf("%f",&x); /*输入变量x的值*/ 8)s=sin(x); /*调用库函数sin(),并给s赋值*/ 9)printf("sine of %f is %f\n",x,s); /*输出结果*/ 10)} /*函数体结束*/ 上面是一个简单的C程序,大体来看,这个程序包函三部分,分别是预处理部分(1~2)、函数头(3)和函数体(4~10)。 1)预处理部分 预处理命令一般写在程序的开始。 #include是预处理命令的一种,称为文件包含命令。在“<>”或“""”中指定要包含的文件,被包含的文件通常由系统提供,其扩展名为“.h”,被称为头文件或首部文件。 C语言的头文件中包含了各个标准库函数的函数原型。因此,在程序中调用某个库函数,必须包含该库函数原型所在的头文件。 2)函数头部分

C语言常用函数

C语言的常用库函数 函数1。absread()读磁盘绝对扇区函数 原形:int absread(int drive,int num,int sectnum,void *buf) 功能:从drive指定的驱动器磁盘上,sectnum指定的逻辑扇区号开始读取(通过DOS中断0x25读取)num 个(最多64K个)扇区的内容,储存于buf所指的缓冲区中。 参数:drive=0对应A盘,drive=1对应B盘。 返回值:0:成功;-1:失败。 头文件:dos.h 函数2。abswrite()写磁盘绝对扇区函数 原形:int abswrite(int drive,int nsects,int lsect,void *buffer) drive=0(A驱动器)、1(B驱动器)、 nsects=要写的扇区数(最多64K个); lsect=起始逻辑扇区号; buffer=要写入数据的内存起始地址。 功能:将指定内容写入(调用DOS中断0x26)磁盘上的指定扇区,即使写入的地方是磁盘的逻辑结构、文件、FAT表和目录结构所在的扇区,也照常进行。 返回值:0:成功;-1:失败。 头文件:dos.h 函数3。atof()将字符串转换成浮点数的函数 原形:double atof(const char *s) 功能:把s所指向的字符串转换成double类型。 s格式为:符号数字.数字E符号数字 返回值:字符串的转换值。 头文件:math.h、stdlib.h 函数4。atoi()将字符串转换成整型数的函数 原形:int atoi(const char *s) 功能:把s所指向的字符串转换成int类型。 s格式为:符号数字 返回值:字符串的转换值。若出错则返回0。 头文件:stdlib.h 函数5。atol()将字符串转换成长整型数的函数 原形:long atol(const char *s)

C语言-基础教程-C语言整型数据

C语言-基础教程-C语言整型数据 考试大计算机等级站整理: 2.3.1 整型常量 整型常量及整常数。它可以是十进制、八进制、十六进制数字表示的整数值。十进制常数的形式是: d i g i t s s 这里d i g i t s可以是从0到9的一个或多个十进制数位,第一位不能是0。八进制常数的形式是: 0 d i g i t s s 在此,d i g i t s可以是一个或多个八进制数(0~7之间),起始0是必须的引导符。 十六进制常数是下述形式: 0 x h d i g i t s0 X h d i g i t s 这里h d i g i t s可以是一个或多个十六进制数(从0~9的数字,并从"a"~" "f"的字母)。 引导符0是必须有的,X即字母可用大写或小写。注意,空白字符不可出现在整数数字之间。表2 - 3列出了整常数的形式。 整常数在不加特别说明时总是正值。如果需要的是负值,则负号"-"必须放置于常数表达式的前面。 每个常数依其值要给出一种类型。当整常数应用于一表达式时,或出现有负号时,常数类型自动执行相应的转换,十进制常数可等价于带符号的整型或长整型,这取决于所需的常数的尺寸。 八进制和十六进制常数可对应整型、无符号整型、长整型或无符号长整型,具体类型也取决于常数的大小。如果常数可用整型表示,则使用整型。如果常数值大于一个整型所

能表示的值,但又小于整型位数所能表示的数,则使用无符号整型。同理,如果一个常数比无符号整型所表示的值还大,则它为长整型。如果需要,当然也可用无符号长整型。 在一个常数后面加一个字母l或L,则认为是长整型。如1 0 L、7 9 L、0 1 2 L、0 11 5 L、0 X A L、0 x 4 f L等。 2.3.2 整型变量 前面已提到,C规定在程序中所有用到的变量都必须在程序中指定其类型,即"定义"。这是和B A S I C、F O RT R A N不同的,而与P a s c a l相似。 运行结果为: R U N a u=22, b u=-1 4 可以看到不同类型的整型数据可以进行算术运算。在本例中是i n t型数据与unsingned int型数据进行相加减运算。

C语言中常见的功能函数

C语言中常见的功能函数(应掌握的编程) 1、两个变量值的交换 void exchang(float *x,float *y) /*形参为两个变量的地铁(指针)*/ {float z; z=*x; *x=*y; *y=z; } void main() {float a,b; scanf(“%f%f”,&a,&b); exchang(&a,&b); /*因为形参是指针,所以实参必须给变量的地址,不能给变量名*/ printf(“a=%f,b=%f”,a,b); } 2、判断一个整数的奇偶 int jou(int n) /*如果是奇数返回1,否则返回0*/ { if(n%2==0) return 0; return 1; } 3、小写字符转换成大写字符 根据实参传给形参的字母,判断是否是小写字母,如果是小写字母,则转换成大写字母,否则不进行转换,函数返回转换后或原来的字符。 本函数仿照toupper()库函数的功能编写(toupper(c) 是将变量c字母转换成大写字母,如果不是小写字母不转换)。 char toupper1(char ch) {if(ch>=?a?&&ch<=?z?) ch-=32; /*小写字母比对应的大写字母ASCII码值大32*/ return ch; } 4、判断一个字符是否是字母(或数字) 根据实参传给形参的字符,判断是否是字母(或数字),如果是字母(或数字)返回1,否则返回0。此函数是根据库函数isalpha()(或isdigit())来编写的。 int isalpha1(char ch) /*判断是否是字母*/ {if(ch>=?A?&&ch<=?Z?||ch>=?a?&&ch<=?z?) return 1; else return 0; } int isdigit1(char ch) /*判断是否是数字字符*/ {if(ch>=?0?&&ch<=?9?) return 1; else return 0; } 5、根据学生成绩,返回其等级 char fun(float cj) {char c; switch((int)cj/10) {case 10:

C语言常用IO函数

一些比较常用的io函数,总结了一下,一块贴出来了 stdin标准输入流 stdout标准输出流 stderr标准错误流 字符IO函数 1.int getchar() 说明:从stdin读取1个字符 返回值:成功,返回该字符;出错,返回EOF; 2.int fgetc(FILE fp) 说明:功能同getchar,默认从文件fp读取; 返回值:成功,返回该字符;出错,返回EOF; 可以重定向 3.int getc(FILE fp) 说明:功能与fgetc相同,但getc既可以被用作 函数实现,也可以被用作宏实现,并且它的编码效率 可能会更高. 可以重定向 4.int putchar(int ch) 说明:向stdout输出字符ch; 返回值:成功,返回该字符;出错,返回EOF; 5.int fputc(int c,FILE fp) 说明:功能同putchar,默认向fp输出字符ch; 返回值:成功,返回该字符;出错,返回EOF; 6.int putc(int c,FILE fp) 说明:功能与fputc相同,但putc与getc一样既可能被用作 函数实现,也可能被用作宏实现,并且它的编码效率可能会更高;可以重定向 字符串IO函数 1.char gets(char str) 说明:从stdin读取字符串(不包括'n')写入到字符串str中; 返回值:成功,返回str首地址;错误,返回NULL; 2.char fgets(char str,int N,FILE fp) 说明:默认从文件fp中读取N个字符(包括'n')写入到字符串str中,

如果实际输入字符串小于N,fgets自动添加'n', 返回值:成功,返回字符串首地址;错误或遇到EOF,返回NULL;可以重定向 3.int puts(const char str) 说明:向stdout输出字符串str,然受输出一个'n', 返回值:成功,返回非负值;错误,EOF; 4.int fputs(const char str,FILE fp) 说明:功能同puts,默认向文件fp写入字符串str; 返回值:成功,返回非负值;错误,EOF; 可以重定向 格式化IO函数 1.int scanf(const char format,...) 说明:根据format从stdin格式化读取N个值,并输入到... 返回值:成功,返回读取的项数;出错,返回EOF 2.int fscanf(FILE fp,const char format,...) 说明:功能同scanf,默认从文件fp读取, 返回值:成功,返回读取的项数;出错或遇到文件尾,返回EOF 可以重定向 3.int sscanf(const char buf,const char format,...) 说明:根据format从buf格式化读取N个值,并输入到... 返回值:成功,返回读取的项数;出错,返回EOF 4.int printf(const char format,...) 说明:根据format格式化数据,并输出到stdout 返回值成功,返回输出字符数;错误,返回负数; 5.int fprintf(FILE fp,const char format,...) 说明:功能同printf,默认向文件fp写入; 可以重定向 6.int sprintf(char buf,const char format,...) 说明:根据format格式化数据,并输出到buf, 返回值:成功,返回输出字符数;错误,返回负数

C语言常用函数手册

1.分类函数,所在函数库为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是作废字符(0x7F)或普通控制字符(0x00-0x1F) 返回非0值,否则返回0 int isdigit(int ch) 若ch是数字('0'-'9')返回非0值,否则返回0 int isgraph(int ch) 若ch是可打印字符(不含空格)(0x21-0x7E)返回非0值,否则返回0 int islower(int ch) 若ch是小写字母('a'-'z')返回非0值,否则返回0 int isprint(int ch) 若ch是可打印字符(含空格)(0x20-0x7E)返回非0值,否则返回0 int ispunct(int ch) 若ch是标点字符(0x00-0x1F)返回非0值,否则返回0 int isspace(int ch) 若ch是空格(' '),水平制表符('\t'),回车符('\r'), 走纸换行('\f'),垂直制表符('\v'),换行符('\n') 返回非0值,否则返回0 int isupper(int ch) 若ch是大写字母('A'-'Z')返回非0值,否则返回0 int isxdigit(int ch) 若ch是16进制数('0'-'9','A'-'F','a'-'f')返回非0值, 否则返回0 int tolower(int ch) 若ch是大写字母('A'-'Z')返回相应的小写字母('a'-'z') int toupper(int ch) 若ch是小写字母('a'-'z')返回相应的大写字母('A'-'Z') 2.数学函数,所在函数库为math.h、stdlib.h、string.h、float.h int abs(int i) 返回整型参数i的绝对值 double cabs(struct complex znum) 返回复数znum的绝对值 double fabs(double x) 返回双精度参数x的绝对值 long labs(long n) 返回长整型参数n的绝对值 double exp(double x) 返回指数函数ex的值 double frexp(double value,int *eptr) 返回value=x*2n中x的值,n存贮在eptr中double ldexp(double value,int exp); 返回value*2exp的值 double log(double x) 返回logex的值 double log10(double x) 返回log10x的值 double pow(double x,double y) 返回xy的值 double pow10(int p) 返回10p的值 double sqrt(double x) 返回+√x的值 double acos(double x) 返回x的反余弦cos-1(x)值,x为弧度 double asin(double x) 返回x的反正弦sin-1(x)值,x为弧度 double atan(double x) 返回x的反正切tan-1(x)值,x为弧度 double atan2(double y,double x) 返回y/x的反正切tan-1(x)值,y的x为弧度double cos(double x) 返回x的余弦cos(x)值,x为弧度 double sin(double x) 返回x的正弦sin(x)值,x为弧度 double tan(double x) 返回x的正切tan(x)值,x为弧度 double cosh(double x) 返回x的双曲余弦cosh(x)值,x为弧度 double sinh(double x) 返回x的双曲正弦sinh(x)值,x为弧度

C语言入门教程____免费下载

51单片机C语言 相信很多爱好电子的朋友,对单片机这个词应该都不会陌生了吧。不过有些朋友可能只听说他叫单片机,他的全称是什么也许并不太清楚, 更不用说他的英文全称和简称了。单片机是一块在集成电路芯片上集成了一台有一定规模的微型计算机。简称为:单片微型计算机或单片机 (Single Chip Computer)。单片机的应用到处可见,应用领域广泛,主要应用在智能仪表、实时控制、通信、家电等方面。不过这一切都没 什么关系,因为我(当然也包括任何人)都是从不知道转变成知道的,再转变成精通的。现在我只想把我学习单片机的经历,详细地讲叙给大 家听听,可能有些大虾会笑话我,想:那么简单的东西还在这里卖弄。但是你错了,我只是把我个人学习的经历讲述一遍而已,仅仅对那些想 学习单片机,但又找不到好方法或者途径的朋友,提供一个帮助,使他们在学习过程中,尽量少走些弯路而已! 首先,你必须有学习单片机的热情,不是说今天去图书馆看了一个下午关于单片机的书,而明天玩上半天,后天就不知道那个本书在讲什 么东西了。还是先说说我吧,我从大二的第一个学期期末的时候才开始接触单片机,但在这之前,正如上面所说的:我知道有种芯片叫单片机, 但是具体长成什么样子,却一点也不知道!看到这里很多朋友一定会忍不住发笑。嘿嘿,你可千万别笑,有些大四毕业的人也同样不知道单片 机长成什么样子呢!而我对单片机的痴迷更是常人所不能想象的地步,大二的期末考试,我全放弃了复习,每当室友拿着书在埋头复习的时候, 我却捧着自己从图书馆借的单片机书在那看,虽然有很多不懂,但是我还是坚持了下来,当时我就想过,为了单片机值不值得我这样去付出, 或许这也是在一些三流学校的好处吧,考试挂科后,明年开学交上几十元一门的补考费,应该大部分都能过了。于是,我横下一条心,坚持看 我的单片机书和资料。 当你明白了单片机是这么一回事的时候,显而易见的问题出来了:我要选择那种语言为单片机编写程序呢这个问题,困扰了我好久。具 体选择C51还是A51呢汇编在我们大二之前并没有开过课,虽然看着人家的讲解,很容易明白单片机的每一时刻的具体工作情况,但是一合上 书或者资料,自己却什么也不知道了,根本不用说自己写程序了。于是,我最终还是决定学C51,毕竟C51和我们课上讲的C语言,有些类似, 编程的思想可以说是相通的。而且C51还有更大的优点就是编写大程序时的优越性更不言而喻,当然在那时,我并没有想的那么深远,C51的特 点,还是在后来的实践过程中,渐渐体会到的!朋友如果你选择了C51,那么请继续往下看,如果你选择了A51,那么你可以不要看了!因为下面讲 的全是C方面的,完全在浪费你的时间! 呵呵 ^_^ 第二,既然你想学好单片机,你必须得舍得花钱,如果不买些芯片回来自己动手焊焊拆拆的(但是在后期会介绍给大家一个很好用的硬件 仿真软件,并不需要你用实验板和仿真器了,直接在你的PC上完成,但是软件毕竟是软件,从某个特定的意义上来说是并不能代替硬件的),即使 你每天捧着本书,把那本书翻烂,也永远学不会单片机的!刚接触单片机的朋友,看了资料,一定会对以下几个词见的比较多,但是具体的概

C语言相关知识介绍

第1章绪论 一、基础知识题 1.简述下列概念 数据,数据元素,数据类型,数据结构,逻辑结构,存储结构,算法。 【解答】数据是信息的载体,是描述客观事物的数、字符,以及所有能输入到计算机中并被计算机程序识别和处理的符号的集合。数据元素是数据的基本单位。在不同的条件下,数据元素又可称为元素、结点、顶点、记录等。 数据类型是对数据的取值范围、数据元素之间的结构以及允许施加操作的一种总体描述。每一种计算机程序设计语言都定义有自己的数据类型。 “数据结构”这一术语有两种含义,一是作为一门课程的名称;二是作为一个科学的概念。作为科学概念,目前尚无公认定义,一般认为,讨论数据结构要包括三个方面,一是数据的逻辑结构,二是数据的存储结构,三是对数据进行的操作(运算)。而数据类型是值的集合和操作的集合,可以看作是已实现了的数据结构,后者是前者的一种简化情况。 数据的逻辑结构反映数据元素之间的逻辑关系(即数据元素之间的关联方式或“邻接关系”),数据的存储结构是数据结构在计算机中的表示,包括数据元素的表示及其关系的表示。数据的运算是对数据定义的一组操作,运算是定义在逻辑结构上的,和存储结构无关,而运算的实现则依赖于存储结构。 数据结构在计算机中的表示称为物理结构,又称存储结构。是逻辑结构在存储器中的映像,包括数据元素的表示和关系的表示。逻辑结构与计算机无关。 算法是对特定问题求解步骤的一种描述,是指令的有限序列。其中每一条指令表示一个或多个操作。一个算法应该具有下列特性:有穷性、确定性、可行性、输入和输出。

2.数据的逻辑结构分哪几种,为什么说逻辑结构是数据组织的主要方面? 【解答】数据的逻辑结构分为线性结构和非线性结构。(也可以分为集合、线性结构、树形结构和图形即网状结构)。 逻辑结构是数据组织的某种“本质性”的东西: (1)逻辑结构与数据元素本身的形式、内容无关。 (2)逻辑结构与数据元素的相对位置无关。 (3)逻辑结构与所含数据元素的个数无关。 3.试举一个数据结构的例子,叙述其逻辑结构、存储结构、运算三方 面的内容。 【解答】学生成绩表,逻辑结构是线性结构,可以顺序存储(也可以链式存 储),运算可以有插入、删除、查询、等等。 4.简述算法的五个特性,对算法设计的要求。 【解答】算法的五个特性是:有穷性、确定性、可行性、零至多个输入和 一至多个输出。 对算法设计的要求:正确性,易读性,健壮性,和高的时空间效率(运算 速度快,存储空间小)。 5.设n是正整数,求下列程序段中带@记号的语句的执行次数。 (1)i=1;k=0; (2) i=1;j=0; while(i<n) while(i+j<=n) {k=k+50*i; i++; @ {if(i>j)j++; @ } else i++; } @ (3)x=y=0; (4)x=91;y=100; for(i=0;i0) for(j=0;j<n;i++) @ if (x>100) {x++; @ {x=x-10; y--; @ for(k=0;i

C语言中常用的库函数

字符处理函数 本类别函数用于对单个字符进行处理,包括字符的类别测试和字符的大小写转换 头文件ctype.h 函数列表<> 函数类别函数用途详细说明 字符测试是否字母和数字isalnum 是否字母isalpha 是否控制字符iscntrl 是否数字isdigit 是否可显示字符(除空格外)isgraph 是否可显示字符(包括空格)isprint 是否既不是空格,又不是字母和数字的可显示字符ispunct 是否空格isspace 是否大写字母isupper 是否16进制数字(0-9,A-F)字符isxdigit 字符大小写转换函数转换为大写字母toupper 转换为小写字母tolower 地区化 本类别的函数用于处理不同国家的语言差异。 头文件local.h 函数列表 函数类别函数用途详细说明 地区控制地区设置setlocale 数字格式约定查询国家的货币、日期、时间等的格式转换localeconv 数学函数 本分类给出了各种数学计算函数,必须提醒的是ANSI C标准中的数据格式并不符合IEEE754标准,一些C语言编译器却遵循IEEE754(例如frinklin C51) 头文件math.h 函数列表 函数类别函数用途详细说明 错误条件处理定义域错误(函数的输入参数值不在规定的范围内) 值域错误(函数的返回值不在规定的范围内) 三角函数反余弦acos 反正弦asin

反正切atan 反正切2 atan2 余弦cos 正弦sin 正切tan 双曲函数双曲余弦cosh 双曲正弦sinh 双曲正切tanh 指数和对数指数函数exp 指数分解函数frexp 乘积指数函数fdexp 自然对数log 以10为底的对数log10 浮点数分解函数modf 幂函数幂函数pow 平方根函数sqrt 整数截断,绝对值和求余数函数求下限接近整数ceil 绝对值fabs 求上限接近整数floor 求余数fmod 本分类函数用于实现在不同底函数之间直接跳转代码。头文件setjmp.h io.h 函数列表 函数类别函数用途详细说明 保存调用环境setjmp 恢复调用环境longjmp 信号处理 该分类函数用于处理那些在程序执行过程中发生例外的情况。 头文件signal.h 函数列表 函数类别函数用途详细说明 指定信号处理函数signal 发送信号raise 可变参数处理 本类函数用于实现诸如printf,scanf等参数数量可变底函数。

C语言基础教程经典100例

【程序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); } } =========================================================== === 【程序2】

题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高 于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提 成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于 40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于 100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数? 1.程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。 2.程序源代码: main() { long int i; int bonus1,bonus2,bonus4,bonus6,bonus10,bonus; scanf("%ld",&i); bonus1=100000*0.1;bonus2=bonus1+100000*0.75; bonus4=bonus2+200000*0.5; bonus6=bonus4+200000*0.3; bonus10=bonus6+400000*0.15;

C语言基本数据类型简介

C语言基本数据类型简介 1.概述 C 语言包含的数据类型如下图所示: 2.各种数据类型介绍 2.1整型 整形包括短整型、整形和长整形。 2.1.1短整形 short a=1; 2.1.2整形 一般占4个字节(32位),最高位代表符号,0表示正数,1表示负数,取值围是 -2147483648~2147483647,在存中的存储顺序是地位在前、高位在后,例如0x12345678在存中的存储如下: 地址:0x0012ff780x0012ff790x0012ff7a0x0012ff7b 数据:78563412 定义:用int关键字,举例如下: int a=6; 2.1.3长整形 long a=10; 2.2浮点型 浮点型包括单精度型和双精度型。 2.2.1单精度型 浮点型,又称实型,也称单精度。一般占4个字节(32位), float a=4.5; 地址:0x0012ff780x0012ff790x0012ff7a0x0012ff7b 数据:00009040 2.2.2双精度型 一般占8个字节(64位) double a=4.5;

地址:0x0012ff780x0012ff790x0012ff7a0x0012ff7b0x0012ff7c 0x0012ff7d0x0012ff7e0x0012ff7f 数据:0000000000 001240 2.3字符类型 在各种不同系统中,字符类型都占一个字节(8位)。定义如下: char c='a'; 也可以用字符对应的ASCII码赋值,如下: char c=97; 3.数据类型与“模子” short、int、long、char、float、double 这六个关键字代表C 语言里的六种基本数据类型。 怎么去理解它们呢? 举个例子:见过藕煤球的那个东西吧?(没见过?煤球总见过吧)。那个东西叫藕煤器,拿着它在和好的煤堆里这么一咔,一个煤球出来了。半径12cm,12 个孔。不同型号的藕煤器咔出来的煤球大小不一样,孔数也不一样。这个藕煤器其实就是个模子。 现在我们联想一下,short、int、long、char、float、double 这六个东东是不是很像不同类型的藕煤器啊?拿着它们在存上咔咔咔,不同大小的存就分配好了,当然别忘了给它们取个好听的名字。 在32 位的系统上 short 短整型的存2 byte; int 整型的存4 byte; long 长整型的存4 byte; float 单精度浮点型的存4byte;仅能接收7位有效数字 double 双精度浮点型的存8 byte;可以接收16位有效数字 char字符型的存1 byte。 fabs单精度浮点型存4byte. (注意这里指一般情况,可能不同的平台还会有所不同,具体平台可以用sizeof 关键字测试一下) 很简单吧?咔咔咔很爽吧?是很简单,也确实很爽,但问题就是你咔出来这么多存块,你总不能

各种数据结构定义的C语言描述

#include #include //2.2.1顺序表的C语言描述 #define MAXSIZE 100 typedef struct{ int data[MAXSIZE]; int last; }Sequenlist; //2.3.2单链表的C语言描述(注意循环链表) typedef int datatype; typedef struct node{ datatype data; struct node *next; }linklist; linklist *head; //2.3.5双链表的C语言描述 typedef struct dnode{ datatype data; struct dnode *prior,*next; }dlinklist; //3.2.1顺序栈的C语言描述 typedef struct{ datatype data[MAXSIZE]; int top; }seqstack; //3.3链式栈的C语言描述 typedef struct snode{ datatype data; struct snode *next; }linkstack; //4.2.1顺序队列的C语言描述(注意4.2.3循环队列的定义和基本操作) typedef struct{ datatype data[MAXSIZE]; int front; int rear; }seqqueue; //4.3.1链队列的C语言描述 typedef struct qnode{ datatype data; struct qnode *next; }qnode_linklist; typedef struct { qnode_linklist *front ,*rear; }linkqueue; //5.2.1串的顺序存储的C语言定义(注意建立串时候的fflush(stdin);) char sstr[MAXSIZE]; typedef struct{ datatype data[MAXSIZE]; int len; }sstring; //5.2.2链串的类型描述 typedef struct linknode{ char data; struct linknode *next; }linkstring; //5.2.3堆串的描述 typedef struct{ char *ch; int length; }hstring; //7.3.2二叉链表结点的C语言描述 #define MAX_SIZE 100 typedef struct btnode{ datatype data; struct btnode *lchild,*rchild; }btnode; //三叉链表结点的C语言描述 typedef struct btnode_3{ datatype data; struct btonde_3 *lchild,*rchild,*parent; }btnode_3; //线索二叉树的C语言描述 typedef struct bithrnode{ datatype data; struct bithrnode *lchild,*rchild; int ltag,rtag; }bithrnode; //7.7.1树的存储结构1、双亲表示法(顺序存储结构) typedef struct tnode{ datatype data; int parent; }ptnode; typedef struct{ ptnode node[MAX_SIZE]; int num;

C语言常见基本词汇及词汇解释

C语言常用基本词汇及其他提示语运算符与表达式: 1.constant 常量 2. variable 变量 3. identify 标识符 4. keywords 关键字 5. sign 符号 6. operator 运算符 7. statement语句 8. syntax 语法 9. expression 表达式 10. initialition初始化 11. number format 数据格式 12 declaration 说明 13. type conversion 类型转换 14.define 、definition 定义 条件语句: 1.select 选择 2. expression 表达式 3. logical expression 逻辑表达式 4. Relational expression 关系表达式 5.priority优先

6. operation运算 7.structure 结构 循环语句: 1.circle 循环 2. condition 条件 3. variant 变量 4. process过程 5.priority优先 6. operation运算 数组: 1. array 数组 2. reference 引用 3. element 元素 4. address 地址 5. sort 排序 6. character 字符 7. string 字符串 8. application 应用函数: 1.call 调用 2.return value 返回值 3.function 函数

4. declare 声明 5. `parameter 参数 6.static 静态的 7.extern 外部的 指针: 1. pointer 指针 2. argument 参数 3. array 数组 4. declaration 声明 5. represent 表示 6. manipulate 处理 结构体、共用体、链表: 1 structure 结构 2 member成员 3 tag 标记 4 function 函数 5 enumerate 枚举 6 union 联合(共用体) 7 create 创建 8 insert 插入 9 delete 删除 10 modify 修改

C语言常用函数名及用法

字符函数和字符串函数 头文件:字符串函数头文件:#include 字符函数头文件:#include putchar:输出一个 putchar(a):输出字符变量a的值,(其中a可为字符变量,整形变量,字符常量,整形常量) getchar:输入一个字符 a=getchar(); putchar(a);结果为b printf(格式控制符,输出列表); scanf(格式控制符,地址列表); 输入形式与格式控制部分对应 1.当为两个连续输入时:scanf(“%d%d”,&a,&b); 输入量数据之间可为:一个或多个空格,也可以用enter,tab无逗号时输入时不能用逗号作分隔。 2.格式控制中两%d有两个空格,输入时两数据间应有两个空格或两个以上。 3.当为“:”时输入时应对应一样,当为:scanf(“a=%d,b=%d”,&a,&b);输入a=12,b=22。 4.当格式控制符为%c时,输入时空格与转义字符都作为有效字符记录在里面:scanf(“%c%c%c”,&a,&b,&c); 输入时:ab c↙空间不能插空格或其他符

5. Scanf(“%d%c%f”,&a,&b,&c); 输入时1234a123h26↙在输入遇到时空格回车 tab或其他非法输入就会认定输入完毕 Gets (字符数组):读入字符串函数 Gets(str)从键盘键入a b↙括号里为字符数组str的起始地址,Puts(字符数组):输出字符串函数 Strcat(字符数组1,字符数组2):字符串连接函数(2连接在1后面) Strcpy和strncpy:字符串复制函数 Strcpy(字符数组1,字符数组2):将2复制到1 数组1 要为数组名,字符串2可以为数组名或者字符串 Strncpy(str1,str2,2):将str2的前两个字符复制到str1,取代str1的前两个字符 Strcmp:字符串比较函数 Strcmp(str1,str2):相等则为0(对字符串自左向右逐个字母进行比较) Strlen(字符数组):测字符串的实际长度 Strlwr(字符串)将字符串转换为大写 Strupr(字符串)将字符串转换为小写

C语言入门基础教案

C语言基础教案 教学目标: 一认知目标:了解C语言的特点和C语言的开发步骤 二能力目标:初步了解C程序的组成结构和主函数的作用; 掌握五种基本算术运算符的使用:+、—、*、/、%,了解优先级与结合性;三情意目标:学习C语言基础上能使用Microsoft Visual C++6.0 进行基本的C程序开发 教学要求: 识记:计算机程序设计语言的一些必备知识与理论 理解:理解C程序的组成结构和主函数的作用; 理解C语言等高级程序设计语言的开发过程 理解C语言中各种运算的运算规则,由运算符和相关数据组成表达式的方法; 运用:能使用printf()函数进行信息的输出; 能编写简单程序 教学重点: 1)计算机程序设计语言的理论知识,语言的分类和特点以及开发过程等; 2)C语言的简介,结构特征和特点等; 3)如何使用Microsoft Visual C++ 6.0进行C语言程序开发; 4)C语言源程序的结构介绍及基本语法的简介; 5)C语言源程序的书写要求; 6)C语言基础:函数的组成、标识符及其命名、变量的声明、变量的赋值、各种算数运算符的使用及优先级与结合性等。 教学难点: 如何让学生理解C语言的结构及语法基础还有源程序的书写要求,掌握对函数的组成、标识符及其命名、变量的声明、变量的赋值、各种算数运算符的使用及优先级与结合性等 授课方法:讲授法与演示法相结合

计算机程序设计语言基础 一新课导入 大家都听过程序员没?或者是网络上俗称调侃的码农?对,简单讲就是编写计算机代码的工作。在新世纪大家对与计算机相关的软件和产品都不陌生,每个人都使用过计算机软件如微信,QQ等等,那这些软件又是怎么开发出来的呢?简单来讲它们是怎么产生的呢?对,它们都是使用计算机程序编写出来的。今天我们就来学习了解下计算机程序设计语言。 二新课讲授 1计算机程序设计语言介绍及分类 程序概念:程序是由一系列指令组成的,为解决某一具体问题而设计的一系列排列有序的指令的集合。 程序设计语言分为三类:机器语言、汇编语言、高级语言。 ●机器语言:一台计算机中所有指令集合称为该计算机的指令系统,这些指令就是机器语 言,它是一种二进制语言。 优点:面向机器、程序简洁、运行速度快; 缺点:不直观、难懂、难记、难写、难以修改和维护 ●汇编语言:使用符号(助记符)来代替机器语言中的二进制代码 优点:质量高、执行速度快、占用内存少 缺点:面向机器,与机器语言基本上一一对应,具有机器语言的缺点 ●高级语言:接近自然语言,使用英语单词表达语句,便于理解、记忆和掌握 优点:通用性强,便于理解、记忆和掌握 缺点:不能直接运行源程序,运行速度相对慢 2高级程序设计语言的开发过程 ?分析问题、建立模型 ?表现模型 ?源程序的编写 ?程序的编译与连接 ?程序的测试与调试 3 C语言的特点 ①既有高级语言的程序思想与设计方法,又有低级语言的操作能力; ②结构化体系 ③可以直接访问内存的物理地址,丰富的运算符和数据类型 ④可移植性强 ⑤代码效率高 4 使用Microsoft Visual C++ 6.0开发C语言程序 (1)启动Microsoft Visual C++ 6.0

C语言常用的库函数

库函数并不是C语言的一部分,它是由编译系统根据一般用户的需要编制并 提供给用户使用的一组程序。每一种C编译系统都提供了一批库函数,不同的 编译系统所提供的库函数的数目和函数名以及函数功能是不完全相同的。ANSI C标准提出了一批建议提供的标准库函数。它包括了目前多数C编译系统所提供 的库函数,但也有一些是某些C编译系统未曾实现的。考虑到通用性,本附录 列出ANSI C建议的常用库函数。 由于C库函数的种类和数目很多,例如还有屏幕和图形函数、时间日期函数、 与系统有关的函数等,每一类函数又包括各种功能的函数,限于篇幅,本附录不 能全部介绍,只从教学需要的角度列出最基本的。读者在编写C程序时可根据 需要,查阅有关系统的函数使用手册。 1.数学函数 使用数学函数时,应该在源文件中使用预编译命令: #include或#include "math.h" 函数名函数原型功能返回值 acos double acos(double x);计算arccos x的值,其中-1<=x<=1计算结果 asin double asin(double x);计算arcsin x的值,其中-1<=x<=1计算结果 atan double atan(double x);计算arctan x的值计算结果 atan2double atan2(double x, double y);计算arctan x/y的值计算结果 cos double cos(double x);计算cos x的值,其中x的单位为弧度计算结果 cosh double cosh(double x);计算x的双曲余弦cosh x的值计算结果 exp double exp(double x);求e x的值计算结果

相关文档
相关文档 最新文档