当前位置:文档之家› 过程与自定义函数

过程与自定义函数

过程与自定义函数
过程与自定义函数

一、选择题

1.某VB程序如下:

Private Sub Label1_DblClick( )

Dimx As Single,y As Single

Label1.Caption ="Welcome."

x =Val(Text2.Text)

y=Sqr(Abs(x))

Text1.Text =Str(x +y)

End Sub

程序运行时,能触发该事件过程的是( )

A. 单击Command1

B. 单击Label1

C. 双击Label1

D. 双击Text1

2.在VB中,使用过程主要是为了( )

A. 使程序模块化

B. 使程序界面美观

C. 给程序加密

D. 人机交互更友好

3.某对象的一个事件过程代码如下:

Private Sub Obj_Click( )

s=s +1

Text1.Text =Str(s)

End Sub

下列说法正确的是( )

A. 该过程的过程名为“Obj”

B. 该对象的类名为“Sub”

C. 该对象的对象名为“Obj_Click”

D. 该事件是一个“单击”事件

4.某VB程序的一个事件过程如下:

Private Sub Command1_Click( )

Label1.Caption ="welcome!"

End Sub

程序运行时,能触发该事件的是( )

A. 窗体装载

B. 单击窗体

C. 单击标签Label1

D. 单击命令按钮Command1

5.在VB中,设已定义函数过程f,它有三个实型传值参数。设a,b,c为实型变量,则下列能调用该函数的正确语句是( )

A. f

B. f(a+b,b+c)

C. f(a+b,b+c,c+a)

D. fa+b,b+c,c+a

6.有如下VB自定义函数:

Function f(x As Integer)As Single

f =Int(Abs(x))

End Function

该函数返回值的数据类型是( )

A. 整数型

B. 日期型

C. 逻辑型

D. 单精度实数型

7.有如下VB自定义函数:

Function f(i As Single)As Boolean

If i<=0Then f =True Else f=False

End Function

执行语句s =f(-0.4)后,逻辑型变量s的值是( )

A. 0

B. 1

C. True

D. False

8.在VB中,有如下程序:

Function f(x As Integer)As Integer

f =Int(Abs(x)/3)+0.1

End Function

Private Sub Command1_Click( )

Dimy As Single

y =f(-9)

Text1.Text =Str(y)

End Sub

运行该程序,单击命令按钮Command1,文本框Text1中显示的是( )

A. -9

B. 9

C. 3

D. 3.1

9.小明在VB中定义了以下函数,功能是求a和b的最大公约数。

Function gcd(a As Integer,b As Integer)As Integer DoWhile b >0

c =aMo

d b

a =b

b =c

Loop

End Function

调试中发现计算结果一直是0。经过仔细观察与分析,发现错误的原因是( )

A. 函数名有错

B. 变量C没有定义

C. 函数没有返回值

D. b>0应该改为b>=0

10.某VB程序如下:

Private Sub Text1_KeyPress(KeyAscii As Integer)

If KeyAscii =13Then

Text2.Text =Text1.Text +Str(5)

End If

End Sub

程序运行时,能触发该事件过程的是( )

A. 单击文本框Text1

B. 单击文本框Text2

C. 文本框Text1被激活后,用户在键盘上按下某一个键

D. 文本框Text2被激活后,用户在键盘上按下某一个键

11.狄同学在设计VB程序时所使用复选框对象的属性窗口如图所示,她想编制该复选框单击事件的处理过程,则该事件处理过程名是( )

A. CheckBox_Click

B. 加粗_Click

C. Check1_Click

D. 复选框_Click

12.下列VB程序中,f是一个递归函数:

Private Sub Command1_Click( )

Dim y As Long

Text1.Text =""

y =f(3)

Label1.Caption =Str(y)

End Sub

Function f(n As Integer)As Long '递归函数

Text1.Text =Text1.Text +Str(n)

If n <=1Then

f =1

Else

f =f(n -1)+2

End If

End Function

程序运行时,单击命令按钮Command1后,文本框Text1中显示的内容是( )

A. 3

B. 321

C. 123

D. 1

13.以下为VB算定义求两个数最大公约数函数的代码:Private Function gcd(a as integer,b as integer)as integer …此处省略语句块内容

第1页共2页

C语言 第七章 函数

