C语言函数习题及答案
- 格式:doc
- 大小:119.50 KB
- 文档页数:23
一、选择题1.以下正确的说法是(C)。
建立函数的目的之一是A)提高程序的执行效率。
B)提高程序的可读性。
C)减少程序的篇幅D)减少程序文件所占的内存2.以下正确的说法是(B)。
A)用户若需调用标准库函数,调用前必须重新定义。
B)用户可以重新定义标准库函数,若如此,该函数将失去原有含义C)系统根本不允许用户重新定义标准库函数D)用户若需调用标准库函数,调用前不必使用预编译命令将该函数所在文件包含到用户源文件中,系统自动去调。
3.以下正确的函数定义形式是(A)。
A)double fun(int x, int y)B)d ouble fun(int x; int y)C)d ouble fun(int x, int y);D)double fun(int x,y);4.以下正确的说法是(A)。
在C语言中A)实参和与其对应的形参各占用独立的存储单元B)实参和与其对应的形参共占用一个存储单元C)只有当实参和与其对应的形参同名时才共占用存储单元D)形参时虚拟的,不占用存储单元5.若调用一个函数,且此函数中没有return语句,则正确的说法是(A)。
该函数A)没有返回值B)返回若干个系统默认值C)能返回一个用户所希望的函数值D)返回一个不确定的值6.以下正确的说法是(C)。
A)定义函数时,形参的类型说明可以放在函数体内B)r eturn后边的值不能为表达式C)如果函数值的类型与返回值的类型不一致,以函数值类型为准D)如果形参与实参的类型不一致,以实参类型为准7.C语言规定,简单变量作实参时,它和对应形参之间的数据传递方式是(B)。
A)地址传递B)单向值传递实参传给形参C)由实参传给形参,再由形参传回给实参D)由用户指定传递方式8.以下程序有语法性的错误,有关错误原因的正确的说法是(C)。
main(){ int G=5, k;void prt_char(); void是不返回值,但却有k=prt_char(G)…..k=prt_char(G);…..}A)语句void prt_char();有错,它是函数调用语句,不能用void说明B)变量名不能用大写字母C)函数说明和函数调用语句之间有矛盾D)函数名不能使用下划线9.C语言允许函数值类型缺省定义,此时该函数值隐含的类型是(B)。
1、以下正确的说法是( B )(A) 用户若需要调用标准库函数,调用前必须重新定义(B) 用户可以重新定义标准库函数,若如此,该函数将失去原有含义(C) 系统根本不允许用户重新定义标准库函数(D) 用户若需调用标准库函数,调用前不必使用预编译命令将该函数所在文件包括到用户源文件中,系统自动去调2、以下正确的函数声明形式是( A )(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);3、以下正确的函数形式是( D )(A) double fun(int x, int y) { z=x+y; return z;}(B) fun(int x,y) { int z; return z;}(C) fun(x,y) { int x,y; double z; z=x+y; return z;}(D) double fun(int x, int y) { double z; z=x+y; return z;}4、以下正确的说法是( A )在C语言中(A) 实参和与其对应的形参各占用独立的存储单元(B) 实参和与其对应的形参共占用一个存储单元(C) 只有当实参和与其对应的形参同名时才共占用存储单元(D) 形参是虚拟的,不占用存储单元5、若调用一个函数,且此函数中没有return语句,则正确的说法是( A )该函数(A) 没有返回值(B) 返回若干个系统默认值(C) 能返回一个用户所希望的函数值(D) 返回一个不确定的值6、以下不正确的说法是( B )C语言规定(A) 实参可以是常量、变量和表达式(B) 形参可以是常量、变量和表达式(C) 实参可以为任意类型(D) 形参应与其对应的实参类型一致7、以下正确的说法是( C )(A) 定义函数时,形参的类型说明可以放在函数体内(B) return后边的值不能为表达式(C) 如果函数值的类型与返回值类型不一致,以函数值类型为准(D) 如果形参与实参的类型不一致,以实参类型为准8、C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是( B )(A) 地址传递(B) 单向值传递(C) 由实参传给形参,再由形参传回给实参(D) 由用户指定传递方式9、以下程序有语法性错误,有关错误原因的正确说法是( C )void main(){int G=5,k;void prt_char();......k=prt_char(G);......}(A) 语句void prt_char(); 有错,它是函数调用语句,不能用void说明(B) 变量名不能使用大写字母(C) 函数说明和函数调用之间有矛盾(D) 函数名不能使用下划线10、C语言允许函数值类型缺省定义,此时该函数值隐含的类型是( B )(A) float型(B) int型(C) long型(D) double型11、C语言规定,函数返回值的类型是由( D )(A) return语句中的表达式类型所决定(B) 调用该函数时的主调函数类型所决定(C) 调用该函数时系统临时决定(D) 在定义该函数时所指定的函数类型所决定12、下面函数调用语句含有实参的个数为( B )func((exp1,exp2),(exp3,exp4,exp5));(A) 1(B) 2(C) 4(D) 513、以下错误的描述是( D )函数调用可以(A) 出现在执行语句中(B) 出现在一个表达式中(C) 做为一个函数的实参(D) 做为一个函数的形参14、以下程序的功能是计算函数F(x,y,z)=(x+y)/(x-y)+(z+y)/(z-y)的值,请选择填空。
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。
1、简单变量做实参时,它和对应形参之间的数据传递方式是()。
A.地址传递B.单向值传递C.由实参传给形参,再由形参传回给实参D.由用户指定的传递方式正确答案:B2、若函数的调用形式如下:f((x1,x2,x3),(y1,y2))则函数形参个数是()。
A.5B.2C.3D.4正确答案:B3、下列程序段中,有错误的是()。
A. void change(int x, int y){int t;t=x; x=y; y=t;}B. int f2(int x){return (x>1?printf("Y"): putchar('N'));}C. int f(){int x;scanf("%d", &x);return x++, x+5;}D.int main(){float a=2.6 , b;b=max(2.1, 3.6)=a++;printf("%f", a+b);}正确答案:D4、以下说法正确的是()。
A.C程序中,被调用的函数必须在main()函数中定义B.C程序中的main()函数必须放在程序的开始处C.C程序总是从第一个定义的函数开始执行D.C程序总是从主函数main()开始执行正确答案:D5、关于函数原型,叙述错误的是()。
A.当自定义函数被放在了主调函数的后面,就需要在函数调用之前,加上函数的原型声明B.所有函数定义放在main函数之前,可以省略原型声明C.函数可以不必进行声明,可以放在程序的任意位置D.被调用函数在主调函数之前定义,可以省略函数原型声明正确答案:C6、下列函数定义中,正确的是()。
A.int max1(int a,b){return a>b?a:b;}B.int max1(a,b){int a,b;return a>b?a:b;}C.int max1(int a,int b){return a>b?a:b;}D.int max1(int a,int b);{return a>b?a:b;}正确答案:C7、以下函数返回值的类型是( )。
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); ```。
C语言章节习题目录C语言章节习题 (1)第一章C语言概述 (2)第三章数据类型、运算符和表达式 (3)第四章顺序结构程序设计 (4)第五章选择结构程序设计 (10)第六章循环结构程序设计 (17)第7章数组习题 (25)第8章函数习题 (34)第九章预处理 (41)第十章指针 (42)第一章C语言概述一、选择题:1、一个C程序的执行是从(A)。
A本程序的main函数开始,到main函数结束B本程序文件的第一个函数开始,到本程序文件的最后一个函数结束C本程序的main函数开始,到本程序文件的最后一个函数结束D本程序文件的第一个函数开始,到本程序main函数结束2、在C 语言中,每个语句必须以(D)结束.A. 回车符 B。
冒号 C。
逗号 D. 分号3、C 语言规定:在一个源程序中,main函数的位置(C)。
A. 必须在最开始B。
必须在系统调用的库函数的后面C. 可以任意 D。
必须在最后4、一个C 语言程序是由(B).A. 一个主程序和若干子程序组成B。
函数组成C. 若干过程组成D。
若干子程序组成5、下列说法中错误的是(D).A。
主函数可以分为两个部分:主函数说明部分和主函数体B。
主函数可以调用任何非主函数的其他函数C。
任何非主函数可以调用其他任何非主函数D。
程序可以从任何非主函数开始执行6、用C 语言编写的源文件经过编译,若没有产生编译错误,则系统将(B)。
A。
生成可执行目标文件 B。
生成目标文件C. 输出运行结果 D。
自动保存源文件二、填空题:1、C 语言只有(37)个关键字和 (9)种控制语句。
2、每个源程序有且只有一个(main)函数,系统总是从该函数开始执行C语言程序。
3、C 语言程序的注释可以出现在程序中的任何地方,它总是以(\*) 符号作为开始标记,以(*\)符号作为结束标记。
4、C 语言中,输入操作是由库函数(scanf)完成的,输出操作是由库函数(printf)完成的。
5、系统默认的C 语言源程序文件的扩展名是(。
c语言编写函数笔试题及答案C语言编写函数笔试题及答案1. 题目一:计算阶乘编写一个函数,计算并返回一个整数的阶乘。
阶乘定义为:n! = n * (n-1) * (n-2) * ... * 1,其中n! = 1,当n=0。
函数原型:```clong long factorial(int n);```答案:```c#include <stdio.h>long long factorial(int n) {if (n == 0) return 1;long long result = 1;for (int i = 1; i <= n; i++) {result *= i;}return result;}int main() {int num;printf("Enter a number: ");scanf("%d", &num);printf("Factorial of %d is %lld\n", num, factorial(num)); return 0;}```2. 题目二:字符串反转编写一个函数,接受一个字符串作为参数,将其反转并返回。
函数原型:```cchar* reverseString(char* str);```答案:```c#include <stdio.h>#include <string.h>char* reverseString(char* str) {int length = strlen(str);char temp;for (int i = 0; i < length / 2; i++) {temp = str[i];str[i] = str[length - i - 1];str[length - i - 1] = temp;}return str;}int main() {char str[] = "Hello, World!";printf("Reversed string: %s\n", reverseString(str));return 0;}```3. 题目三:寻找数组中的最大值编写一个函数,接受一个整数数组和数组的长度作为参数,返回数组中的最大值。
第六部分函数一、单项选择题1.C语言中的函数返回值的类型是由(D)决定A.return语句中的表达式B.调用函数的主调函数C.调用函数时临时D.定义函数时所指定的函数类型2.下面不正确的描述是(B)。
A.调用函数时,实参可以是表达式B.调用函数时,实参和形参可以共用内存单元C.调用函数时,将形参分配内存单元D.调用函数时,实参与形参的类型必须一致3.在C语言中,调用一个函数时,实参变量和形参变量之间的数据传递是(D)A.地址传递B.值传递C.由实参传递给形参,并由形参传回给实参D.由用户指定传递方式4.下面的函数调用语句中含有(A)个实参inta,b,c;intsum(intx1,intx2);……total=sum((a,b),c);A.2B.3C.4 D.55.在C语言中(C)A.函数的定义可以嵌套,但函数的调用不可以嵌套B.函数的定义和调用均不可以嵌套C.函数的定义不可以嵌套,但是函数的调用可以嵌套D.函数的定义和调用均可以嵌套6.关于C语言中的return语句正确的是(C)A.只能在主函数中出现B.在每个函数中都必须出现C.可以在一个函数中出现多次D.只能在除主函数之外的函数中出现7.两个形参中,第一个形参为指针类型、第二个形参为整型,则对函数形参的说明有错误的是(D)A.inta(floatx[],intn)B.inta(float*x,intn)C.inta(floatx[10],intn)D.inta(floatx,intn)8.在C语言中,函数的数据类型是指(A)A.函数返回值的数据类型B.函数形参的数据类型C.调用该函数时的实参的数据类型D.任意指定的数据类型9.已知如下定义的函数:fun1(a){printf("\n%d",a);}则该函数的数据类型是(C)A.与参数a的类型相同B.void型C.整型D.无法确定10.定义一个函数实现交换x和y的值,并将结果正确返回。
函数习题一、选择题1. 一个完整的C源程序是【】。
A)要由一个主函数或一个以上的非主函数构成B)由一个且仅由一个主函数和零个以上的非主函数构成C)要由一个主函数和一个以上的非主函数构成D)由一个且只有一个主函数或多个非主函数构成2. 以下关于函数的叙述中正确的是【】。
A)C语言程序将从源程序中第一个函数开始执行B)可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行#C)C语言规定必须用main作为主函数名,程序将从此开始执行,在此结束D)main可作为用户标识符,用以定义任意一个函数3. 以下关于函数的叙述中不正确的是【】。
A)C程序是函数的集合,包括标准库函数和用户自定义函数B)在C语言程序中,被调用的函数必须在main函数中定义C)在C语言程序中,函数的定义不能嵌套D)在C语言程序中,函数的调用可以嵌套4. 在一个C程序中,【】。
A)main函数必须出现在所有函数之前B)main函数可以在任何地方出现、C)main函数必须出现在所有函数之后D)main函数必须出现在固定位置5. 若在C语言中未说明函数的类型,则系统默认该函数的数据类型是【】A)float B)longC)int D)double6. 以下关于函数叙述中,错误的是【】。
A)函数未被调用时,系统将不为形参分配内存单元B)实参与形参的个数应相等,且实参与形参的类型必须对应一致C)当形参是变量时,实参可以是常量、变量或表达式D)形参可以是常量、变量或表达式—7. C程序中各函数之间可以通过多种方式传递数据,下列不能用于实现数据传递的方式是【】。
A)参数的形实(哑实)结合B)函数返回值C)全局变量D)同名的局部变量8. 若函数调用时参数为基本数据类型的变量,以下叙述正确的是【】。
A)实参与其对应的形参共占存储单元B)只有当实参与其对应的形参同名时才共占存储单元C)实参与对应的形参分别占用不同的存储单元D)实参将数据传递给形参后,立即释放原先占用的存储单元\9. 函数调用时,当实参和形参都是简单变量时,他们之间数据传递的过程是【】。
A)实参将其地址传递给形参,并释放原先占用的存储单元B)实参将其地址传递给形参,调用结束时形参再将其地址回传给实参C)实参将其值传递给形参,调用结束时形参再将其值回传给实参D)实参将其值传递给形参,调用结束时形参并不将其值回传给实参10. 若函数调用时的实参为变量时,以下关于函数形参和实参的叙述中正确的是【】。
A)函数的实参和其对应的形参共占同一存储单元B)形参只是形式上的存在,不占用具体存储单元C)同名的实参和形参占同一存储单元D)函数的形参和实参分别占用不同的存储单元·11. 若用数组名作为函数调用的实参,则传递给形参的是【】。
A) 数组的首地址B) 数组的第一个元素的值C) 数组中全部元素的值D) 数组元素的个数12. 若函数调用时,用数组名作为函数的参数,以下叙述中正确的是【】。
A)实参与其对应的形参共用同一段存储空间B)实参与其对应的形参占用相同的存储空间C)实参将其地址传递给形参,同时形参也会将该地址传递给实参D)实参将其地址传递给形参,等同实现了参数之间的双向值的传递13. 如果一个函数位于C程序文件的上部,在该函数体内说明语句后的复合语句中定义了一个变量,则该变量【】。
A)为全局变量,在本程序文件范围内有效~B)为局部变量,只在该函数内有效C)为局部变量,只在该复合语句中有效D)定义无效,为非法变量14. C语言中函数返回值的类型是由【】决定。
A)return语句中的表达式类型B)调用函数的主调函数类型C)调用函数时临时D)定义函数时所指定的函数类型15. 若在一个C源程序文件中定义了一个允许其他源文件引用的实型外部变量a,则在另一文件中可使用的引用说明是【】。
A)extern static float a; B)float a;[C)extern auto float a; D)extern float a;16. 定义一个void型函数意味着调用该函数时,函数【】A)通过return返回一个用户所希望的函数值B)返回一个系统默认值C)没有返回值D)返回一个不确定的值17. 若定义函数float *fun( ),则函数fun的返回值为【】。
A)一个实数B)一个指向实型变量的指针C)一个指向实型函数的指针D)一个实型函数的入口地址18.C语言规定,程序中各函数之间【】。
*A)既允许直接递归调用也允许间接递归调用B)不允许直接递归调用也不允许间接递归调用C)允许直接递归调用不允许间接递归调用D)不允许直接递归调用允许间接递归调用19. 若程序中定义函数float myadd(float a, float b){ return a+b;}并将其放在调用语句之后,则在调用之前应对该函数进行说明。
以下说明中错误的是【】。
A)float myadd( float a,b);B)float myadd(float b, float a);`C)float myadd(float, float);D)float myadd(float a, float b);20. 关于以下fun函数的功能叙述中,正确的是【】。
int fun(char *s){char *t=s;while(*t++) ;t--;return(t-s);}/A) 求字符串s的长度B) 比较两个串的大小C) 将串s复制到串t D) 求字符串s所占字节数21. 下面程序段运行后的输出结果是【】(假设程序运行时输入5,3回车)int a, b;void swap( ){int t;t=a; a=b; b=t;}main()'{scanf("%d,%d", &a, &b);swap( );printf ("a=%d,b=%d\n",a,b);}A) a=5,b=3 B) a=3,b=5 C)5,3 D)3,522. 以下程序运行后的输出结果是【】。
fun(int a, int b){if(a>b) return a;\else return b;}main(){int x=3,y=8,z=6,r;r=fun(fun(x,y),2*z);printf("%d\n",r);}A) 3 B) 6 C) 8 D) 1223. 以下程序的运行结果是【】。
@void f(int a, int b){int t;t=a; a=b; b=t;}main(){int x=1, y=3, z=2;if(x>y) f(x,y);else if(y>z) f(x,z);?else f(x,z);printf("%d,%d,%d\n",x,y,z);}A) 1,2,3 B) 3,1,2C) 1,3,2 D) 2,3,124. 以下程序运行后的输出结果为【】。
int *f(int *x, int *y){if(*x<*y) return x;else return y;};main(){int a=7,b=8,*p,*q,*r;p=&a, q=&b;r=f(p,q);printf("%d,%d,%d\n",*p,*q,*r);}A) 7,8,8 B) 7,8,7C) 8,7,7 D) 8,7,825. 以下程序的正确运行结果是【】。
】#inclued<>main(){int k=4,m=1,p;p=func(k,m);printf(“%d”,p);p=func(k,m);printf(“%d\n”,p);}func(int a,int b)~{static int m=0,i=2;i+=m+1;m=i+a+b;return (m);}A)8,17 B)8,16 C)8,20 D)8,826. 以下程序的功能是计算函数F(x,y,z)=(x+z)/(y-z)+(y+2×z)/(x-2×z)的值,请将程序补充完整。
#include<>float f(float x,float y),{float value;value= 【1】;return value;}main(){float x,y,z,sum;scanf("%f%f%f",&x,&y,&z);sum=f(x+z,y-z)+f(【2】);…printf("sum=%f\n",sum);}【1】A)x/y B)x/z C)(x+z)/(y-z) D)x+z/y-z【2】A)y+2z,x-2z B)y+z,x-z C)x+z,y-z D)y+z*z,x-2*z27. 以下程序的功能是根据输入的字母,在屏幕上显示出字符数组中首字符与其相同的字符串,若不存在,则显示“No find,good bye!”,请将程序补充完整。
#include<>char PriStr(char ch1){int i=0,j=0;static char *ch2[]={"how are you", "glad to meet you","anything new","everything is fine","very well,thank you","see you tomorrow"};*while(i++<6)if(ch1==【1】){puts(【2】);j=1;}return j;}main(){(char ch;printf("\nPleae enter a char:");ch=getchar();ch=PriStr(ch);if(ch==【3】)puts("No find, good bye! ");}【1】A)ch2[i][0] B)ch2[i-1][0] C)*ch2[i] D)*ch2[i-1][0]【2】A)ch2[i] B)*ch2[i] C)*ch2[i-1] D)ch2[i-1]【3】A)’0’B)’48’C)0 D)30}28. 以下程序是将输入的一个整数反序打印出来,例如输入1234,则输出4321,输入-1234,则输出-4321。
请将程序补充完整。
void printopp(long int n){int i=0;if(n==0)return ;elsewhile(n){if(【1】) printf("%ld",n%10);%else printf("%ld",-n%10);i++;【2】;}}main(){long int n;scanf("%ld",&n);printopp(n);$printf("\n");}【1】A)n<0&&i==0 B)n<0||i==0 C)n>0&&i==0 D)n>0||i==0【2】A)n%=10 B)n%=(-10) C)n/=10 D)n/=)-10)29. 下面的程序用递归定义的方法实现求菲波拉契数列1、1、2、3、5、8、13、21……第7项的值fib(7),菲波拉契数列第1项和第2项的值都是1。