C语言程序设计第六章 函 数

2019-03-04 13:01

第六章 函 数

一、单项选择题

1.在C语言程序中,有关函数的定义正确的是( B )。 A.函数的定义可以嵌套,但函数的调用不可以嵌套 B.函数的定义不可以嵌套,但函数的调用可以嵌套 C.函数的定义和函数的调用均不可以嵌套 D.函数的定义和函数的调用均可以嵌套

2.以下对C语言函数的有关描述中,正确的是( A )。

A.在C中,调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参 B.C函数既可以嵌套定义又可递归调用 C.函数必须有返回值,否则不能使用函数

D.C程序中有调用关系的所有函数必须放在同一个源程序文件中 3.函数调用语句f((e1,e2),(e3,e4,e5));中参数个数是( C )。 A. 5 A. auto

B. 4

C. 2

D. 1

D.无存储类型

4.C语言中函数的隐含存储类型是( C )。

B. static

C. extern

5.能把函数处理结果的二个数据返回给主调函数,在下面的方法中不正确的是( A )。 A. return这二个数

B. 形参用二个元素的数组 D. 用二个全局变量

C. 形参用二个这种数据类型的指针

A. void main( ) { char s[20]=―abcdefgh‖; fun(s); ?? } C. void main( ) { char s[20]=―abcdefgh‖; char *p=s; fun(p); ?? } 7.以下程序的输出结果是( C )。 fun(char **m)

{ ++m; printf(―%s\\n‖,*m); } void main( )

{ char *a[ ]={―BASIC‖,―FOXPRO‖,―C‖};

fun(a); }

A. BASIC

49

6.有一函数的定义如:void fun(char *s){??},则不正确的函数调用是( D )。

B. void main( ) { char s[20]=―abcdefgh‖; fun(&a[0]); ?? } D. void main( ) { char s[20]=―abcdefgh‖; fun(s[ ]); ?? } B. ASIC C. FOXPRO D. C

