《C语言程序设计》(六)函数 - 知识点训练卷 重庆市计算机类 考纲百套卷 第58卷

2024-08-09
| 2份
| 15页
| 145人阅读
| 2人下载

内容正文:

编写说明:重庆市《计算机类考纲百套卷》依据重庆市《高等职业教育分类考试专业综合理论测试计算机类考试说明》编写,本套试卷共88份分为三个部分,第一部分是根据考试说明的各章节的要求,编写了58份知识点训练卷,第二部分是针对每门课程的重点内容,编写的20份常考题训练卷,第三个部分是参考近几年重庆市计算机类专业理论考试真题,编写了10份专业综合训练卷。 本试卷是重庆市《计算机类考纲百套卷》的第58卷,是知识点训练卷,按考纲中《C语言程序设计》---(六)函数的5-8要求编写。其四点要求是:5.掌握函数的声明与调用方法;6.理解形式参数和实际参数的概念和关系;7.掌握函数的参数传递规则;说明:只要求基本数据类型作为参数。8.了解简单的主-子函数程序设计。 重庆市《计算机类考纲百套卷》 第58卷 C语言程序设计 (六)函数 知识点训练卷 考试时间60分钟 满分100分 班级 姓名 学号 成绩 一、填空题(本大题共15小题,每题2分,共30分) 1. 在C语言中,函数声明通常位于文件的开头或单独的头文件中,其目的是______。 【答案】提供函数原型,包括函数名、返回类型和参数列表 2. 函数调用时,需要提供与函数声明中定义的参数类型和数量相匹配的值,这些值被称为______。 【答案】实际参数 3. 在函数定义中,函数名后面的括号内列出的变量是______。 【答案】形式参数 4. 形式参数和实际参数之间的关系是,形式参数作为函数内部的局部变量,而实际参数的值被传递给这些局部变量。这种传递方式称为______。 【答案】值传递 5. 当一个基本数据类型的变量作为参数传递给函数时,该变量的值被复制到函数的形式参数中,这意味着函数内部对形式参数的修改不会影响到______。 【答案】实际参数 6. 如果需要在函数内部修改实际参数的值,应该使用______类型的参数。 【答案】指针 7. 函数的返回值是通过______关键字来实现的。 【答案】return 8. 在C语言中,如果函数没有返回值,其返回类型应该声明为______。 【答案】void 9. 函数的声明必须在函数调用之前出现,除非函数定义在调用之前,并且定义中包含了______。 【答案】函数原型 10. 一个函数可以返回多个值,通过将多个值存储在一个______中返回。 【答案】 结构体 11. 函数的递归调用是指函数在其定义内部调用______。 【答案】 本身 12. 在C语言中,函数的参数默认按照______顺序进行传递。 【答案】 从右到左 13. 当函数的参数是一个数组时,实际上是传递了数组的______。 【答案】 首地址 14. 如果函数需要返回一个数组,通常使用______来实现。 【答案】 指针 15. 主函数是每个C程序的入口点,其函数名为______。 【答案】 main 二、单项选择题(本大题共15小题,每题2分,共30分) 1.以下关于函数的说法中正确的是( )。 A.函数内可以定义其他函数 B.函数内可以调用其他函数 C.任何函数包括主函数都可以被调用 D.定义过的函数必须被调用 【答案】 B 2.如果一个函数定义时没有指定返回类型,则其返回类型是( )。 A.int B.float C.double D.void 【答案】 A 3.可以使用多种形式实现函数调用,以下形式中________是非法的。( ) A.函数语句 B.函数表达式 C.函数形参 D.函数实参 【答案】 C 4.以下关于数组作为函数参数传递的说法中,正确的是( )。 A.形参是数组时,既可传递数组元素,也可传递整个数组 B.形参是整型变量时,即可传递整型数组元素,也可传递整个整型数组 C.形参和实参都是数组时,是将实参的各个元素值传递给形参的对应数组元素 D.形参和实参都是数组时,是将实参的数组首地址传递给形参的数组首地址 【答案】 D 5.以下函数值的类型是( )。 fun(float x) { float y; y=3*x-4; return y; } A.int B.不确定 C.void D.float 【答案】A 6.在C语句中函数得隐含存储类型就是( )。 A.auto B.static C.extern D.无存储类别 【答案】C 7.以下函数调用语句中含有( )个实参。 fun ( (exp1,exp2) , (exp3,exp4,exp5) ) ; A.1 B.2 C.4 D.5 【答案】B 8.C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式为( )。 A.地址传递 B.单向值传递 C.由实参传给形参,再由形参传回给实参 D.由用户指定传递方式 【答案】B 9.建立函数的目的之一是( )。 A.提高程序的执行效率 B.提高程序的可读性 C.减少程序的篇幅 D.减少程序文件所占内存 【答案】B 10.函数调用时,当实参和形参都是简单变量时,他们之间数据传递的过程是( )。 A.实参将其地址传递给形参,并释放原先占用的存储单元 B.实参将其地址传递给形参,调用结束时形参再将其地址回传给实参 C.实参将其值传递给形参,调用结束时形参再将其值回传给实参 D.实参将其值传递给形参,调用结束时形参并不将其值回传给实参 【答案】D 11. 以下哪项是函数声明的正确方式?( ) A. int add(int a, int b) { ... } B. int add(int, int); { ... } C. void add(int a, int b) { ... } D. int add(int a, int b); 【答案】D 12. 假设有一个C语言函数int multiply(int x, int y),调用该函数时传入的参数x和y分别称为什么?( ) A. 形式参数和实际参数 B. 局部变量和全局变量 C. 静态变量和动态变量 D. 常量和变量 【答案】A 13. 如果一个函数的参数是基本数据类型,那么传递给该函数的参数将遵循哪种传递规则?( ) A. 引用传递 B. 值传递 C. 指针传递 D. 地址传递 【答案】B 14.下面程序段运行后的输出结果是( )(假设程序运行时输入5 3<回车>)。 #include <stdio.h> 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 ", a, b); } A.a=5,b=3 B.a=3,b=5 C.5,3 D.3,5 【答案】A 15.以下程序运行后的输出结果是( )。 #include <stdio.h> 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 ", r); } A.3 B.6 C.8 D.12 【答案】D 三、判断题(本大题共6小题,每题2分,共12分) 1. 在C语言中,函数声明必须放在函数调用的前面。( ) 【答案】× 2. 形式参数和实际参数的名称必须相同。( ) 【答案】× 3. 在函数调用时,基本数据类型的参数传递是按值传递的。( ) 【答案】√ 4. 如果一个函数没有返回值,那么它的返回类型可以省略。( ) 【答案】× 5. 在函数调用过程中,如果实际参数是数组名,那么传递的是数组的地址。( ) 【答案】√ 6. 主函数可以调用子函数,但子函数不能调用主函数。( ) 【答案】√ 四、程序填空题(本大题共2小题,每题8分,共16分) 1.#include <stdio.h> // 声明一个函数,用于计算两个整数的和 ______; int main() { int x = 5, y = 10; // 调用函数,并打印结果 printf("两数之和为:%d ", ______); return 0; } // 定义函数,实现两个整数的求和 int (int a, int b) { return a + b; } 【答案】 int add(int a, int b); // 填空1:函数声明 add(x, y) // 填空2:函数调用 2.#include <stdio.h> // 声明一个函数,用于交换两个整数的值 void swap(______); int main() { int m = 100, n = 200; // 调用函数,交换m和n的值 swap(______); printf("交换后的m:%d, n:%d ", m, n); return 0; } // 定义函数,实现两个整数值的交换 void swap(int *a, int *b) { int temp = *a; *a = *b; *b = temp; } 【答案】 int *a, int *b // 填空1:函数声明,形式参数为指针类型 &m, &n // 填空2:函数调用,传递实际参数的地址 五、阅读程序题(本大题共12分) 1.阅读下面的C语言代码段,并回答问题。 #include <stdio.h> // 函数声明 void modifyValue(int x); int main() { int a = 10; printf("调用modifyValue之前,a的值是:%d ", a); // 调用函数 modifyValue(a); printf("调用modifyValue之后,a的值是:%d ", a); return 0; } // 函数定义 void modifyValue(int x) { x = x * 2; } (1)请问在调用modifyValue(a);之前,变量a的值是多少? (2)请问在调用modifyValue(a);之后,变量a的值是多少? (3)为什么在调用modifyValue(a);之后,变量a的值没有发生变化? 【答案】 (1)在调用modifyValue(a);之前,变量a的值是10。 (2)在调用modifyValue(a);之后,变量a的值仍然是10。 (3)变量a的值没有发生变化,因为在函数modifyValue中,参数x是通过值传递的方式传递给函数的。这意味着在函数内部对x所做的任何修改都不会影响原始变量a。函数modifyValue内部对x的赋值操作仅改变了x在函数作用域内的副本,而不会影响main函数中a的值。 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $$ 编写说明:重庆市《计算机类考纲百套卷》依据重庆市《高等职业教育分类考试专业综合理论测试计算机类考试说明》编写,本套试卷共88份分为三个部分,第一部分是根据考试说明的各章节的要求,编写了58份知识点训练卷,第二部分是针对每门课程的重点内容,编写的20份常考题训练卷,第三个部分是参考近几年重庆市计算机类专业理论考试真题,编写了10份专业综合训练卷。 本试卷是重庆市《计算机类考纲百套卷》的第58卷,是知识点训练卷,按考纲中《C语言程序设计》---(六)函数的5-8要求编写。其四点要求是:5.掌握函数的声明与调用方法;6.理解形式参数和实际参数的概念和关系;7.掌握函数的参数传递规则;说明:只要求基本数据类型作为参数。8.了解简单的主-子函数程序设计。 重庆市《计算机类考纲百套卷》 第58卷 C语言程序设计 (六)函数 知识点训练卷 考试时间60分钟 满分100分 班级 姓名 学号 成绩 一、填空题(本大题共15小题,每题2分,共30分) 1. 在C语言中,函数声明通常位于文件的开头或单独的头文件中,其目的是______。 2. 函数调用时,需要提供与函数声明中定义的参数类型和数量相匹配的值,这些值被称为______。 3. 在函数定义中,函数名后面的括号内列出的变量是______。 4. 形式参数和实际参数之间的关系是,形式参数作为函数内部的局部变量,而实际参数的值被传递给这些局部变量。这种传递方式称为______。 5. 当一个基本数据类型的变量作为参数传递给函数时,该变量的值被复制到函数的形式参数中,这意味着函数内部对形式参数的修改不会影响到______。 6. 如果需要在函数内部修改实际参数的值,应该使用______类型的参数。 7. 函数的返回值是通过______关键字来实现的。 8. 在C语言中,如果函数没有返回值,其返回类型应该声明为______。 9. 函数的声明必须在函数调用之前出现,除非函数定义在调用之前,并且定义中包含了______。 10. 一个函数可以返回多个值,通过将多个值存储在一个______中返回。 11. 函数的递归调用是指函数在其定义内部调用______。 12. 在C语言中,函数的参数默认按照______顺序进行传递。 13. 当函数的参数是一个数组时,实际上是传递了数组的______。 14. 如果函数需要返回一个数组,通常使用______来实现。 15. 主函数是每个C程序的入口点,其函数名为______。 二、单项选择题(本大题共15小题,每题2分,共30分) 1.以下关于函数的说法中正确的是( )。 A.函数内可以定义其他函数 B.函数内可以调用其他函数 C.任何函数包括主函数都可以被调用 D.定义过的函数必须被调用 2.如果一个函数定义时没有指定返回类型,则其返回类型是( )。 A.int B.float C.double D.void 3.可以使用多种形式实现函数调用,以下形式中________是非法的。( ) A.函数语句 B.函数表达式 C.函数形参 D.函数实参 4.以下关于数组作为函数参数传递的说法中,正确的是( )。 A.形参是数组时,既可传递数组元素,也可传递整个数组 B.形参是整型变量时,即可传递整型数组元素,也可传递整个整型数组 C.形参和实参都是数组时,是将实参的各个元素值传递给形参的对应数组元素 D.形参和实参都是数组时,是将实参的数组首地址传递给形参的数组首地址 5.以下函数值的类型是( )。 fun(float x) { float y; y=3*x-4; return y; } A.int B.不确定 C.void D.float 6.在C语句中函数得隐含存储类型就是( )。 A.auto B.static C.extern D.无存储类别 7.以下函数调用语句中含有( )个实参。 fun ( (exp1,exp2) , (exp3,exp4,exp5) ) ; A.1 B.2 C.4 D.5 8.C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式为( )。 A.地址传递 B.单向值传递 C.由实参传给形参,再由形参传回给实参 D.由用户指定传递方式 9.建立函数的目的之一是( )。 A.提高程序的执行效率 B.提高程序的可读性 C.减少程序的篇幅 D.减少程序文件所占内存 10.函数调用时,当实参和形参都是简单变量时,他们之间数据传递的过程是( )。 A.实参将其地址传递给形参,并释放原先占用的存储单元 B.实参将其地址传递给形参,调用结束时形参再将其地址回传给实参 C.实参将其值传递给形参,调用结束时形参再将其值回传给实参 D.实参将其值传递给形参,调用结束时形参并不将其值回传给实参 11. 以下哪项是函数声明的正确方式?( ) A. int add(int a, int b) { ... } B. int add(int, int); { ... } C. void add(int a, int b) { ... } D. int add(int a, int b); 12. 假设有一个C语言函数int multiply(int x, int y),调用该函数时传入的参数x和y分别称为什么?( ) A. 形式参数和实际参数 B. 局部变量和全局变量 C. 静态变量和动态变量 D. 常量和变量 13. 如果一个函数的参数是基本数据类型,那么传递给该函数的参数将遵循哪种传递规则?( ) A. 引用传递 B. 值传递 C. 指针传递 D. 地址传递 14.下面程序段运行后的输出结果是( )(假设程序运行时输入5 3<回车>)。 #include <stdio.h> 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 ", a, b); } A.a=5,b=3 B.a=3,b=5 C.5,3 D.3,5 15.以下程序运行后的输出结果是( )。 #include <stdio.h> 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 ", r); } A.3 B.6 C.8 D.12 三、判断题(本大题共6小题,每题2分,共12分) 1. 在C语言中,函数声明必须放在函数调用的前面。( ) 2. 形式参数和实际参数的名称必须相同。( ) 3. 在函数调用时,基本数据类型的参数传递是按值传递的。( ) 4. 如果一个函数没有返回值,那么它的返回类型可以省略。( ) 5. 在函数调用过程中,如果实际参数是数组名,那么传递的是数组的地址。( ) 6. 主函数可以调用子函数,但子函数不能调用主函数。( ) 四、程序填空题(本大题共2小题,每题8分,共16分) 1.#include <stdio.h> // 声明一个函数,用于计算两个整数的和 ______; int main() { int x = 5, y = 10; // 调用函数,并打印结果 printf("两数之和为:%d ", ______); return 0; } // 定义函数,实现两个整数的求和 int (int a, int b) { return a + b; } 2.#include <stdio.h> // 声明一个函数,用于交换两个整数的值 void swap(______); int main() { int m = 100, n = 200; // 调用函数,交换m和n的值 swap(______); printf("交换后的m:%d, n:%d ", m, n); return 0; } // 定义函数,实现两个整数值的交换 void swap(int *a, int *b) { int temp = *a; *a = *b; *b = temp; } 五、阅读程序题(本大题共12分) 1.阅读下面的C语言代码段,并回答问题。 #include <stdio.h> // 函数声明 void modifyValue(int x); int main() { int a = 10; printf("调用modifyValue之前,a的值是:%d ", a); // 调用函数 modifyValue(a); printf("调用modifyValue之后,a的值是:%d ", a); return 0; } // 函数定义 void modifyValue(int x) { x = x * 2; } (1)请问在调用modifyValue(a);之前,变量a的值是多少? (2)请问在调用modifyValue(a);之后,变量a的值是多少? (3)为什么在调用modifyValue(a);之后,变量a的值没有发生变化? 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $$

资源预览图

《C语言程序设计》(六)函数 - 知识点训练卷 重庆市计算机类 考纲百套卷 第58卷
1
《C语言程序设计》(六)函数 - 知识点训练卷 重庆市计算机类 考纲百套卷 第58卷
2
《C语言程序设计》(六)函数 - 知识点训练卷 重庆市计算机类 考纲百套卷 第58卷
3
所属专辑
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。