第七章函数 一、选择题 1.【B】 分析:函数返回值的隐含类型是整型。 2.【B】 分析:main函数可以在任何地方出现。它是程序的入口。 3.【D】 分析:函数的调用有一个返回值或者实现一定的功能,因此可以作为独立的语句存在,也可以出现在表达式中,可以作为一个函数的实参(返回值是一个实际的值)。4.【B】 分析:实参与形参之间的数据传递,只能是实参传给形参,单向传递。 5.【B】 分析:任何函数(除了main函数)的使用通过调用实现。普能的函数都能被单独编译(一定要能过调用才能运行),不能在一个函数中嵌套定义另一个函数。 6.【CD】 分析:C选项程序就是由若干个函数组成,无论是否有其他函数,主函数一定得存在。每个程序都必须有且仅有一个主函数,但不是每个程序文件都必须有main()函数。因为一个程序可能包含多个程序文件。函数不能嵌套定义。 7.【D】 分析:函数调用时实参必须与形参在个数,类型,顺序上相同。A选项中的"abc"是字符串,所以错误。C选项中'65'本身就是错误的。函数的返回值为空,不能用于赋值运算,所以B选项错误。D选项的第二个32在传给形参时可以转换为实型,正确。8.【A】 分析:实参都是用逗号隔开,第二个实参是个加法表达式,第三个实参是个逗号表达式。9.【C】 分析:fl函数功能返回较大的值,f2函数的功能返回较小的值。f1(a,b)返回为4,f2(a,b)返回为3。 10.【C】 分析:void *fun();的含义是fun函数的返回值是无值型的指针类型。 11.【C】 分析:函数在调用时不会出现类型说明符,所以A,D错误。函数的返回值为空,不能用于赋值运算,所以B选项错误。 12.【D】 分析:fun函数的功能选择两个数中较大的一个作为返回值。x为3,y为8,z为6以实参传到形参中,所以fun(fun(x,y), 2*z)等价于fun(fun(3,8), 2*6)等价于fun(8, 12),最后r被赋12。答案选D。 13.【B】 分析:fun函数功能返回两个数之和。此题就是函数调用作为函数实参。a为2,b为5,c 为8传到fun((int)fun(a+c,b),a-c))中那么它等价于fun(15,-6)。所以答案选B。14.【C】 分析:此题关键的一点就是实参与形参数据是单向传递的,a为31以实参传到函数中或者说传到形参z中,而函数体z=x*x+y*y会使z发生改变,形参改变了,但是实参是不

C++第七章 动态内存分配习题解答

第七章动态内存分配习题 一、基本概念与基础知识自测题 7.1 填空题 7.1.1 C/C++定义了4个内存区间:(1)、(2)、(3)和(4)。 答案:(1)代码区,存放程序代码; (2)全局变量与静态变量区,存放全局变量或对象(包括静态); (3)局部变量区即栈(stack)区,存放局部变量; (4)动态存储区,即堆(heap)区或自由存储区(free store)。 7.1.2 静态定义的变量和对象用标识符命名,称为(1);而动态建立的称为(2),动 态建立对象的初始化是通过(3)来(4)。 答案:(1)命名对象 (2)无名对象 (3)初始化式(initializer) (4)显式初始化 7.1.4 当动态分配失败,系统采用(1)来表示发生了异常。如果new返回的指针丢失, 则所分配的堆空间无法收回,称为(2)。这部分空间必须在(3)才能找回,这是因为无名对象的生命期(4)。 答案:(1)返回一个空指针(NULL) (2)内存泄漏 (3)重新启动计算机后 (4)并不依赖于建立它的作用域 7.1.5 按语义的缺省的构造函数和拷贝构造赋值操作符实现的拷贝称(1),假设类对象 obj中有一个数据成员为指针,并为这个指针动态分配一个堆对象,如用obj1按成员语义拷贝了一个对象obj2,则obj2对应指针指向(2)。 答案:(1)浅拷贝 (2)同一个堆对象 7.2简答题(以下习题题号可能和教材不一致!) 7.2.1用delete删除p所指向的无名对象时,p指针也同时被删除了,对不对?为什么?答:不对。注意这时释放了p所指向的无名对象占用的内存空间,也就是撤销了该无名对象,称动态内存释放(dynamic memory deallocation),但指针p本身并没有撤销,它仍然存在,该指针所占内存空间并未释放。 7.2.2为什么动态建立类对象数组时,类的定义一定要有缺省的构造函数? 答:new后面类(class)类型也可以有参数。这些参数即构造函数的参数。但对创建数组,没有参数,只能调用缺省的构造函数。 7.2.3要实现深拷贝,自定义的拷贝构造函数应该怎样设计? 答:如果类中有一个数据成员为指针,该类的一个对象中的这个指针p,指向了动态分配的一个堆对象。深拷贝时要给新建立的对象独立分配一个堆对象。这时拷贝的构造函数应

答案第七章函数..(可编辑修改word版)

第七章函数 一、选择题 1.以下函数声明正确的是: C 。(02~03 第一学期试题) A)double fun(int x, int y) B) double fun(int x; int y) C) double fun(int x, int y) ; D) double fun(int x , y) 2.C 语言规定,简单变量作实参,它与对应形参之间的数据传递方式是: B 。(0 级) A)地址传递;B)单向值传递; C)双向值传递;D)由用户指定传递方式 3.以下关于C语言程序中函数的说法正确的是: B 。(0 级) A)函数的定义可以嵌套,但函数的调用不可以嵌套; B)函数的定义不可以嵌套,但函数的调用可以嵌套; C)函数的定义和调用均不可以嵌套; D)函数的定义和点用都可以嵌套。 4.以下正确的函数形式是: D 。(1 级) A)double fun(int x,int y) B)fun (int x,y) {z=x+y;return z;} {int z;return z;} C)fun(x,y) D)double fun(int x,int y) {int x,y ; double z; {double z; z=x+y; return z;} z=x+y; return z;} 5.以下说法不正确的是: B 。(1 级) C 语言规定A)实参可以是常量、变量或表达式 B)形参可以是常量、变量或表达式 C)实参可以是任意类型 D)形参应与其对应的实参类型一致 6.C语言允许函数值类型缺省定义,此时该函数值隐含的类型是 B 。(0 级) A)float 型B) int 型C)long 型D)double 型 7.以下错误的描述是 D 。(0 级) 函数调用可以 A)出现在执行语句中B)出现在一个表达式中C) 做为一个函数的实参D)做为一个函数的形参 8.若用数组名作为函数调用的实参,传递给形参的是 A 。(0 级) A)数组的首地址B)数组第一个元素的值 C)数组中全部元素的值D)数组元素的个数 9.以下正确的说法是 A 。(0 级) 如果在一个函数中的复合语句中定义了一个变量,则该变量 A)只在该复合语句中有效B)在该函数中有效C) 在本程序范围内有效D)为非法变量 10.以下不正确的说法为 D 。(0 级) A)在不同函数中可以使用相同名字的变量 B)形式参数是局部变量

第七章自定义函数

第七章自定义函数 7.1,概述 用户自定义函数(User-Defined Functions,即UDFs)可以提高FLUENT程序的标准计算功能。它是用C语言书写的,有两种执行方式:interpreted型和compiled型。Interpreted 型比较容易使用,但是可使用代码(C语言的函数等)和运行速度有限制。Compiled型运行速度快,而且也没有代码使用范围的限制,但使用略为繁琐。 我们可以用UDFs来定义: a)边界条件 b)源项 c)物性定义(除了比热外) d)表面和体积反应速率 e)用户自定义标量输运方程 f)离散相模型(例如体积力,拉力,源项等) g)代数滑流(algebraic slip)混合物模型(滑流速度和微粒尺寸) h)变量初始化 i)壁面热流量 j)使用用户自定义标量后处理 边界条件UDFs能够产生依赖于时间,位移和流场变量相关的边界条件。例如,我们可以定义依赖于流动时间的x方向的速度入口,或定义依赖于位置的温度边界。边界条件剖面UDFs用宏DEFINE_PROFILE定义。有关例子可以在5.1和6.1中找到。源项UDFs可以定义除了DO辐射模型之外的任意输运方程的源项。它用宏DEFINE_SOURCE定义。有关例子在5.2和6.2中可以找到。物性UDFs可用来定义物质的物理性质,除了比热之外,其它物性参数都可以定义。例如,我们可以定义依赖于温度的粘性系数。它用宏DEFINE_PROPERTY定义,相关例子在6.3中。反应速率UDFs用来定义表面或体积反应的反应速率,分别用宏DEFINE_SR_RATE和DEFINE_VR_RA TE定义,例子见6.4。离散相模型用宏DEFINE_DPM定义相关参数,见5.4。UDFs还可以对任意用户自定义标量的输运方程进行初始化,定义壁面热流量,或计算存贮变量值(用用户自定义标量或用户自定义内存量)使之用于后处理。相关的应用见于5.3,5.5,5.6和 5.7。 UDFs有着广泛的应用,本文并不能一一叙述。如果在使用中遇到问题,可以联系FLUENT技术支部门要求帮助。在此推荐一个网站,上面有FLUENT论坛,可进行相关询问和讨论。 7.1.1 书写UDFs的基本步骤 在使用UDFs处理FLUENT模型的过程中,我们一般按照下面五步进行: 1.概念上函数设计 2.使用C语言书写 3.编译调试C程序 4.执行UDF 5.分析与比较结果 第一步分析我们所处理的模型,目的是得到我们要书写的UDF的数学表达式。第二步将数学表达式转化成C语言源代码。第三步编译调试C语言源代码。第四步在FLUENT 中执行UDF。最后一步,将所得到的结果与我们要求的进行比较,如果不满足要求,则需要重复上面的步骤,直到与我们期望的吻合为止。

