C语言各章节单元测试题及答案——函数
- 格式:doc
- 大小:81.00 KB
- 文档页数:20
c语言函数考试题及答案C语言函数考试题及答案1. 以下哪个选项是C语言中函数定义的正确格式?A. int function_name(int a, int b) { return a + b; }B. int function_name(int a, int b) { return a - b; }C. int function_name(int a, int b) { return a * b; }D. int function_name(int a, int b) { return a / b; } 答案:A2. 函数原型声明的作用是什么?A. 定义函数的具体实现B. 说明函数的返回类型和参数列表C. 调用函数时传递参数D. 返回函数的执行结果答案:B3. 如何在C语言中调用一个函数?A. 直接使用函数名B. 使用函数名和参数列表C. 使用函数名和返回值D. 使用函数名和参数类型答案:B4. C语言中,以下哪个函数可以正确计算两个整数的乘积?A. int multiply(int a, int b) { return a * b; }B. int multiply(int a, int b) { return a + b; }C. int multiply(int a, int b) { return a - b; }D. int multiply(int a, int b) { return a / b; }答案:A5. 函数的返回值是什么?A. 函数执行后的结果B. 函数执行前的输入C. 函数内部的局部变量D. 函数的参数答案:A6. 在C语言中,如果函数没有返回值,应该使用哪个关键字?A. intB. voidC. charD. float答案:B7. 以下哪个选项是C语言中函数调用的正确格式?A. function_name(a, b);B. function_name[a, b];C. function_name{a, b};D. function_name(a; b);答案:A8. C语言中,函数的参数传递方式是什么?A. 值传递B. 引用传递C. 地址传递D. 指针传递答案:A9. 如果需要在函数中修改传入的参数值,应该使用哪种参数传递方式?A. 值传递B. 引用传递C. 地址传递D. 指针传递答案:D10. 在C语言中,以下哪个函数可以正确计算两个整数的和?A. int sum(int a, int b) { return a + b; }B. int sum(int a, int b) { return a - b; }C. int sum(int a, int b) { return a * b; }D. int sum(int a, int b) { return a / b; }答案:A。
C语言-函数1. 以下正确的函数定义形式是()。
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. 函数调用语句:func((x1,x2),(x3,x4,x5));含有的实参个数是()。
A)1 B)2C)4 D)53. 对函数调用描述错误的是()。
A)出现在执行语句中B)出现在表达式中C)作为函数的实参D)作为函数的形参4. 以下不正确的说法是()。
A)不同函数中可以使用同名变量B)函数内定义的变量只在本函数范围内有效C)形式参数是局部变量D)复合语句中定义的变量在本函数范围内有效5.以下正确的说法是()。
在C语言中A)实参和与其对应的形参各占用独立的存储单元B)实参和与其对应的形参共占用一个存储单元C)只有当实参和与其对应的形参同名时才共同占用存储单元D)形参是虚拟的,不占用存储单元6.对函数及其参数,在C语言中以下描述不正确的是()。
A)主函数main()可以有参数B)实参和形参必须类型一致C)函数调用时是实参传送给形参,而形参不能传送给实参D)函数的返回值可有可无7.在C语言程序中,下列说法中()是正确的。
A)函数的定义和调用都可以嵌套B)函数的定义和调用都不可以嵌套C)函数的定义可以嵌套,而调用不能嵌套D)函数的定义不能嵌套,而调用可以嵌套8.定义一个具有返回值的函数,但没加类型说明,该函数的默认类型为()。
A)int B)void C)float D)不确定9.函数返回值的类型取决于()。
A)函数的类型B)return语句中表达式的类型C)调用函数将值赋给的变量的类型D)函数类型与return语句中表达式类型中较高的类型10.C语言中形参的默认存储类别是()。
A)自动(auto)B)静态(static)C)寄存器( register) D)外部(extern)11.在调用函数时,如果实参是简单变量,它与对应形参之间的数据传送方式是()。
c语言函数试题及答案1. 以下哪个关键字用于定义一个函数?A. classB. structC. functionD. void答案:D2. 函数的返回值类型是什么?A. intB. floatC. charD. 以上都可以答案:D3. 函数的参数列表可以包含哪些类型?A. 变量B. 常量C. 表达式D. 以上都不对答案:A4. 以下哪个选项不是函数原型的组成部分?A. 返回类型B. 函数名C. 参数列表D. 函数体答案:D5. 以下哪个语句用于调用函数?A. defineFunction();B. callFunction();C. invokeFunction();D. functionName();答案:D6. 函数的返回值是什么?A. 函数执行的结果B. 函数的参数C. 函数的名称D. 函数的类型答案:A7. 以下哪个选项不是函数的属性?A. 返回类型B. 参数列表C. 函数名D. 函数的存储位置答案:D8. 以下哪个关键字用于定义一个无返回值的函数?A. intB. voidC. charD. float答案:B9. 函数的参数默认传递方式是什么?A. 值传递B. 引用传递C. 指针传递D. 动态传递答案:A10. 以下哪个选项不是函数调用时可能出现的错误?A. 函数名拼写错误B. 参数类型不匹配C. 参数数量不足D. 函数定义在调用之后答案:D11. 以下哪个选项是正确的函数定义?A. int myFunction(int x, int y) { return x + y; }B. int myFunction(int x; int y) { return x + y; }C. int myFunction(int x, int y) { return x - y; }D. int myFunction(int x, int y) { return x * y; }答案:A12. 以下哪个选项是正确的函数声明?A. void myFunction(int x, int y);B. int myFunction(int x, int y);C. int myFunction(int x, int y) { return x + y; }D. void myFunction(int x, int y) { return x + y; }答案:A13. 以下哪个选项是正确的递归函数定义?A. int factorial(int n) { if (n == 1) return 1; else return n * factorial(n - 1); }B. int factorial(int n) { if (n == 1) return 1; else return n * factorial(n + 1); }C. int factorial(int n) { if (n == 0) return 1; else return n * factorial(n - 1); }D. int factorial(int n) { if (n == 0) return 1; else return n * factorial(n + 1); }答案:C14. 以下哪个选项是正确的函数指针声明?A. int (*ptr)(int, int);B. int *ptr(int, int);C. int (*ptr)(int);D. int *ptr(int, int)(int, int);答案:A15. 以下哪个选项是正确的函数指针的使用?A. int add(int a, int b) { return a + b; }B. int (*ptr)(int, int) = add;C. int result = ptr(5, 3);D. 以上都是答案:D。
c语言关于函数的试题及答案1. 题目:以下哪个选项是正确的C语言函数定义?- A. int function(int a, int b) { return a + b; } - B. int function(int a, int b) { return a - b; } - C. int function(int a, int b) { return a * b; } - D. All of the above答案:D2. 题目:在C语言中,函数的返回值类型是什么?- A. void- B. int- C. float- D. char答案:A3. 题目:以下哪个选项是C语言中有效的函数声明?- A. int add(int a, int b);- B. int add(int, int);- C. int add(int a; int b);- D. int add(int a, int b) {}答案:A4. 题目:在C语言中,函数的参数默认传递方式是什么? - A. 值传递- B. 引用传递- C. 指针传递- D. 以上都不是答案:A5. 题目:以下哪个选项是C语言中正确的递归函数定义?- A. int fact(int n) { if (n == 0) return 1; else return n * fact(n - 1); }- B. int fact(int n) { if (n == 0) return 1; else return n * fact(n + 1); }- C. int fact(int n) { if (n == 1) return 1; else return n * fact(n - 1); }- D. All of the above答案:A6. 题目:在C语言中,如何定义一个接受任意数量参数的函数?- A. 使用不定参数列表- B. 使用数组作为参数- C. 使用指针作为参数- D. 使用结构体作为参数答案:A7. 题目:以下哪个选项是C语言中正确的函数指针声明?- A. int (*func)(int);- B. int *func(int);- C. int func(int)[];- D. int (*func)(int, int);答案:A8. 题目:在C语言中,如果函数返回一个结构体,那么函数的返回类型是什么?- A. struct- B. void- C. int- D. char答案:A9. 题目:以下哪个选项是C语言中正确的函数重载声明?- A. void add(int a, int b);- B. int add(int a, int b);- C. void add(int a, int b, int c);- D. All of the above答案:D10. 题目:在C语言中,如何定义一个接受可变数量参数的函数?- A. 使用不定参数列表- B. 使用数组作为参数- C. 使用指针作为参数- D. 使用结构体作为参数答案:A。
第一单元程序设计和C语言一、选择题1.C语言的基本构成单位是:。
A. 函数B. 函数和过程C. 超文本过程D. 子程序2.一个C语言程序总是从开始执行。
A. 主过程B. 主函数C. 子程序D.主程序3.C语言的程序一行写不下时,可以。
A. 用逗号换行B. 用分号换行C. 在任意一空格处换行D. 用回车符换行4.以下叙述不正确的是:。
A. 在C程序中,语句之间必须要用分号";"分隔B. 若a是实型变量,C程序中a=10是正确的,因为实型变量中允许存放整型数C. 在C程序中,无论是整数还是实数都能正确无误地表示D. 在C程序中,%是只能用于整数运算的运算符5.以下不正确的C语言标识符是。
A. ABCB. abcC. a_bcD. ab.c6.下列字符串是标识符的是:。
A. _HJB. 9_studentC. longD. LINE 17.以下说法中正确的是:。
A. C语言程序总是从第一个定义的函数开始执行B. 在C语言程序中,要调用的函数必须放在main()函数中定义C. C语言程序总是从main()函数开始执行D. C语言程序中的main()函数必须放在程序的开始部分8.不合法的常量是:。
A. ‘\2’B. ""C. ‘3’D. ‘\483’9.已知各变量的类型说明如下,则以下不符合C语言语法的表达式是:。
int k,a,b;unsigned long w=5;double x=1.422;A. x%(-3)B. w+=-2C. k=(a=2,b=3,a+b)D. a+=a=+(b=4)*(a=3)10.在C语言中,字符型数据在内存中以形式存放。
A. 原码B. BCD码C. 反码D. ASCII码11.若有定义:int a=7; float x=2.5; y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值是:。
A. 2.500000B. 2.750000C. 3.500000D. 0.00000012.设有说明:char w; int x; float y; double z;则表达式w*x+z-y值的数据类型为:。
c函数试题及答案在本篇文章中,将介绍一些C语言中常见的函数试题,并给出其相应的答案。
通过这些试题的讲解,读者可以深入了解C函数的使用方法和注意事项,提高对C语言编程的理解和实践能力。
1. 试题一:编写一个函数,实现两个整数的交换。
答案:```cvoid swap(int *a, int *b) {int temp = *a;*a = *b;*b = temp;}```2. 试题二:编写一个函数,判断一个数是否为偶数,返回1表示是,返回0表示不是。
答案:```cint isEven(int num) {if(num % 2 == 0) {return 1;} else {return 0;}}```3. 试题三:编写一个函数,计算一个整数数组中所有元素的和。
答案:```cint sumArray(int arr[], int size) {int sum = 0;for(int i = 0; i < size; i++) {sum += arr[i];}return sum;}```4. 试题四:编写一个函数,找出一个整数数组中的最大值。
答案:int findMax(int arr[], int size) {int max = arr[0];for(int i = 1; i < size; i++) {if(arr[i] > max) {max = arr[i];}}return max;}```5. 试题五:编写一个函数,将一个字符串逆序输出。
答案:```cvoid reverseString(char str[]) {int length = strlen(str);for(int i = length - 1; i >= 0; i--) {printf("%c", str[i]);}```通过以上试题及其答案的讲解,读者可以加深对C语言函数的理解,并且能够熟练运用这些函数来解决实际的编程问题。
c语言中函数试题及答案一、选择题1. 在C语言中,以下哪个关键字用于定义函数?A. classB. functionC. defD. int答案:D2. 函数的返回类型是什么?A. 函数执行后返回的数据类型B. 函数的名称C. 函数的参数D. 函数的调用方式答案:A3. 在C语言中,以下哪个函数用于计算两个整数的和?A. strcatB. strcmpC. strcatD. sum答案:D(假设sum是一个自定义的函数)二、填空题1. 在C语言中,定义函数的关键字是________。
答案:int2. 函数的返回值是通过________关键字返回的。
答案:return3. 函数的参数列表定义了函数调用时需要传递的________。
答案:值三、简答题1. 请简述C语言中函数的定义格式。
答案:在C语言中,函数的定义格式通常如下:```returnType functionName(parameterList) {// function body}```其中`returnType`是函数的返回类型,`functionName`是函数的名称,`parameterList`是函数的参数列表,`function body`是函数的执行体。
2. 请解释C语言中函数的调用过程。
答案:C语言中函数的调用过程包括以下步骤:- 调用者准备参数并调用函数。
- 函数接收参数并执行函数体。
- 函数计算结果并通过return语句返回。
- 调用者接收返回值并继续执行。
四、编程题1. 编写一个C语言函数,计算两个整数的和并返回结果。
答案:```cint sum(int a, int b) {return a + b;}```调用示例:```cint result = sum(5, 10);printf("The sum is %d", result); ```。
函数一、选择题1.在c 语言中以下不正确的说法是:()A.实参可以是常量、变量、或表达式B.形参可以是常量、变量或表达式C.实参可以为任意类型D.形参应与其对应的实参类型一致2.以下程序有语法性错误,有关错误原因的正确说法是:()int main(){ int G=5,k;void prt_char();……k=prt_char(G);……}A.语句 void prt_char();有错,它是函数调用语句,不能用 void 说明B.变量名不能使用大写字母C.函数说明和函数调用语句之间有矛盾D.函数名不能使用下划线3.以下正确的说法是:()A.函数的定义可以嵌套,但函数的调用不可以嵌套B.函数的定义不可以嵌套,但函数的调用可嵌套C.函数的定义和调用均不可以嵌套D.函数的定义和调用均可以嵌套4.若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是:()A)函数调用可以作为独立的语句存在B)函数调用可以作为一个函数的实参C)函数调用可以出现在表达式中D)函数调用可以作为一个函数的形参5.以下所列的各函数首部中,正确的是:()A、 void play(var :Integer,var b:Integer)B、 void play(int a,b)C、 void play(int a,int b)D、 Sub play(a as integer,b as integer)6.在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是:()A、地址传递B、单向值传递C、由实参传给形参,再由形参传回实参D、传递方式由用户指定7.有以下程序void fun (int a,int b,int c){ a=456; b=567; c=678;}int main(){ int x=10, y=20,z=30;fun (x,y,z);printf("%d,/%d,%d\n",x,y,z);return 0;}输出结果是:()A、30,20,10B、10,20,30C、456,567,678D、678,567,4568.下述函数定义形式正确的是()。
一、单选题1、下面对函数的叙述,正确的是( )。
A.函数的返回值是通过return语句获得的B.函数中没有return语句,说明不带回值C.函数不能嵌套定义D.函数中无论是否有return语句,都能返回正确值正确答案:C2、下面叙述中错误的是( )。
A.一般来说,函数的形参和实参的类型要一致B.若函数的定义出现在主调函数之前,则可以不必再加说明C.函数的形参和实参必须要使用相同名字的变量D.函数的形式参数,在函数未被调用时不被分配存储空间正确答案:C3、若函数的调用形式如下:f((x1,x2,x3),(y1,y2))则函数形参个数是()。
A.4B.2C.5D.3正确答案:B4、下列程序段中,有错误的是()。
A. int f(){int x;scanf("%d", &x);return x++, x+5;}B. int f2(int x){return (x>1?printf("Y"): putchar('N'));}C. void change(int x, int y){int t;t=x; x=y; y=t;}D.int main(){float a=2.6 , b;b=max(2.1, 3.6)=a++;printf("%f", a+b);}正确答案:D5、关于函数正确的说法是()。
A.主函数可以写在其他函数之后,函数内不可以嵌套定义函数B.主函数必须写在其他函数之前,函数内可以嵌套定义函数C.主函数必须在写其他函数之后,函数内可以嵌套定义函数D.主函数必须写在其他函数之前,函数内不可以嵌套定义函数正确答案:A6、关于函数原型,叙述错误的是()。
A.函数可以不必进行声明,可以放在程序的任意位置B.当自定义函数被放在了主调函数的后面,就需要在函数调用之前,加上函数的原型声明C.被调用函数在主调函数之前定义,可以省略函数原型声明D.所有函数定义放在main函数之前,可以省略原型声明正确答案:A二、判断题1、函数可以根据需要通过参数与调用函数之间进行数据传递。
C语言函数题库及答案第六部分函数一、单项选择题1.C语言中的函数返回值的类型是由(D)决定A.return语句中的表达式B.调用函数的主调函数C.调用函数时临时 D.定义函数时所指定的函数类型2.下面不正确的描述是(B )。
A.调用函数时,实参可以是表达式B.调用函数时,实参和形参可以共用内存单元C.调用函数时,将形参分配内存单元D.调用函数时,实参与形参的类型必须一致3.在C语言中,调用一个函数时,实参变量和形参变量之间的数据传递是( D )A.地址传递 B.值传递C.由实参传递给形参,并由形参传回给实参D.由用户指定传递方式4.下面的函数调用语句中含有( A )个实参int a,b,c;int sum(int x1,int x2);……total=sum((a,b),c);A.2 B.3 C.4 D.55.在C语言中( C )A.函数的定义可以嵌套,但函数的调用不可以嵌套B.函数的定义和调用均不可以嵌套C.函数的定义不可以嵌套,但是函数的调用可以嵌套D.函数的定义和调用均可以嵌套6.关于C语言中的return语句正确的是(C )A.只能在主函数中出现B.在每个函数中都必须出现C.可以在一个函数中出现多次D.只能在除主函数之外的函数中出现7.两个形参中,第一个形参为指针类型、第二个形参为整型,则对函数形参的说明有错误的是( D)A. int a(float x[],int n)B. int a(float *x,int n)C. int a(float x[10],int n)D.int a(float x,int n)8.在C语言中,函数的数据类型是指( A )A.函数返回值的数据类型B. 函数形参的数据类型C.调用该函数时的实参的数据类型D. 任意指定的数据类型9.已知如下定义的函数:fun1(a){ printf("\n%d",a);}则该函数的数据类型是( C )A.与参数a的类型相同B.void型C.整型D.无法确定10.定义一个函数实现交换x和y的值,并将结果正确返回。
第5章函数5.1典型考试题剖析5.1.1选择题【例1】下列程序执行后的结果是_______。
#include <stdio.h>f(int a){int b=0;static c=3;a=c++,b++;return(a);}main(){int a=2,i,k;for(i=0;i<2;i++)k=f(a++);printf("%d\n",k);}A) 3 B) 0 C) 5 D) 4✧考点:变量的作用域。
✧分析:此题函数f中的变量c是一个静态变量。
第一次调用函数时,使用的参数是a,值为2,进入子函数f内,变量b=0,c=3,然后语句“a=c++,b++;”是一个逗号表达式,不是赋值表达式,a被赋的值是c的值,不同逗号表达式的值,所以a=3,此时c的值同时变为4;第二次调用函数,使用的参数是a,值为3,进入子函数内,变量b=0,c=4(这是静态变量的特性)。
✧答案:D【例2】下面程序的输出是_______。
int w=3;fun(int k);main(){int w=10;printf("%d\n",fun(5)*w);}fun(int k){ if (k==0)return(w);return(fun(k-1)*k);}A) 360 B) 3600 C) 1080 D) 1200✧考点:函数的递归调用和全局变量。
✧分析:此题涉及到了函数的递归调用和全局变量的用法,最容易出错的地方是变量w,程序首先定义了全局变量w,并赋了初值为3,然后在主函数中又定义了一个局部变量w,并赋初值为10,在子函数中引用了变量w,一定要认清这个变量是全局变量w的值而不是主函数中局部变量w 的值。
✧答案:B【例3】有以下程序#include <stdio.h>int abc(int u,int v);main(){int a=24,b=16,c;c=abc(a,b);printf("%d\n",c);}int abc(int u,int v){int w;while(v){ w=u%v;u=v;v=w;}return(u);}输出结果为。
A) 6 B) 7 C) 8 D) 9✧考点:函数的返回值。
✧分析:进入子函数后,循环共执行了三次:第一次结束后w=8,u=16,v=8;第二次结束后w=8,u=8,v=8;第三次结束后w=0,u=8,v=0。
✧答案:C【例4】以下程序运行后,输出结果是_______。
int d=1;fun(int p){ int d=5;d+=p++;printf("%d" ,d);}main(){int a=3;fun(a);d+=a++;printf("%d\n" ,d);}A) 8 4 B) 9 9 C) 9 5 D) 4 4✧考点:全局变量与局部变量。
✧分析:此题应注意全局变量d和函数fun中定义的局部变量d的作用范围,在子函数fun中全局变量d不起作用。
✧答案:A【例5】以下程序的输出结果是_______。
int d=1;fun(int p){ static int d=5;d+=p;printf("%d" ,d);return(d);}main(){int a=3;printf("%d\n" ,fun(a+fun(d)));}A) 699 B) 669 C) 61515 D) 6615✧考点:函数的调用。
✧分析:先求fun(d)的值,调用参数为全局变量d,其值为1,进入子函数,参数d的值传给形参p,p的值为1,由于是第一次进入子函数,故静态变量d的值即为初始化的值5,执行语句“d+=p;”,得到d=6,输出第一个数值6,退出fun(d)的调用,返回函数值6到主函数中。
再求fun(a+fun(d))的值,调用参数为“a+fun(d)”,其值为9,进入子函数,由于不是第一次进入子函数,故静态变量d的值是上一次调用后的结果,为6,执行语句“d+=p;”,得到d=15,输出数值15,退出fun(d)的调用,返回函数值15到主函数中。
执行主函数中的输出语句,输出函数调用fun(a+fun(d))的结果为15。
✧答案:C【例6】有如下函数调用语句:func(rec1,rec2+rec3,(rec4,rec5));该函数调用语句中,含有的实参个数是_______。
A) 3 B) 4 C) 5 D) 有语法错✧考点:实参。
✧分析:函数中有三个参数,分别是:一个变量rec1,一个算术运算表达式rec2+rec3,一个逗号表达式(rec4,rec5)。
✧答案:A【例7】以下程序的输出结果是_______。
int a,b;void fun(){a=100;b=200;}main(){int a=5,b=7;fun();printf("%d%d\n" ,a,b);}A) 100200 B) 57 C) 200100 D) 75✧考点:全局变量与局部变量。
✧分析:在主函数中全局变量a和b被同名的局部变量所覆盖,所以主函数中引用的a和b是局部变量。
✧答案:B【例8】以下程序的输出结果是_______ 。
int f(){ static int i=0;int s=1;s+=i;i++;return s;}main(){int i,a=0;for (i=0;i<5;i++)a+=f();printf("%d\n",a);}A) 20 B) 24 C) 25 D) 15✧考点:无参函数的调用。
✧分析:这是一个无参函数的调用,在函数f中i是一个静态变量,而s是一个局部变量,s的初值永远是1,而i的值第一次调用时是0,执行了i++之后,第二次调用时就是1,直到4。
✧答案:D【例9】以下程序的输出结果是_______。
f(int b[],int m,int n){ int i,s=0;for (i=m;i<n;i=i+2)s=s+b[i];return(s);}main(){int x,a[]={1,2,3,4,5,6,7,8,9};x=f(a,3,7);printf("%d\n",x);}A) 10 B) 18 C) 8 D) 15✧考点:数组的调用。
✧分析:已知一维数组有9个值,用子函数求得从下标3开始到下标6的这4个数中下标为3,5这几个数之和。
✧答案:A【例10】有以下程序int f(int n){ if (n==1)return(1);elsereturn(f(n-1)+1);}main(){int i,j=0;for (i=1;i<3;i++)j+=f(i);printf("%d\n",j);}程序运行后的输出结果是______。
A) 4 B) 3 C) 2 D) 1✧考点:递归调用。
✧分析:此题是一个递归调用的题目,在子函数中当n!=1时,递归调用当前函数 f(n-1)。
✧答案:B【例11】有以下程序void f(int x ,int y){ int t;if (x<y){t=x;x=y;y=t;}}main(){int a=4,b=3,c=5;f(a,b);f(a,c);f(b,c);printf("%d,%d,%d\n",a,b,c);}执行后输出的结果是_______ 。
A) 3,4,5 B) 5,3,4 C) 5,4,3 D) 4,3,5✧考点:函数的返回值。
✧分析:此题想通过两两比较,求a,b,c三者之间从大到小的顺序,但是由于子函数没有返回值,所以子函数的结果不影响主函数,主函数中a,b,c的值依旧还是初始值4,3,5。
✧答案:D【例12】下列函数定义中,会出现编译错误的是_______A) max(int x, int y, int *z) B) int max(int x,y){*z=x>y?x:y;}{ int z;z=x>y?x:y;return z;}C) max(int x, int y) D)int max(int x, int y){ int z; { return(x>y?x:y);}z=x>y?x:y;return(z);}✧考点:子函数的格式。
✧分析:此题考的是子函数的格式,在子函数参数表中,要求每个变量都必须定义一个类型,而B中x,y一起定义为int ,应该写成int x,int y。
✧答案:B5.1.2填空题【例1】下面的程序通过函数average计算数组中各元素的平均值,请填空。
float average(int pa[],int n){int i;float avg=0.0;for (i=0;i<n;i++)avg=avg+ 【1】 ;avg= 【2】 ;return(avg);}main(){int i,a[5]={2,4,6,8,10};float mean;mean=average(a,5);printf("mean=%f\n",mean);}✧考点:函数参数(数组)的调用。
✧分析:程序的功能是求5个数的平均值。
子函数的功能是求平均数,pa是传递过来的数组,n指明了求平均值的数据的个数。
第一个空位于循环内,是求和的语句,第二个空是求平均值。
✧答案:【1】pa[i] 【2】avg/n【例2】若函数fun的类型为void,且有以下定义和调用语句:#define M 50main(){int a[M];fun(a);}定义fun函数的首部可以用三种不同的形式,请写出这三种形式:【1】、【2】、【3】。
(注意,1) 形参的名字请用q,2)使用同一种风格)。
✧考点:函数和原型。
✧分析:此题考的是函数的原型。
✧答案:【1】void fun(int q[]) 【2】void fun(int q[M]) 【3】void fun(int *q)【例3】以下程序的输出结果为___ ____。
#include <stdio.h>int fun(int x,int y){static int m=0,i=2;i+=m+1;m=i+x+y;return m;}main(){int j=4,m=1,k;k=fun(j,m);printf("%d",k);k=fun(j,m);printf("%d\n",k);}✧考点:静态局部变量。
✧分析:注意子函数中的变量m和I是静态局部变量,故第二次调用子函数时,m和I的值分别是8和3,而不是0和2。
✧答案:8 17【例4】以下程序输出的最后一个值是______。