8.函数的功能是交换x和y中的值;且通过正确调用返回交换结果。不能正确执行此功能的函数是( B )。 A. funa(int *x, int *y) { int i,*p=&i; *p=*x; *x=*y; *y=*p } C. funa(int *x, int *y) { int p; p=*x; *x=*y; *y=p; } } } D. funa(int *x, int *y) { *x=*x+*y; *y=*x-*y; *x=*x-*y; B. funa(int x, int y) { int t; t=x; x=y; y=t; 9.要求函数的功能是在一维数组a中查找x值:若找到则返回所在的下标值,否则返回0;数放在a[1]到a[0]中。不能正确执行此功能的函数是( C )。 B. funa(int *a, int n, int x) A. funa(int *a, int n, int x) { int k; { *a=x; for(k=1;k<=n;k++) while(a[n]!=x) n--; if(a[k]==x) return(k); return(n); return(0); } } C. funa(int a[ ], int n, int x) D. funa(int a[ ], int n, int x) { int *k; { int k=0; do k++; a[0]=k; k=a+n; while((k

sub1(char a, char b){ char c; c=a; a=b; b=c; } sub1(char *a, char b){ char c; c=a; *a=b; b=c; } sub1(char *a, char *b){ char c; c=*a; *a=*b; *b=c; } void main( ) { char a,b;

a=?A‘; b=?B‘; sub3(&a, &b); putchar(a); puchar(b); a=?A‘; b=?B‘; sub2(&a, b); putchar(a); puchar(b); a=?A‘; b=?B‘; sub1(a, b); putchar(a); puchar(b); }

A. BABBAB

B. ABBBBA

C. BABABA

D. BAABBA

二、填充题

1.变量的作用域主要取决于变量 局部变量或是全程变量 ,变量的生存期既取决于变量 局部变量或是全程变量 ,又取决于变量 存储类型 。

2.从变量的存储类型来说, 外部声明型 变量不允许初始化。 自动型 变量、 寄存器型 变量和 静态型 变量可以初始化。其中变量如果不进行初始化,则 自动型

50

变量和 寄存器型 变量的初值不确定,而 静态型 变量初值为0。 3.静态型内部变量的作用域是 所定义的函数或复合语句内 。

4.函数中的形参和调用时的实参都是数组名时,传递方式为 地址传递 ,都是变量时,传递方式为 值传递 。

5.函数的形式参数的作用域为 函数内部 ,全局的外部变量和函数体内定义的局部变量重名时, 局部 变量优先。

6.若自定义函数要求返回一个值,则应在该函数体中有一条 return 语句,若自定义函数要求不返回一个值,则应在该函数说明时加一个类型说明符 void 。

7.若函数的形式参数是指针类型,则实参可以是 变量地址 、 指针 或 数组名 。 8.函数的参数为char *类型时,虚参与实参结合的传递方式为 地址传递 。 9.函数的实参为常量时,虚参与实参结合的传递方式为 值传递 。 10.对下列递归函数,函数调用f(3)的返回值是 9 。

int f(int n) { return((n==0)?1:f(n-1)+2); }

11.函数f定义如下,调用f(“1475”)的返回值为 17 。

int f (char *s) { int k=0; while (*s)k+=*s++-?\\0‘; return k; }

12.函数change定义如下,a=0、b=5,执行change (a,b)后a、b的值分别为 10,5 。

void change (int a, int b) { int t=0; t=a; a=b; b=t; }

13.已知三角形边长a、b、c和s=(a+b+c)/2,计算其面积的算术表达式为 sqrt (s*(s-a)*(s-b)*(s-c)) 。

14.已知方程ax2+bx+c=0系数a、b、c且存在两个实根,计算其中一个实根的算术表达式为 (-b+sqrt(b*b-4*a*c))/(2*a) 。

15.p为本金,r为5年期存款年利率,计算存款p元5年到期时本金、利息总和的算术表达式为 p*pow (1+r,5) 。

16.将数学式(x+1)e2x写作算术表达式为 (x+1)*exp(2*x) 。

17.调用find函数求实参数组中最大值,再调用find函数求实参数组中最下值。

#include void main ( )

{ float s,a[7]={2,6,3,8,3,12,9}; float find (float*, int, int);

s=find(a,7,1); printf(―%f\\n‖,s) ; s=find(a,7,-1) ; printf(―%f\\n‖,s); }

float find(float *p, int n, int flag) { int i; float t,fh;

if(flag>=0) fh=1; else fh=-1; t=*p ; for(i=1;it*fh) t=*(p+i;) return t ; }

51

18.对数组按值从大到小的顺序排序后输出。

#include void main ( )

{ float a[7]={2,6,3,8,3,12,9}; void sort (float*, int); sort(a,7) ; for(int i=0;i<7;i++) printf(―%f‖,a[i]); printf(―\\n‖); }

void sort (char *p, int n) { int i,j,k; float t; for(i=o;i

k=i;

for(j=i+1;j*(p+k) k=j; if(k!=i)

{ t=*(p+i); *(p+i)=*(p+k); *(p+k)=t; } } }

19.下列函数求任意阶多项式a0+a1X+a2X2+…+anXn的值并返回多项式的值。

float sum(float *a, int n) { float y,t=1; int I; scanf(―%f‖,&x); y=*a;

for(I=1;I<=n;I++){ t=t*x; y+=*(a+I)*t; } return y; }

20.下列函数在n个元素的一维数组中,找出最大值、最小值并传送到调用函数。

#include

void find (float *p, int *max, int *min, int n) { int k; float t;

*max=*p; *min=*p; for(k=1;k

if( t>*max ) *max=t; if(t<*min) *min=t; } }

52

21.下列函数用于任意方阵(行数等于列数的二维数组)转置。

void mt(float *a, int n ) 如数组:1 { int i,j; float t; 2 for(i=0;i

22.下列程序读入六个字符串,排序后输出。

#include #include void sort(char *a[ ], int n) { int i,j,k; char *temp; for(i=0;i

for(j=i+1;j

if(k!=i) { temp=a[i]; a[i]=a[k]; a[k]=temp; } // 指针数组元素交换 } }

void main ( )

{ char *name[6], ch[6][30]; int k; for(k=0; k<6; k++) name[k]=ch[k];

for(k=0; k<6; k++) gets(name[k]); sort(name,6); for(k=0; k<6; k++) puts(name[k]); }

23.下列函数用矩形公式求f(x)在[a,b]的定积分:先M等积分区间求得积分近似值,在2M等份近似值,再4M等份求得近似值,……,当两次积分近似值之差的绝对值小于eps时返回计算结果。

float sum (float a,float b, int m, float eps) { float h,s1=0,s2,x; int i, flag=1; while(flag){

s2=0; x=a; h=(b-a)/m; for(I=1;I<=m;I++){

s2+=(f(x)+f(x+h))*h/2; x=x+h; }

if(fabs(s1-s2)

53

11 3 3 5 2 3 4 5

4 6 7 4 2 -4 4

-2 5 2 -7 4 6 7

-4 5


C语言程序设计第六章 函 数.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:最新-机关单位2019年植树节活动策划书 精品

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: