说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

函数(上)-C语言教程

HTML文档下载 WORD文档下载 PDF文档下载
函数是C源程序的基本模块,通过对函数模块的调用实现特定的功能。C语言中的函数相当于其它高级语言的子程序。C语言不仅提供了极为丰富的库函数(如Turbo C,MS C都提供了三百多个库函数),还允许用户建立自己定义的函数。用户可把自己的算法编成一个个相对独立的函数模块,然后用调用的方法来使用函数。

 

8.1 概述

在前面已经介绍过,C源程序是由函数组成的。虽然在前面各章的程序中大都只有一个主函数main(),但实用程序往往由多个函数组成。函数是C源程序的基本模块,通过对函数模块的调用实现特定的功能。C语言中的函数相当于其它高级语言的子程序。C语言不仅提供了极为丰富的库函数(如Turbo C,MS C都提供了三百多个库函数),还允许用户建立自己定义的函数。用户可把自己的算法编成一个个相对独立的函数模块,然后用调用的方法来使用函数。可以说C程序的全部工作都是由各式各样的函数完成的,所以也把C语言称为函数式语言。

由于采用了函数模块式的结构,C语言易于实现结构化程序设计。使程序的层次结构清晰,便于程序的编写、阅读、调试。

在C语言中可从不同的角度对函数分类。

1. 从函数定义的角度看,函数可分为库函数和用户定义函数两种。

1) 库函数:由C系统提供,用户无须定义,也不必在程序中作类型说明,只需在程序前包含有该函数原型的头文件即可在程序中直接调用。在前面各章的例题中反复用到printf、scanf、getchar、putchar、gets、puts、strcat等函数均属此类。

2) 用户定义函数:由用户按需要写的函数。对于用户自定义函数,不仅要在程序中定义函数本身,而且在主调函数模块中还必须对该被调函数进行类型说明,然后才能使用。

2. C语言的函数兼有其它语言中的函数和过程两种功能,从这个角度看,又可把函数分为有返回值函数和无返回值函数两种。

1) 有返回值函数:此类函数被调用执行完后将向调用者返回一个执行结果,称为函数返回值。如数学函数即属于此类函数。由用户定义的这种要返回函数值的函数,必须在函数定义和函数说明中明确返回值的类型。

2) 无返回值函数:此类函数用于完成某项特定的处理任务,执行完成后不向调用者返回函数值。这类函数类似于其它语言的过程。由于函数无须返回值,用户在定义此类函数时可指定它的返回为“空类型”, 空类型的说明符为“void”。

3. 从主调函数和被调函数之间数据传送的角度看又可分为无参函数和有参函数两种。

1) 无参函数:函数定义、函数说明及函数调用中均不带参数。主调函数和被调函数之间不进行参数传送。此类函数通常用来完成一组指定的功能,可以返回或不返回函数值。

2) 有参函数:也称为带参函数。在函数定义及函数说明时都有参数,称为形式参数(简称为形参)。在函数调用时也必须给出参数,称为实际参数(简称为实参)。进行函数调用时,主调函数将把实参的值传送给形参,供被调函数使用。

4. C语言提供了极为丰富的库函数,这些库函数又可从功能角度作以下分类。

1) 字符类型分类函数:用于对字符按ASCII码分类:字母,数字,控制字符,分隔符,大小写字母等。

2) 转换函数:用于字符或字符串的转换;在字符量和各类数字量(整型,实型等)之间进行转换;在大、小写之间进行转换。

3) 目录路径函数:用于文件目录和路径操作。

4) 诊断函数:用于内部错误检测。

5) 图形函数:用于屏幕管理和各种图形功能。

6) 输入输出函数:用于完成输入输出功能。

7) 接口函数:用于与DOS,BIOS和硬件的接口。

8) 字符串函数:用于字符串操作和处理。

9) 内存管理函数:用于内存管理。

10) 数学函数:用于数学函数计算。

11) 日期和时间函数:用于日期,时间转换操作。

12) 进程控制函数:用于进程管理和控制。

13) 其它函数:用于其它各种功能。

    以上各类函数不仅数量多,而且有的还需要硬件知识才会使用,因此要想全部掌握则需要一个较长的学习过程。应首先掌握一些最基本、最常用的函数,再逐步深入。由于课时关系,我们只介绍了很少一部分库函数,其余部分读者可根据需要查阅有关手册。

还应该指出的是,在C语言中,所有的函数定义,包括主函数main在内,都是平行的。也就是说,在一个函数的函数体内,不能再定义另一个函数,即不能嵌套定义。但是函数之间允许相互调用,也允许嵌套调用。习惯上把调用者称为主调函数。函数还可以自己调用自己,称为递归调用。

main 函数是主函数,它可以调用其它函数,而不允许被其它函数调用。因此,C程序的执行总是从main函数开始,完成对其它函数的调用后再返回到main函数,最后由main函数结束整个程序。一个C源程序必须有,也只能有一个主函数main。

8.2 函数定义的一般形式

1. 无参函数的定义形式

   类型标识符 函数名()

       {声明部分

      语句

   }

其中类型标识符和函数名称为函数头。类型标识符指明了本函数的类型,函数的类型实际上是函数返回值的类型。 该类型标识符与前面介绍的各种说明符相同。函数名是由用户定义的标识符,函数名后有一个空括号,其中无参数,但括号不可少。

{}中的内容称为函数体。在函数体中声明部分,是对函数体内部所用到的变量的类型说明。

    在很多情况下都不要求无参函数有返回值,此时函数类型符可以写为void。

我们可以改写一个函数定义:

void Hello()

{

       printf ("Hello,world \n");

}

这里,只把main改为Hello作为函数名,其余不变。Hello函数是一个无参函数,当被其它函数调用时,输出Hello world字符串。

2. 有参函数定义的一般形式

   类型标识符 函数名(形式参数表列)

       {声明部分

      语句

   }

有参函数比无参函数多了一个内容,即形式参数表列。在形参表中给出的参数称为形式参数,它们可以是各种类型的变量,各参数之间用逗号间隔。在进行函数调用时,主调函数将赋予这些形式参数实际的值。形参既然是变量,必须在形参表中给出形参的类型说明。

例如,定义一个函数,用于求两个数中的大数,可写为:

int max(int a, int b)

{

      if (a>b) return a;

      else return b;

}

第一行说明max函数是一个整型函数,其返回的函数值是一个整数。形参为a,b,均为整型量。a,b的具体值是由主调函数在调用时传送过来的。在{}中的函数体内,除形参外没有使用其它变量,因此只有语句而没有声明部分。在max函数体中的return语句是把a(或b)的值作为函数的值返回给主调函数。有返回值函数中至少应有一个return语句。

 在C程序中,一个函数的定义可以放在任意位置,既可放在主函数main之前,也可放在main之后。

例如:

可把max 函数置在main之后,也可以把它放在main之前。修改后的程序如下所示。

【例8.1】

 

int max(int a,int b){    if(a>b)return a;    else return b;}main(){    int max(int a,int b);    int x,y,z;    printf("input two numbers:\n");    scanf("%d%d",&x,&y);    z=max(x,y);    printf("maxmum=%d",z);}

    现在我们可以从函数定义、函数说明及函数调用的角度来分析整个程序,从中进一步了解函数的各种特点。

程序的第1行至第5行为max函数定义。进入主函数后,因为准备调用max函数,故先对max函数进行说明(程序第8行)。函数定义和函数说明并不是一回事,在后面还要专门讨论。 可以看出函数说明与函数定义中的函数头部分相同,但是末尾要加分号。程序第12 行为调用max函数,并把x, y中的值传送给max的形参a, b。max函数执行的结果(a或b)将返回给变量z。最后由主函数输出z的值。

 

8.3 函数的参数和函数的值

 

8.3.1 形式参数和实际参数

    前面已经介绍过,函数的参数分为形参和实参两种。在本小节中,进一步介绍形参、实参的特点和两者的关系。形参出现在函数定义中,在整个函数体内都可以使用,离开该函数则不能使用。实参出现在主调函数中,进入被调函数后,实参变量也不能使用。形参和实参的功能是作数据传送。发生函数调用时,主调函数把实参的值传送给被调函数的形参从而实现主调函数向被调函数的数据传送。

函数的形参和实参具有以下特点:

1. 形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只有在函数内部有效。函数调用结束返回主调函数后则不能再使用该形参变量。

2. 实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值,以便把这些值传送给形参。因此应预先用赋值,输入等办法使实参获得确定值。

3. 实参和形参在数量上,类型上,顺序上应严格一致,否则会发生类型不匹配”的错误。