第七章 函数

函数 了解函数定义的方法 1.定义无参函数的一般形式为: 类型标识符函数名() { 声明部分 语句部分 } 2.定义有参函数的一般形式为: 类型标识符函数名(形式参数表列) { 声明部分 语句部分 } 例如: intmax(int x,int y) { intz; / *函数体中的声明部分*/ z=x>y?x∶y; return(z); } 3.定义空函数的一般形式为: 类型标识符函数名() {} 例如: dummy() {} 函数调用注意事项: (1)C程序的执行是从main函数开始的,如是在main函数中调用其他函数,在调用后流程返回到main函数,在main函数中结束整个程序的运行。 (2)所有函数都是平行的,即在定义函数时是分别进行的,是互相独立的。一个函数并不从属于另一函数,即函数不能嵌套定义。函数间可以互相调用,但不能调用main函数。main函数是系统调用的。 (3) 在定义函数中指定的形参,在未出现函数调用时,它们并不占内存中的存储单元。 (4)在定义函数时指定的函数类型一般应该与return语句中的表达式类型一致。 掌握函数的调用方式: 1.函数的嵌套调用 2.函数的递归调用 简单了解局部变量与全局变量 1.填空题 有以下程序

#include int fun(int a,int b) {int c; c=a+b;return c; } main() {int x=6,y=7,z=8,r; r=fun((x--,y++,x+y),z--); printf("%d,%d,%d",r,x,y); } 输出结果为___21,5,8___ 2.填空题 有以下程序 #include int fun2(int a,int b) {int c; c=(a*b)%3;return c; } int fun1(int a,int b) {int c; a+=a;b+=b;c=fun2(a,b); return c*c; } main() {int x=11,y=19; printf("%d\n",fun1(x,y)); } 输出结果为__4___ 3.填空题 有以下程序 #include void fun(int a,int b,int c) {a=b;b=c;c=a;} main() {int a=10,b=20,c=30; fun(a,b,c); printf("%d,%d,%d\n",c,b,a); } 运行结果是__30,20,10___(掌握值传递与址传递)4.填空题 有以下程序 #include char f(char x) {return x*x+'a';}

小甲鱼C语言第七章 函数

