《C语言程序设计》(六)函数-知识点训练卷 吉林省高职分类考试《信息工程类(电子与信息类)考纲百套卷》第18卷

2025-02-24
| 2份
| 21页
| 115人阅读
| 2人下载

资源信息

学段 中职
学科 职教专业课
课程 C语言程序设计
教材版本 -
年级 -
章节 -
类型 题集-专项训练
知识点 函数
使用场景 中职复习
学年 2025-2026
地区(省份) 吉林省
地区(市) -
地区(区县) -
文件格式 ZIP
文件大小 185 KB
发布时间 2025-02-24
更新时间 2025-06-12
作者 胥豆豆老师
品牌系列 学易金卷·考纲百套卷
审核时间 2025-02-24
下载链接 https://m.zxxk.com/soft/50622480.html
价格 3.00储值(1储值=1元)
来源 学科网

内容正文:

编写说明:吉林省高职分类考试《信息工程类(电子与信息类)考纲百套卷》,依据吉林省高职分类(对口招生)考试各类专业综合卷考试科目及纲要(2021版),种信息工程类(电子与信息类)专业综合卷考试科目及纲要编写。本专辑共150份试卷两部分组成,第一部分是按考纲的考点要求编写的120份知识点训练卷,第二部分是针对6门课程的掌握要求,编写的30份常考题训练卷。 本试卷是吉林省高职分类考试《信息工程类(电子与信息类)考纲百套卷》的第18卷,是知识点训练卷。按“C语言程序设计”考试纲要(六)函数的六点知识点要求编写,其六点要求是: 1.掌握函数的定义和调用方法。2.理解形参和实参之间的关系。3.掌握函数的返回值。4.掌握函数的调用。5.理解函数的原型。6.了解函数的嵌套调用和递归调用。7.理解数组元素作为函数参数。8.了解多维数组作为函数参数。9.了解数组名作为函数参数。10.了解函数变量的作用域。11.了解变量的存储类型。 吉林省《信息工程类(电子与信息类)考纲百套卷》 第18卷 《C语言程序设计》 (六)函数-知识点训练卷 考试时间60分钟 满分100分 班级 姓名 学号 成绩 一、选择题(本大题共10小题,每小题2分,共20分) 1. 以下关于函数定义的说法,正确的是( ) A. 函数定义可以嵌套,即一个函数内部可以定义另一个函数 B. 函数定义时,形参的类型可以省略 C. 函数定义的一般形式为:返回值类型 函数名 (形参列表) {函数体} D. 函数定义时,函数名可以与变量名相同 答案:C 2. 若有函数定义: void func() { printf("Hello"); } 以下关于该函数返回值的说法,正确的是( ) A. 函数返回值为 Hello B. 函数返回值为 void 类型 C. 函数没有返回值 D. 函数返回值为一个随机值 答案:C 3. 以下函数调用语句中,实参的个数是( ) func(a + b, (c, d), e); A. 3 B. 4 C. 5 D. 语法错误 答案:A 4. 关于形参和实参的关系,以下说法错误的是( ) A. 形参在函数调用时才分配内存空间 B. 实参和形参可以同名 C. 实参和形参的数据类型必须一致 D. 函数调用结束后,形参的内存空间不会释放 答案:D 5. 已知函数原型为 int func(int a, int b);,以下调用该函数正确的是( ) A. func(3); B. func(3, 4, 5); C. func(3, 4); D. func(); 答案:C 6. 有如下函数: int func1(int a) { return a + 1; } int func2(int b) { return func1(b) * 2; } 这属于( ) A. 函数的嵌套调用 B. 函数的递归调用 C. 非法调用 D. 以上都不是 答案:A 7. 当数组名作为函数参数时,以下说法正确的是( ) A. 函数内部对数组元素的修改不会影响原数组 B. 传递的是数组的副本 C. 传递的是数组的首地址 D. 数组名作为参数和普通变量作为参数没有区别 答案:C 8. 有如下代码: #include <stdio.h> void func() { int a = 10; printf("%d ", a); } int main() { func(); // 此处能否访问变量 a // printf("%d ", a); return 0; } 关于变量 a 的作用域,以下说法正确的是( ) A. a 是全局变量,在 main 函数中可以访问 B. a 是局部变量,仅在 func 函数内部可以访问 C. a 是静态变量,在整个程序中都可以访问 D. a 的作用域是从定义处到文件末尾 答案:B 9. 已知函数 int func(int *arr, int n),以下调用该函数正确的是( ) A. int a[5] = {1, 2, 3, 4, 5}; func(a, 5); B. int a[5] = {1, 2, 3, 4, 5}; func(&a, 5); C. int a = 10; func(&a, 1); D. int a[5] = {1, 2, 3, 4, 5}; func(a[0], 5); 答案:A 10. 若有函数原型 void func(int arr[][3], int rows);,以下二维数组定义和调用正确的是( ) A. int arr[2][3] = {{1, 2, 3}, {4, 5, 6}}; func(arr, 2); B. int arr[2][] = {{1, 2, 3}, {4, 5, 6}}; func(arr, 2); C. int arr[][3] = {{1, 2}, {4, 5}}; func(arr, 2); D. int arr[2][4] = {{1, 2, 3, 4}, {5, 6, 7, 8}}; func(arr, 2); 答案:A 二、判断题(本大题共10小题,每小题2分,共20分) 1. 函数定义时,返回值类型可以省略,默认返回 int 类型。( ) 答案:正确 2. 形参是函数内部的局部变量,函数调用结束后,形参的内存空间会被释放。( ) 答案:正确 3. 函数可以有多个返回语句,但每次调用函数只能执行其中一个返回语句。( ) 答案:正确 4. 函数调用时,实参和形参之间的数据传递方式只有值传递。( ) 答案:错误 5. 函数原型只是为了让编译器知道函数的返回值类型和参数情况,不一定要和函数定义完全一致。( ) 答案:错误 6. 当数组元素作为函数参数时,是值传递,函数内部对参数的修改不会影响原数组元素。( ) 答案:正确 7. 数组名作为函数参数传递的是数组的首地址,函数内部可以通过该地址修改原数组的元素。( ) 答案:正确 8. 静态变量在程序运行期间只初始化一次,之后每次进入函数时,会保留上次的值。( ) 答案:正确 9. 函数的嵌套调用和递归调用本质上是一样的。( ) 答案:错误 10. 全局变量的作用域是从定义处到文件末尾,可以被文件内的所有函数访问。( ) 答案:正确 三、填空题(本大题共5小题,每题2分,共10分) 1. 函数定义的一般形式为:______ 函数名 (形参列表) {函数体}。 答案:返回值类型 2. 若函数返回值类型为 ______,表示该函数没有返回值。 答案:void 3. 函数 ______ 的作用是让编译器在调用函数前进行参数类型检查。 答案:原型 4. 当数组名作为函数参数时,传递的是数组的 ______。 答案:首地址 5. 若要在一个文件中使用另一个文件中定义的全局变量,需要使用 ______ 关键字进行声明。 答案:extern 四、读程序写结果题(本大题共5小题,每题5分,共25分) 1.以下程序的运行结果是______。 #include <stdio.h> void swap(int a, int b) { int temp = a; a = b; b = temp; } int main() { int x = 2, y = 4; swap(x, y); printf("%d %d ", x, y); return 0; } 答案:2 4 2.以下程序的运行结果是______。 #include <stdio.h> void modifyArray(int arr[], int n) { for (int i = 0; i < n; i++) { arr[i] *= 2; } } int main() { int arr[] = {1, 2, 3}; int size = sizeof(arr) / sizeof(arr[0]); modifyArray(arr, size); for (int i = 0; i < size; i++) { printf("%d ", arr[i]); } printf(" "); return 0; } 答案:2 4 6 3.以下程序的运行结果是______。 #include <stdio.h> int sum(int arr[], int n) { if (n == 0) { return 0; } else { return arr[n - 1] + sum(arr, n - 1); } } int main() { int arr[] = {1, 2, 3, 4}; int size = sizeof(arr) / sizeof(arr[0]); int result = sum(arr, size); printf("%d ", result); return 0; } 答案:10 4.以下程序的运行结果是______。 #include <stdio.h> int add(int a, int b) { return a + b; } int subtract(int a, int b) { return a - b; } int operate(int x, int y, int (*func)(int, int)) { return func(x, y); } int main() { int num1 = 10; int num2 = 5; int sum = operate(num1, num2, add); printf("两数之和为: %d ", sum); int difference = operate(num1, num2, subtract); printf("两数之差为: %d ", difference); return 0; } 答案: 两数之和为: 15 两数之差为: 5 5.以下程序的运行结果是______。 #include <stdio.h> void func(int a) { int b = 2; static int c = 3; a += b + c; b++; c++; printf("%d %d %d ", a, b, c); } int main() { int x = 1; func(x); func(x); return 0; } 答案: 6 3 4 7 3 5 五、编程题(本大题共5小题,每题5分,共25分) 1. 编写一个递归函数,用于计算斐波那契数列的第 n 项。斐波那契数列定义为:F(0) = 0, F(1) = 1,F(n)=F(n-1)+F(n-2)(n>1)。要求在 main 函数中接收用户输入的 n 值,调用递归函数计算结果并输出。 答案代码: #include <stdio.h> // 递归函数计算斐波那契数列第 n 项 int fibonacci(int n) { if (n == 0) return 0; if (n == 1) return 1; return fibonacci(n - 1) + fibonacci(n - 2); } int main() { int n; printf("请输入要计算的斐波那契数列的项数 n: "); scanf("%d", &n); int result = fibonacci(n); printf("斐波那契数列的第 %d 项是: %d ", n, result); return 0; } 2.编写一个函数 bubbleSort,使用数组名作为参数,对传入的整数数组进行冒泡排序。在 main 函数中初始化一个数组,调用 bubbleSort 函数进行排序并输出排序后的数组。 答案代码: #include <stdio.h> // 冒泡排序函数 void bubbleSort(int arr[], int size) { for (int i = 0; i < size - 1; i++) { for (int j = 0; j < size - i - 1; j++) { if (arr[j] > arr[j + 1]) { int temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } } int main() { int arr[] = {5, 3, 8, 4, 2}; int size = sizeof(arr) / sizeof(arr[0]); bubbleSort(arr, size); printf("排序后的数组是: "); for (int i = 0; i < size; i++) { printf("%d ", arr[i]); } printf(" "); return 0; } 3.编写一个递归函数 sumArray,用于计算数组元素的和。在 main 函数中初始化一个数组,调用 sumArray 函数计算并输出数组元素的和。 答案代码: #include <stdio.h> // 递归计算数组元素的和 int sumArray(int arr[], int size) { if (size == 0) return 0; return arr[size - 1] + sumArray(arr, size - 1); } int main() { int arr[] = {1, 2, 3, 4, 5}; int size = sizeof(arr) / sizeof(arr[0]); int result = sumArray(arr, size); printf("数组元素的和是: %d ", result); return 0; } 4.编写一个函数 factorial 用于计算一个数的阶乘,再编写一个函数 combination 调用 factorial 函数计算组合数 。在 main 函数中接收用户输入的 n 和 k 值,调用 combination 函数计算并输出结果。 答案代码: #include <stdio.h> // 计算阶乘 int factorial(int num) { if (num == 0 || num == 1) return 1; return num * factorial(num - 1); } // 计算组合数 int combination(int n, int k) { return factorial(n) / (factorial(k) * factorial(n - k)); } int main() { int n, k; printf("请输入 n 和 k 的值(n >= k): "); scanf("%d %d", &n, &k); int result = combination(n, k); printf("组合数 C(%d, %d) 是: %d ", n, k, result); return 0; } 5.编写一个函数 testScope,在函数内部定义一个普通局部变量 a、一个静态局部变量 b 和一个全局变量 c(在函数外部定义)。每次调用 testScope 函数时,输出这三个变量的值,并对它们进行修改。在 main 函数中多次调用 testScope 函数,观察变量值的变化。 答案代码: #include <stdio.h> int c = 10; // 全局变量 // 测试变量作用域和存储类型 void testScope() { int a = 1; // 普通局部变量 static int b = 2; // 静态局部变量 printf("a = %d, b = %d, c = %d ", a, b, c); a++; b++; c++; } int main() { testScope(); testScope(); testScope(); return 0; } 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 学科网(北京)股份有限公司 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $$ 编写说明:吉林省高职分类考试《信息工程类(电子与信息类)考纲百套卷》,依据吉林省高职分类(对口招生)考试各类专业综合卷考试科目及纲要(2021版),种信息工程类(电子与信息类)专业综合卷考试科目及纲要编写。本专辑共150份试卷两部分组成,第一部分是按考纲的考点要求编写的120份知识点训练卷,第二部分是针对6门课程的掌握要求,编写的30份常考题训练卷。 本试卷是吉林省高职分类考试《信息工程类(电子与信息类)考纲百套卷》的第18卷,是知识点训练卷。按“C语言程序设计”考试纲要(六)函数的六点知识点要求编写,其六点要求是: 1.掌握函数的定义和调用方法。2.理解形参和实参之间的关系。3.掌握函数的返回值。4.掌握函数的调用。5.理解函数的原型。6.了解函数的嵌套调用和递归调用。7.理解数组元素作为函数参数。8.了解多维数组作为函数参数。9.了解数组名作为函数参数。10.了解函数变量的作用域。11.了解变量的存储类型。 吉林省《信息工程类(电子与信息类)考纲百套卷》 第18卷 《C语言程序设计》 (六)函数-知识点训练卷 考试时间60分钟 满分100分 班级 姓名 学号 成绩 一、选择题(本大题共10小题,每小题2分,共20分) 1. 以下关于函数定义的说法,正确的是( ) A. 函数定义可以嵌套,即一个函数内部可以定义另一个函数 B. 函数定义时,形参的类型可以省略 C. 函数定义的一般形式为:返回值类型 函数名 (形参列表) {函数体} D. 函数定义时,函数名可以与变量名相同 2. 若有函数定义: void func() { printf("Hello"); } 以下关于该函数返回值的说法,正确的是( ) A. 函数返回值为 Hello B. 函数返回值为 void 类型 C. 函数没有返回值 D. 函数返回值为一个随机值 3. 以下函数调用语句中,实参的个数是( ) func(a + b, (c, d), e); A. 3 B. 4 C. 5 D. 语法错误 4. 关于形参和实参的关系,以下说法错误的是( ) A. 形参在函数调用时才分配内存空间 B. 实参和形参可以同名 C. 实参和形参的数据类型必须一致 D. 函数调用结束后,形参的内存空间不会释放 5. 已知函数原型为 int func(int a, int b);,以下调用该函数正确的是( ) A. func(3); B. func(3, 4, 5); C. func(3, 4); D. func(); 6. 有如下函数: int func1(int a) { return a + 1; } int func2(int b) { return func1(b) * 2; } 这属于( ) A. 函数的嵌套调用 B. 函数的递归调用 C. 非法调用 D. 以上都不是 7. 当数组名作为函数参数时,以下说法正确的是( ) A. 函数内部对数组元素的修改不会影响原数组 B. 传递的是数组的副本 C. 传递的是数组的首地址 D. 数组名作为参数和普通变量作为参数没有区别 8. 有如下代码: #include <stdio.h> void func() { int a = 10; printf("%d ", a); } int main() { func(); // 此处能否访问变量 a // printf("%d ", a); return 0; } 关于变量 a 的作用域,以下说法正确的是( ) A. a 是全局变量,在 main 函数中可以访问 B. a 是局部变量,仅在 func 函数内部可以访问 C. a 是静态变量,在整个程序中都可以访问 D. a 的作用域是从定义处到文件末尾 9. 已知函数 int func(int *arr, int n),以下调用该函数正确的是( ) A. int a[5] = {1, 2, 3, 4, 5}; func(a, 5); B. int a[5] = {1, 2, 3, 4, 5}; func(&a, 5); C. int a = 10; func(&a, 1); D. int a[5] = {1, 2, 3, 4, 5}; func(a[0], 5); 10. 若有函数原型 void func(int arr[][3], int rows);,以下二维数组定义和调用正确的是( ) A. int arr[2][3] = {{1, 2, 3}, {4, 5, 6}}; func(arr, 2); B. int arr[2][] = {{1, 2, 3}, {4, 5, 6}}; func(arr, 2); C. int arr[][3] = {{1, 2}, {4, 5}}; func(arr, 2); D. int arr[2][4] = {{1, 2, 3, 4}, {5, 6, 7, 8}}; func(arr, 2); 二、判断题(本大题共10小题,每小题2分,共20分) 1. 函数定义时,返回值类型可以省略,默认返回 int 类型。( ) 2. 形参是函数内部的局部变量,函数调用结束后,形参的内存空间会被释放。( ) 3. 函数可以有多个返回语句,但每次调用函数只能执行其中一个返回语句。( ) 4. 函数调用时,实参和形参之间的数据传递方式只有值传递。( ) 5. 函数原型只是为了让编译器知道函数的返回值类型和参数情况,不一定要和函数定义完全一致。( ) 6. 当数组元素作为函数参数时,是值传递,函数内部对参数的修改不会影响原数组元素。( ) 7. 数组名作为函数参数传递的是数组的首地址,函数内部可以通过该地址修改原数组的元素。( ) 8. 静态变量在程序运行期间只初始化一次,之后每次进入函数时,会保留上次的值。( ) 9. 函数的嵌套调用和递归调用本质上是一样的。( ) 10. 全局变量的作用域是从定义处到文件末尾,可以被文件内的所有函数访问。( ) 三、填空题(本大题共5小题,每题2分,共10分) 1. 函数定义的一般形式为:______ 函数名 (形参列表) {函数体}。 2. 若函数返回值类型为 ______,表示该函数没有返回值。 3. 函数 ______ 的作用是让编译器在调用函数前进行参数类型检查。 4. 当数组名作为函数参数时,传递的是数组的 ______。 5. 若要在一个文件中使用另一个文件中定义的全局变量,需要使用 ______ 关键字进行声明。 四、读程序写结果题(本大题共5小题,每题5分,共25分) 1.以下程序的运行结果是______。 #include <stdio.h> void swap(int a, int b) { int temp = a; a = b; b = temp; } int main() { int x = 2, y = 4; swap(x, y); printf("%d %d ", x, y); return 0; } 2.以下程序的运行结果是______。 #include <stdio.h> void modifyArray(int arr[], int n) { for (int i = 0; i < n; i++) { arr[i] *= 2; } } int main() { int arr[] = {1, 2, 3}; int size = sizeof(arr) / sizeof(arr[0]); modifyArray(arr, size); for (int i = 0; i < size; i++) { printf("%d ", arr[i]); } printf(" "); return 0; } 3.以下程序的运行结果是______。 #include <stdio.h> int sum(int arr[], int n) { if (n == 0) { return 0; } else { return arr[n - 1] + sum(arr, n - 1); } } int main() { int arr[] = {1, 2, 3, 4}; int size = sizeof(arr) / sizeof(arr[0]); int result = sum(arr, size); printf("%d ", result); return 0; } 4.以下程序的运行结果是______。 #include <stdio.h> int add(int a, int b) { return a + b; } int subtract(int a, int b) { return a - b; } int operate(int x, int y, int (*func)(int, int)) { return func(x, y); } int main() { int num1 = 10; int num2 = 5; int sum = operate(num1, num2, add); printf("两数之和为: %d ", sum); int difference = operate(num1, num2, subtract); printf("两数之差为: %d ", difference); return 0; } 5.以下程序的运行结果是______。 #include <stdio.h> void func(int a) { int b = 2; static int c = 3; a += b + c; b++; c++; printf("%d %d %d ", a, b, c); } int main() { int x = 1; func(x); func(x); return 0; } 五、编程题(本大题共5小题,每题5分,共25分) 1. 编写一个递归函数,用于计算斐波那契数列的第 n 项。斐波那契数列定义为:F(0) = 0, F(1) = 1,F(n)=F(n-1)+F(n-2)(n>1)。要求在 main 函数中接收用户输入的 n 值,调用递归函数计算结果并输出。 2.编写一个函数 bubbleSort,使用数组名作为参数,对传入的整数数组进行冒泡排序。在 main 函数中初始化一个数组,调用 bubbleSort 函数进行排序并输出排序后的数组。 3.编写一个递归函数 sumArray,用于计算数组元素的和。在 main 函数中初始化一个数组,调用 sumArray 函数计算并输出数组元素的和。 4.编写一个函数 factorial 用于计算一个数的阶乘,再编写一个函数 combination 调用 factorial 函数计算组合数 。在 main 函数中接收用户输入的 n 和 k 值,调用 combination 函数计算并输出结果。 5.编写一个函数 testScope,在函数内部定义一个普通局部变量 a、一个静态局部变量 b 和一个全局变量 c(在函数外部定义)。每次调用 testScope 函数时,输出这三个变量的值,并对它们进行修改。在 main 函数中多次调用 testScope 函数,观察变量值的变化。 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $$

资源预览图

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