4. 函数调用中发生的数据传送是单向的。即只能把实参的值传送给形参,而不能把形参的值反向地传送给实参。 因此在函数调用过程中,形参的值发生改变,而实参中的值不会变化。

【例8.2】可以说明这个问题。

 

main(){    int n;    printf("input number\n");    scanf("%d",&n);    s(n);    printf("n=%d\n",n);}int s(int n){    int i;    for(i=n-1;i>=1;i--)      n=n+i;    printf("n=%d\n",n);}

    本程序中定义了一个函数s,该函数的功能是求∑ni的值。在主函数中输入n值,并作为实参,在调用时传送给s 函数的形参量n( 注意,本例的形参变量和实参变量的标识符都为n,但这是两个不同的量,各自的作用域不同)。在主函数中用printf 语句输出一次n值,这个n值是实参n的值。在函数s中也用printf 语句输出了一次n值,这个n值是形参最后取得的n值0。从运行情况看,输入n值为100。即实参n的值为100。把此值传给函数s时,形参n的初值也为100,在执行函数过程中,形参n的值变为5050。返回主函数之后,输出实参n的值仍为100。可见实参的值不随形参的变化而变化。

 

8.3.2 函数的返回值

    函数的值是指函数被调用之后,执行函数体中的程序段所取得的并返回给主调函数的值。如调用正弦函数取得正弦值,调用例8.1的max函数取得的最大数等。对函数的值(或称函数返回值)有以下一些说明:

1) 函数的值只能通过return语句返回主调函数。

return  语句的一般形式为:

return 表达式;

或者为:

return (表达式);

该语句的功能是计算表达式的值,并返回给主调函数。在函数中允许有多个return语句,但每次调用只能有一个return 语句被执行,因此只能返回一个函数值。

2) 函数值的类型和函数定义中函数的类型应保持一致。如果两者不一致,则以函数类型为准,自动进行类型转换。

3) 如函数值为整型,在函数定义时可以省去类型说明。

4) 不返回函数值的函数,可以明确定义为“空类型”,类型说明符为“void”。如例8.2中函数s并不向主函数返函数值,因此可定义为:

    void s(int n)

    { ……

     }

一旦函数被定义为空类型后,就不能在主调函数中使用被调函数的函数值了。例如,在定义s为空类型后,在主函数中写下述语句

    sum=s(n);

就是错误的。

为了使程序有良好的可读性并减少出错, 凡不要求返回值的函数都应定义为空类型。

 

8.4 函数的调用

 

8.4.1 函数调用的一般形式

前面已经说过,在程序中是通过对函数的调用来执行函数体的,其过程与其它语言的子程序调用相似。

C语言中,函数调用的一般形式为:

    函数名(实际参数表)

对无参函数调用时则无实际参数表。实际参数表中的参数可以是常数,变量或其它构造类型数据及表达式。各实参之间用逗号分隔。

8.4.2 函数调用的方式

在C语言中,可以用以下几种方式调用函数:

1. 函数表达式:函数作为表达式中的一项出现在表达式中,以函数返回值参与表达式的运算。这种方式要求函数是有返回值的。例如:z=max(x,y)是一个赋值表达式,把max的返回值赋予变量z。

2. 函数语句:函数调用的一般形式加上分号即构成函数语句。例如:    printf ("%d",a);scanf ("%d",&b);都是以函数语句的方式调用函数。

3. 函数实参:函数作为另一个函数调用的实际参数出现。这种情况是把该函数的返回值作为实参进行传送,因此要求该函数必须是有返回值的。例如:    printf("%d",max(x,y));    即是把max调用的返回值又作为printf函数的实参来使用的。在函数调用中还应该注意的一个问题是求值顺序的问题。所谓求值顺序是指对实参表中各量是自左至右使用呢,还是自右至左使用。对此,各系统的规定不一定相同。介绍printf 函数时已提到过,这里从函数调用的角度再强调一下。

【例8.3】

 

main(){    int i=8;    printf("%d\n%d\n%d\n%d\n",++i,--i,i++,i--);}

如按照从右至左的顺序求值。运行结果应为:

    8

    7

    7

    8

如对printf语句中的++i,--i,i++,i--从左至右求值,结果应为:

    9

    8

    8

    9

应特别注意的是,无论是从左至右求值, 还是自右至左求值,其输出顺序都是不变的, 即输出顺序总是和实参表中实参的顺序相同。由于Turbo C现定是自右至左求值,所以结果为8,7,7,8。上述问题如还不理解,上机一试就明白了。

 

