内容正文:
编写说明:重庆市《计算机类考纲百套卷》依据重庆市《高等职业教育分类考试专业综合理论测试计算机类考试说明》编写,本套试卷共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的值没有发生变化?
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$$