第七章函数 如果有人问你,这个地球上什么动物最聪明?我想不会有其他答案,这个地球上人类是最聪明的。我们去百度一下“人类”,会发现百度百科中是这样描述人类的:人的总称,是地球上一中相比较来说比较高智慧的生物,可以说是地球至今的统治者。《现代汉语词典》对人的解释是:能制造工具、并且能够熟练使用工具进行劳动的高等动物。 《现代汉语词典》中对人类的解释离不开“工具”这个词。我们人类的祖先在使用天然工具的过程中,逐渐学会了如何制造工具。工具是什么呢?工具往往具有某些特定的作用、可以实现某种功能。比如打火机,可以用于打火,当我们想抽烟的时候,只需要轻轻的按一下打火机就可以了,而不需要钻木取火,如果现在还有人钻木取火的话,除非那个人是想实验一下钻木取火的真实性,否则为了帮助这个社会,我们就可以打电话通知精神病院了。 工具简化了我们的生活,也丰富了我们的生活。当我们需要实现某种功能的时候,只需要把对应的工具拿过来使用就好了。C语言中也提供了这种使用某种“工具”来处理特定问题的方法,称之为函数。 7.1 函数概述 有些人在看到本章的标题的时候可能就会惊呼:我函数学的最差了!!我最讨厌函数了!!。没错,数学中的函数的确很讨厌(针对我个人来说),我也很不喜欢它。但是不要担心,这里不会讲数学中的函数,更不会告诉你一次函数和二次函数的差别。我们这里讲的是计算机语言中的函数。 函数,在有些语言当中也称为方法。要说计算机语言中的函数和数学中的函数完全不一样吗?其实也不然,在计算机语言当中,函数就是具有特定功能的“工具”。像我们目前使用过的printf函数和scanf函数,前者用于输出,后者用于输入。还有我们每次编写代码都会使用的main函数。只不过printf和scanf函数是C语言提供的,我们只需要会用就行了,而main函数的功能是我们自己编写的。 为了更好的理解函数的概念,我举个例子来说。日常生活中我们经常会用到ATM自动取款机,这是一个非常方便的工具,我们平常只需要把钱存在卡里,需要的时候可以24小时去取款机中取钱,我想大家都应该有过去取款机取钱的经历,回想一下这个过程:走到取款机面前,我们要把卡放进去,然后取款机会提示输入密码,密码正确之后,选择取款,然后输入取款金额,取款机会把相应的钱吐出来,随后将会提示你是否打印凭条,打印完之后点击取款机屏幕上的退出,便可以取回自己的银行卡。 取款机实现了“自动取款”这个功能,在使用这个功能的时候,我们首先需要把卡放进取款机里,而且还要输入正确的密码,当密码正确之后,我们使用取款这个功能取得相应的钱。最后这个功能完成了,打印一张凭条,打印了此次取款的记录,最后把卡退还给用户。 那么自动取款机就可以说是一个函数,它具有取钱、存钱、转账等等功能,而且我们不需要知道这种功能是如何实现的,我们只需要会使用就可以了。 我们在C语言中也使用函数来实现某种特定的功能。C语言中函数分为两类,一类是库函数,一类是自定义函数。C语言有着丰富的库函数,这个库函数又是个啥子东西?C语言的语句十分简单,如果要使用C语言的语句来完成printf()和scanf()的功能,就需要编写颇为复杂的程序,因为C语言的语句中没有提供可以用于输出或输入的语句。又如为了显示一段文字,或者输入一段文字,我们可以直接使用printf和scanf函数,可以直接用于输出和输入,我们不必去关心这两个函数是如何实现输出和输入功能的。但是,C语言是不可

第七章函数分类

一、函数分类 1、主函数main() { } 2、库函数scanf printf getchar putchar sqrt pow(x,y) fabs 只知道功能是什么就可以,不用具体的了解内部结构。#include “math.h” #include “ctype.h”字符函数 #include “string.h”字符串函数 #include “stdio.h”输入输出函数 #include “stdlib.h”动态分配和随机函数 3、自定义函数 用户根据自己的需要定义的函数,称为自定义函数,具体功能是完成一个操作/计算。 C程序的基本组成单位是函数。 一个可以执行程序,可以由多个函数组成,不管有多少的函数,总是从主函数开始执行,在主函数结束程序。 double sum(double x,double y) {double z;

z=x+y; return z;} main() {double a,b,c; scanf(“%lf%lf”,&a,&b);3.4 5.9 c=sum(a,b); printf(“%lf”,c); } 二、自定义函数的定义 1、格式: 函数返回值的类型函数名(类型名形式参数1,类型名形式参数2,……..) 函数首部{定义部分 执行部分 } 函数体 int sum(int x,int y)形式参数 {int z; z=x+y; return z;} 说明:1)函数返回值的类型int(可以省略) float double char void(无值型) 2) 函数名是用户根据自己的需要定义的名字,见名知义.

3)( )不能省略,可以为空.为形式参数.个数应该和实际参数个一致.类型一致. 4){}为函数体,定义部分和执行部分. void fun(int x,int y) {if(x>y) return x; else return y; } main() {int x,y; scanf(“%d%d”,&x,&y); printf(“%d”, fun(x,y);); } 三、函数的调用 格式1:函数做为表达式的一部分出现. max=fun(x,y); printf(“%d ”, fun(x,y)); 格式2:函数做为一条独立语句出现. printf(“%d ”,a); 四、函数的返回值 格式: 1) return 表达式

相关主题
文本预览
相关文档 最新文档