8.4.3 被调用函数的声明和函数原型

 

在主调函数中调用某函数之前应对该被调函数进行说明(声明),这与使用变量之前要先进行变量说明是一样的。在主调函数中对被调函数作说明的目的是使编译系统知道被调函数返回值的类型,以便在主调函数中按此种类型对返回值作相应的处理。

其一般形式为:

        类型说明符 被调函数名(类型 形参,类型 形参…);  

或为:

        类型说明符 被调函数名(类型,类型…);  

括号内给出了形参的类型和形参名,或只给出形参类型。这便于编译系统进行检错,以防止可能出现的错误。

例8.1 main函数中对max函数的说明为:

int max(int a,int b);

或写为:

        int max(int,int);

C语言中又规定在以下几种情况时可以省去主调函数中对被调函数的函数说明。

1) 如果被调函数的返回值是整型或字符型时,可以不对被调函数作说明,而直接调用。这时系统将自动对被调函数返回值按整型处理。例8.2的主函数中未对函数s作说明而直接调用即属此种情形。

2) 当被调函数的函数定义出现在主调函数之前时,在主调函数中也可以不对被调函数再作说明而直接调用。例如例8.1中,函数max的定义放在main 函数之前,因此可在main函数中省去对max函数的函数说明int max(int a,int b)。

3) 如在所有函数定义之前,在函数外预先说明了各个函数的类型,则在以后的各主调函数中,可不再对被调函数作说明。例如:

    char str(int a);

    float f(float b);

    main()

    {

     ……

    }

    char str(int a)

    {

     ……

    }

    float f(float b)

    {

     ……

    }

其中第一,二行对str函数和f函数预先作了说明。因此在以后各函数中无须对str和f函数再作说明就可直接调用。

4) 对库函数的调用不需要再作说明,但必须把该函数的头文件用include命令包含在源文件前部。

 

8.5 函数的嵌套调用

 

C语言中不允许作嵌套的函数定义。因此各函数之间是平行的,不存在上一级函数和下一级函数的问题。但是C语言允许在一个函数的定义中出现对另一个函数的调用。这样就出现了函数的嵌套调用。即在被调函数中又调用其它函数。这与其它语言的子程序嵌套的情形是类似的。其关系可表示如图。

图表示了两层嵌套的情形。其执行过程是:执行main函数中调用a函数的语句时,即转去执行a函数,在a函数中调用b 函数时,又转去执行b函数,b函数执行完毕返回a函数的断点继续执行,a函数执行完毕返回main函数的断点继续执行。

 

【例8.4】计算s=22!+32!

本题可编写两个函数,一个是用来计算平方值的函数f1,另一个是用来计算阶乘值的函数f2。主函数先调f1计算出平方值,再在f1中以平方值为实参,调用 f2计算其阶乘值,然后返回f1,再返回主函数,在循环程序中计算累加和。

 

long f1(int p){    int k;    long r;    long f2(int);    k=p*p;    r=f2(k);    return r;}long f2(int q){    long c=1;    int i;    for(i=1;i<=q;i++)      c=c*i;    return c;}main(){    int i;    long s=0;    for (i=2;i<=3;i++)      s=s+f1(i);    printf("\ns=%ld\n",s);}

在程序中,函数f1和f2均为长整型,都在主函数之前定义,故不必再在主函数中对f1和f2加以说明。在主程序中,执行循环程序依次把i值作为实参调用函数f1求i2值。在f1中又发生对函数f2的调用,这时是把i2的值作为实参去调f2,在f2 中完成求i2!的计算。f2执行完毕把C值(即i2!)返回给f1,再由f1返回主函数实现累加。至此,由函数的嵌套调用实现了题目的要求。由于数值很大,所以函数和一些变量的类型都说明为长整型,否则会造成计算错误。

 

8.6 函数的递归调用

 

一个函数在它的函数体内调用它自身称为递归调用。这种函数称为递归函数。C语言允许函数的递归调用。在递归调用中,主调函数又是被调函数。执行递归函数将反复调用其自身,每调用一次就进入新的一层。

例如有函数f如下:

    int f(int x)

    {

      int y;

      z=f(y);

      return z;

}

这个函数是一个递归函数。但是运行该函数将无休止地调用其自身,这当然是不正确的。为了防止递归调用无终止地进行,必须在函数内有终止递归调用的手段。常用的办法是加条件判断,满足某种条件后就不再作递归调用,然后逐层返回。下面举例说明递归调用的执行过程。

【例8.5】用递归法计算n!

用递归法计算n!可用下述公式表示:

    n!=1         (n=0,1)

    n×(n-1)!    (n>1)

按公式可编程如下:

 

long ff(int n){    long f;    if(n<0) printf("n<0,input error");    else if(n==0||n==1) f=1;    else f=ff(n-1)*n;    return(f);}main(){    int n;    long y;    printf("\ninput a inteager number:\n");    scanf("%d",&n);    y=ff(n);    printf("%d!=%ld",n,y);}

程序中给出的函数ff是一个递归函数。主函数调用ff 后即进入函数ff执行,如果n<0,n==0或n=1时都将结束函数的执行,否则就递归调用ff函数自身。由于每次递归调用的实参为n-1,即把n-1的值赋予形参n,最后当n-1的值为1时再作递归调用,形参n的值也为1,将使递归终止。然后可逐层退回。

下面我们再举例说明该过程。设执行本程序时输入为5,即求5!。在主函数中的调用语句即为y=ff(5),进入ff函数后,由于n=5,不等于0或1,故应执行f=ff(n-1)*n,即f=ff(5-1)*5。该语句对ff作递归调用即ff(4)。

进行四次递归调用后,ff函数形参取得的值变为1,故不再继续递归调用而开始逐层返回主调函数。ff(1)的函数返回值为1,ff(2)的返回值为1*2=2,ff(3)的返回值为2*3=6,ff(4)的返回值为6*4=24,最后返回值ff(5)为24*5=120。

例8.5也可以不用递归的方法来完成。如可以用递推法,即从1开始乘以2,再乘以3…直到n。递推法比递归法更容易理解和实现。但是有些问题则只能用递归算法才能实现。典型的问题是Hanoi塔问题。

【例8.6】Hanoi塔问题

    一块板上有三根针,A,B,C。A针上套有64个大小不等的圆盘,大的在下,小的在上。如图5.4所示。要把这64个圆盘从A针移动C针上,每次只能移动一个圆盘,移动可以借助B针进行。但在任何时候,任何针上的圆盘都必须保持大盘在下,小盘在上。求移动的步骤。

本题算法分析如下,设A上有n个盘子。

如果n=1,则将圆盘从A直接移动到C。

如果n=2,则:

1.将A上的n-1(等于1)个圆盘移到B上;

2.再将A上的一个圆盘移到C上;

3.最后将B上的n-1(等于1)个圆盘移到C上。

  如果n=3,则:

A. 将A上的n-1(等于2,令其为n`)个圆盘移到B(借助于C),步骤如下:

(1)将A上的n`-1(等于1)个圆盘移到C上。

(2)将A上的一个圆盘移到B。

(3)将C上的n`-1(等于1)个圆盘移到B。

B. 将A上的一个圆盘移到C。

C. 将B上的n-1(等于2,令其为n`)个圆盘移到C(借助A),步骤如下:

(1)将B上的n`-1(等于1)个圆盘移到A。

(2)将B上的一个盘子移到C。

(3)将A上的n`-1(等于1)个圆盘移到C。

   到此,完成了三个圆盘的移动过程。

    从上面分析可以看出,当n大于等于2时,移动的过程可分解为三个步骤:

第一步  把A上的n-1个圆盘移到B上;

第二步  把A上的一个圆盘移到C上;

第三步  把B上的n-1个圆盘移到C上;其中第一步和第三步是类同的。

当n=3时,第一步和第三步又分解为类同的三步,即把n`-1个圆盘从一个针移到另一个针上,这里的n`=n-1。 显然这是一个递归过程,据此算法可编程如下:

 

move(int n,int x,int y,int z){    if(n==1)      printf("%c-->%c\n",x,z);    else    {      move(n-1,x,z,y);      printf("%c-->%c\n",x,z);      move(n-1,y,x,z);    }}main(){    int h;    printf("\ninput number:\n");    scanf("%d",&h);    printf("the step to moving %2d diskes:\n",h);    move(h,'a','b','c');}

    从程序中可以看出,move函数是一个递归函数,它有四个形参n,x,y,z。n表示圆盘数,x,y,z分别表示三根针。move 函数的功能是把x上的n个圆盘移动到z上。当n==1时,直接把x上的圆盘移至z上,输出x→z。如n!=1则分为三步:递归调用move函数,把n-1个圆盘从x移到y;输出x→z;递归调用move函数,把n-1个圆盘从y移到z。在递归调用过程中n=n-1,故n的值逐次递减,最后n=1时,终止递归,逐层返回。当n=4 时程序运行的结果为:

    input number:

    4

    the step to moving 4 diskes:

    a→b

    a→c

    b→c

    a→b

    c→a

    c→b

    a→b

    a→c

    b→c

    b→a

    c→a

    b→c

    a→b

    a→c

    b→c

 

量产谈判正在进行时:谷歌手表或比Google Glass先上市 Mozilla发布新版Firefox 25 提供支持Web Audio API UC产品总裁何小鹏:轻应用,做什么?怎么做? 高德携手阿里云发布“LBS云”,账户打通只是第一步 最后2天!2013移动开发者大会5折抢票倒计时 大数据如何改变在线广告业? 摩托罗拉推开源硬件平台计划Project Ara 七个垂手可得的敏捷开发工具 微信新版公众平台调整细节381处 300/次认证费引争议 libgit2:纯C语言实现的Git开发包 MongoDB的得与失 开箱即用!Android四款系统架构工具 谁说Kinect只是玩物?微软研究院使用它实现口语手语实时翻译 新浪微博推出粉丝服务平台 引发两微PK大战 MDCC2013移动开发者大会最新日程发布 门票优惠最后1天 英特尔CEO:EUV光刻技术或助力芯片突破摩尔定律 从微软大数据日看到的,银行、交通、医疗实践之路 IDC:iPad市场份额遭Android平板蚕食 滑至29.6% [TUP第30期]直击移动应用开发难点 探讨跨平台最佳解决方案 用动态语言编写程序,命名更重要 命中率80%,磁盘I/O减半,Flashcache的发展史 这次它很低调:谷歌正式发布Android4.4和Nexus 5 iPhone 5S来了,iPhone 6还会远吗?概念机来袭 [开源推荐]PhysicsJS:基于JavaScript的强大的物理引擎 望虚窥实!专访Oculus Rift创始人Palmer Luckey 利益至上,开源也不免于此 开发者必备,超实用的PHP代码片段! 福利来了!AngularJS资源大集锦 移动周报:“360儿童卫士”手环的是与非 Ion Stoica和他的数据故事(上) 开发者必备:测试网站速度的五个免费在线工具 SQL Server中有类似getrow()的函数吗? whhif(Phenix) ,大虾请进!决不食言,食言了我就不是人,help 急求关于~~~~~英语教学法的论文~~~~~~~~,有知道的请告诉我,500分酬谢! 有个问题请教一下! 题 目: web电子工作流因IIS服务未加载网络安全包而导致iis服务经常自动异常停止 如何在不修改jsp原程序 解决在从tomcat3.2升级到tomcat4.18的中文乱码问题???? 怎么用指定的用户启动某一个程序? vb+sql server的简单问题,但我是搞DELPHI的,VB不懂,大哥们,帮忙,绝对给分~~~ 请问在linux下怎么进行宽带拨号? Outlook Express无法接收/发送任何邮箱的信件了!Win2K Server能否只重新安装组件服务? 谁能将以下函数转化为PB所调用的动态连接库 要编译程序,但是没有gcc和cc,我该怎么办? 一个常见的编译错误 怎么样提高两台计算机的访问速度!!!!! 大虾们,介绍几个做读书笔记的好工具呀? 一个关于线程的问题 请教高手如何去除excel2000里的链接 救命啊!怎样动态创建菜单 读写文件的问题,绝对给分~~~ 对于参数为函数指针的API,C#如何调用? 为什么在设计阶段使用ACTIVEX控件,总是导致PB异常结束 如何拖动窗体??我知道各位老大都会 大家给解释一下 SUN ONE 啊,不知道是何产物? 谢 ※※※※※求Flash封面,有意者请进※※※※※ 求救:高分 急 用代理服务器,可以上网,却不能上qq~~怎么办? 用ole控件打开一个WORD文档后,如何保存? BCB 6.0 装不了我以前在 5。0 下面装的一个控件 怎么回事? 来者有分!!!!存贮过程中创建视图的问题 在线等待!急,tomcat中文问题 急急急急急急!!!delephi 能调用.class文件吗??也就是使用java的接口!如何作??? 请各位大侠尽快指点! 怎么让StringGrid的行数随数据的多少改变? 一个关于线程的问题 怎么拖动无标题栏窗体? 使用FTP碰到的问题 windows下的网络编程的c库函数有什么?怎么用? 为什么我的机器加入域的时候会出现“提供的凭据与已存在的凭据集冲突”的错误? 一个简单但很迷惑地问题!请指教! 分发高手睇过来 请求帮助 [转帖·放分]恶毒女人的情书 如果自己创建一个类,在这个类中想调用当前CXXVIEW类中的函数该如何办? P:Pointer? 数据库连接问题? 如何在菜单中显示图片?谢谢! 在线等待!急,tomcat中文问题 工作很非常特别烦心,散分 如何监控网络中的打印 请问在COMCAT中如何更改根目录的路径 java 中的double类型,在Oracle数据库中应该对应的是什么类型? 值日班长演讲稿就是一个轮换的班长,每人一天,都有机会的那种,不是竞选,稿子要积极一点,最好是鼓励奋斗或是《不甘平行》,战胜自己,成功的秘诀.类似的积极向上的~好的加分~值日班长~只 托福上海哪个考点最松?同上!上海中学考场怎么样? 我要办英语手抄报《我爱大自然》,1:内容全是英语.2:要有汉语 Mathematica 8.0中文版,装的是8.0中文版,但帮助文档是英文的.另外,为什么没有关于TIcks的帮助呢? 一个工程,甲独做8小时完成,乙独做12小时完成,1.若甲乙合作,多少小时完成.数学题 令我感动一件事作文100字以下210字左右 谁知道 成字 英语怎么写 求mathematica 8.0.1 简体中文版,邮箱cctv_luoman@126.com 写一篇英语作文用信的方式告诉李雷你在学校的一些情况告诉李雷自己在学校里一些情况 英语翻译专业课程:机械类:工程图学AutoCAD 工程材料 理论力学 材料力学 Inventor 机械原理 电工电子技术 机械精度设计 机械设计 控制工程基础 机电传动控制 机械制造技术基础 液压与气压 国民教育系列是 什么意思? 《母亲的记忆》阅读答案,问题在补充里第二天清早,母亲告诉她,小尼姑就把蝈蝈送给我了.可以看出母亲哪两方面的特点?学习本文的写法,写个片段,表现你母亲某一方面的性格特点. 甲乙两人在加工同一批零件,甲3小时加工了总量的2/9,乙2小时加工了总量的12%他们两人谁加工的快? 不属于国民教育的意思是什么 作文: maple syrup是什么.求它的一些相关知识. 国民教育序列是指什么? 母亲的记忆孙犁阅读答案(1)文中哪些情节可以体现出母亲对我的关爱?(2)谈谈你对文章中“养兵千日,用兵一时”这句话的理解.(3)文章表现出母亲对我的爱,那么,我对母亲的感情在文 maple syrup怎么买? 英语翻译the headmaster likes to arrive early at school to ( ) ( ) ( ). 两名教师带若干名学生去旅游,联系甲和乙两个旅行社.甲公司给于优惠两名教师按行业规定统一价钱全价,其余按7.5折收费;乙公司给于优惠全部按8折收费,经核算甲公司优惠比乙公司优惠价 maple syrup是什么 初二作文(600字左右)题目:《朝花夕拾》读后感 清新的回忆的阅读答案 《最后四跟棒冰》的阅读题1.小男孩的四艮棒冰都卖掉了,为什么眼眶还盈满了泪水?2.你想对那个车夫说什么? 燕山月似钩的前一句是什么 甲、乙两人同时从两地骑自行车相向而行,甲每时行20千米,乙每时行18千米,两人相遇时距中点4千米.全路程是多少千米? 有一批零件,甲乙分别加工,甲单独加工比乙单独加工少用3小时,甲每小时加工12个,乙每小时加工10个,这批 为什么设立全民健身日 一本科普书原来每页排576个字,排125页,再版时,字号改小了,每页比原来多排126个字实际排了多少页? 描写春天校园的作文,100字左右,1分钟多就可以读完的. 读后感(800字)初二作文从《西游记》《水浒传》《童年》《朝花夕拾》《名人传》中任选两部写读后感两篇一定要初二水平800字的只写两篇而已,任选两部,只写两篇,但一定要初二水平8 《清新的回忆》阅读答案“不时看见通勤或者长途的火车优雅地驶过高低起伏的原野”一句中“优雅”一词给你怎样的阅读感受,请用自己的语言加以简要描述. mathematica中 0.或 1.或 0.i 纸有哪些特性 回忆 父亲的朋友送给我们两缸莲花,一缸是红的,一缸是白的,都摆在院子里.八年之久,我没有在院子里看莲花了——但故乡的园院里,却有许多;不但有并蒂的,还有三蒂的,四蒂的,都是红莲.九 MATHEMATICA 8.0 求翻译 英语翻译 诚信的记忆阅读答案 mathematica 怎么定义1/0为infinity 王大爷家养了48只鸡其中母鸡是公鸡的两倍王大爷养了多少只母鸡 争着向前,惟恐落在后面换成成语 2009年度国家科学技术奖获得者 第十五个全国中小学安全教育日主题 食草动物聪明些还是食肉动物聪明些?人只吃素会缺乏营养吗? 世界上享有很高的声誉 猜一个成语 据古巴《起义青年报》9月29日报道了一件关于母爱的事 Mathematica Math ID:5105-66032-63387,求activation key和password 爆竹的记忆 为何吃素的动物不攻击人类,吃肉的动物则会攻击人类?无. 作文:假如我是值日班长 要求:450字 直接来章作文、、、 能大能小是条龙的意思是不是说,先当孙子、再当爷爷啊? 当了值日班长应该怎样做的演讲稿主要写当了值日班长应该怎样做做了值日班长自己应该怎样遵守纪律? 野生食肉动物生食动物,是不是普遍都有寄生虫? 英语作文 80字 Lily最近遇到很多问题.她为她的英语学习烦恼.同时,因为内向,只有一个朋友.你能否给Lily写封信,针对她的某个问题给她一些建议,并且告诉她,如果听从了你的建议,她的生活会发 谁能帮我写竞选值日班长演讲稿! 怎样找BILL GATES 生平的事件英文版寻有关BILL GATES 这么多年的奋斗经历和成长过程.要英文版哦, 2010中秋节月亮,老师要我们办个手抄报,谁能帮帮忙╭(╯^╰)╮ 竞选值日班长的发言稿? 一项工程,甲单独做8小时完成,乙单独做12小时完成,丙单独做15小时完成,甲、乙合作2小时后,乙、丙再合作3小时,剩下的由丙单独完成,还需几小时完成?(列式计算) 德育手抄报 为阻法院强制执行 浙江金华一老人扬言浙江金华一智障儿命悬半空 特勤消防空宁波银行发力托管业务 首只公募基金开浙江云和经贸合作洽谈签约引资50多亿把美式“监听帝国”关入“笼子”杭城周末马拉松大派对 关键词:超越、美国无人机再次出手清除巴塔首领 和谈巴基斯坦塔利班头目死于美无人机空袭 中朝俄荣膺第14届中国吴桥国际杂技艺古巴宣布取缔私营电影放映厅报告称中国超越日本 成韩国材料零部件中国珠算备选“非遗”报告称中国超越日本成韩国材料零部件最美无人机再次出手 巴基斯坦塔利班首领日媒:日俄防长会议谈及钓鱼岛 集体自中国珠算备选“非遗”俄一少年足球队大巴撞车致一名教练死亡朝鲜海军军官执行任务时殉职 金正恩前2013杭州国际马拉松开跑 26国2金正恩参谒牺牲烈士墓地 称心疼得睡不美国无人机再次出手清除巴塔首领 和谈早泄破坏家庭和谐 男人早泄自疗法从情人和老婆来看投资和理财,哪个更赚日本地震后,物价不升反降10倍荐号:别活成一个让自己都看不起的人多维度拉动票房 “I Believe为什么土地使用权是70年,不是100上海电力重磅消息流出,意图明显爆出后乐视手机疯长之谜:冯幸和他的那些铁哥EIA行情布局进行时,今日原油沥青做男人早泄锻炼方法 还需饮食配合中海发展主力布下惊天骗局,后市必定如亚冠-塔神破门鲁能1-0双杀广岛 时我和我的弟弟如果只是依赖,又何必夸张成爱善良没用,你得漂亮我为什么那么讨厌黄渤?扩大你的圈子,收获人脉,从这里开始有了它,爱情的小船才不会说翻就翻她与范爷、赵薇齐名,身戴2亿珠宝走红睡前饿了吃什么不长胖?5种食物有助于为什么睡醒起来感觉更累?
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