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

2025-02-24
| 2份
| 28页
| 98人阅读
| 1人下载

资源信息

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

内容正文:

编写说明:吉林省高职分类考试《信息工程类(电子与信息类)考纲百套卷》,依据吉林省高职分类(对口招生)考试各类专业综合卷考试科目及纲要(2021版),种信息工程类(电子与信息类)专业综合卷考试科目及纲要编写。本专辑共150份试卷两部分组成,第一部分是按考纲的考点要求编写的120份知识点训练卷,第二部分是针对6门课程的掌握要求,编写的30份常考题训练卷。 本试卷是吉林省高职分类考试《信息工程类(电子与信息类)考纲百套卷》的第19卷,是知识点训练卷。按“C语言程序设计”考试纲要(六)函数的六点知识点要求编写,其六点要求是: 1.掌握函数的定义和调用方法。2.理解形参和实参之间的关系。3.掌握函数的返回值。4.掌握函数的调用。5.理解函数的原型。6.了解函数的嵌套调用和递归调用。7.理解数组元素作为函数参数。8.了解多维数组作为函数参数。9.了解数组名作为函数参数。10.了解函数变量的作用域。11.了解变量的存储类型。 吉林省《信息工程类(电子与信息类)考纲百套卷》 第19卷 《C语言程序设计》 (六)函数-知识点训练卷 考试时间60分钟 满分100分 班级 姓名 学号 成绩 一、选择题(本大题共10小题,每小题2分,共20分) 1. 有如下函数定义: int func(int a, int b) { return a + b; } 调用该函数时,以下实参传递正确的是( ) A. func (3.5, 4.5); B. func (3, 4); C. func ("3", "4"); D. func (); 2. 有函数调用 func(++a, b--);,这里的 ++a 和 b-- 是( ) A. 实参 B. 形参 C. 局部变量 D. 全局变量 3. 若函数 func 的定义如下: int func(int x) { return x * x; } 调用 int y = func(func(2)); 后,y 的值是( ) A. 2 B. 4 C. 8 D. 16 4. 有如下函数定义和调用: int add(int a, int b) { return a + b; } int main() { int x = 3, y = 4; int result = add(x, y); return 0; } 在函数调用 add(x, y) 时,以下说法正确的是( ) A. 实参 x 和 y 的值会被改变 B. 形参 a 和 b 是 x 和 y 的别名 C. 形参 a 和 b 接收的是实参 x 和 y 的值 D. 函数 add 会直接修改实参 x 和 y 的值 5. 以下关于函数原型的说法,错误的是( ) A. 函数原型可以省略参数名 B. 函数原型必须放在函数调用之前 C. 函数原型可以不指定返回值类型 D. 函数原型可以让编译器在调用函数前进行参数类型检查 6. 已知函数 void func(int arr[], int n),以下哪种方式可以将数组元素作为参数传递给该函数( ) A. int a[5] = {1, 2, 3, 4, 5}; func(a[2], 5); B. int a[5] = {1, 2, 3, 4, 5}; func(a, 5); C. int a[5] = {1, 2, 3, 4, 5}; func(&a[2], 5); D. int a[5] = {1, 2, 3, 4, 5}; func(&a, 5); 7. 对于二维数组 int arr[3][4],若要将其作为参数传递给函数 void func(int arr[][4], int rows),以下调用正确的是( ) A. func(arr, 3); B. func(arr[3], 3); C. func(&arr[0][0], 3); D. func(arr[][4], 3); 8. 以下哪种存储类型的变量在程序运行期间只初始化一次( ) A. auto B. register C. static D. extern 9. 以下递归函数的功能是计算 n 的阶乘: int factorial(int n) { if (n == 0 || n == 1) { return 1; } else { return n * factorial(n - 1); } } 调用 factorial(3) 的返回值是( ) A. 3 B. 6 C. 9 D. 12 10. 以下关于函数变量作用域和存储类型的说法,正确的是( ) A. 全局变量的作用域是整个程序,存储在栈区 B. 局部变量的作用域仅限于定义它的函数内部,存储在堆区 C. 静态局部变量的作用域是定义它的函数内部,但存储在静态存储区 D. 寄存器变量的作用域是整个程序,存储在寄存器中 二、判断题(本大题共10小题,每小题2分,共20分) 1. 函数调用时,实参的个数和类型必须与形参的个数和类型完全一致。( ) 2. 函数的返回值只能是一个基本数据类型的值,不能是数组或结构体。( ) 3. 实参可以是常量、变量或表达式。( ) 4. 函数定义时,形参列表可以为空,表示该函数不需要任何参数。( ) 5. 函数的递归调用就是在函数内部无限地调用自身。( ) 6. 二维数组作为函数参数时,第一维的大小可以省略,但第二维的大小必须指定。( ) 7. 局部变量的作用域仅限于定义它的函数内部,函数调用结束后,局部变量的内存空间会被释放。( ) 8. 寄存器变量可以提高变量的访问速度,因此可以大量使用寄存器变量。( ) 9. 若函数原型为 void func(int arr[]);,调用时可以传递一个一维数组名。( ) 10. 当使用 extern 声明变量时,表示该变量是外部变量,存储在外部存储设备中。( ) 三、填空题(本大题共5小题,每题2分,共10分) 1. 函数调用时,传递给函数的参数称为 ______。 2. 函数调用时,实参和形参之间的数据传递方式通常有值传递和 ______。 3. 函数的递归调用需要有 ______,否则会导致栈溢出错误。 4. 局部变量存储在 ______ 区,静态变量存储在 ______ 区。 5. 函数的嵌套调用是指在一个函数中 ______ 另一个函数。 四、读程序写结果题(本大题共5小题,每题5分,共25分) 1.以下程序的运行结果是______。 #include <stdio.h> int func(int a, int b) { return a + b; } int main() { int x = 3, y = 5; int result = func(x, y); printf("%d ", result); return 0; } 2.以下程序的运行结果是______。 #include <stdio.h> int factorial(int n) { if (n == 0 || n == 1) { return 1; } else { return n * factorial(n - 1); } } int main() { int num = 4; int result = factorial(num); printf("%d ", result); return 0; } 3.以下程序的运行结果是______。 #include <stdio.h> void func(int a[][3], int rows) { for (int i = 0; i < rows; i++) { for (int j = 0; j < 3; j++) { a[i][j] += 1; } } } int main() { int arr[2][3] = {{1, 2, 3}, {4, 5, 6}}; func(arr, 2); for (int i = 0; i < 2; i++) { for (int j = 0; j < 3; j++) { printf("%d ", arr[i][j]); } printf(" "); } return 0; } 4.以下程序的运行结果是______。 #include <stdio.h> void testStatic() { static int count = 0; count++; printf("%d ", count); } int main() { for (int i = 0; i < 3; i++) { testStatic(); } printf(" "); return 0; } 5.以下程序的运行结果是______。 #include <stdio.h> int max(int a, int b) { return (a > b) ? a : b; } int findMax(int arr[], int n) { if (n == 1) { return arr[0]; } else { return max(arr[n - 1], findMax(arr, n - 1)); } } int main() { int arr[] = {3, 7, 2, 9, 5}; int size = sizeof(arr) / sizeof(arr[0]); int result = findMax(arr, size); printf("%d ", result); return 0; } 五、编程题(本大题共5小题,每题5分,共25分) 1.编写一个函数 square 用于计算一个数的平方,再编写一个函数 sumOfSquares 调用 square 函数计算数组元素的平方和。在 main 函数中初始化一个数组,调用 sumOfSquares 函数计算并输出结果。 2.编写一个函数 transpose,以二维数组作为参数,对传入的矩阵进行转置操作。在 main 函数中初始化一个矩阵,调用 transpose 函数进行转置并输出转置后的矩阵。 3.编写一个函数 isPrime,用于判断一个数是否为素数。在 main 函数中初始化一个数组,遍历数组,将每个元素作为参数传递给 isPrime 函数,输出数组中所有素数。 4.编写一个函数 countCalls,使用静态变量统计该函数的调用次数。在 main 函数中多次调用 countCalls 函数,每次调用后输出调用次数。 5.编写一个函数 sum3DArray,以三维数组作为参数,计算三维数组元素的和。在 main 函数中初始化一个三维数组,调用 sum3DArray 函数计算并输出结果。 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $$ 编写说明:吉林省高职分类考试《信息工程类(电子与信息类)考纲百套卷》,依据吉林省高职分类(对口招生)考试各类专业综合卷考试科目及纲要(2021版),种信息工程类(电子与信息类)专业综合卷考试科目及纲要编写。本专辑共150份试卷两部分组成,第一部分是按考纲的考点要求编写的120份知识点训练卷,第二部分是针对6门课程的掌握要求,编写的30份常考题训练卷。 本试卷是吉林省高职分类考试《信息工程类(电子与信息类)考纲百套卷》的第19卷,是知识点训练卷。按“C语言程序设计”考试纲要(六)函数的六点知识点要求编写,其六点要求是: 1.掌握函数的定义和调用方法。2.理解形参和实参之间的关系。3.掌握函数的返回值。4.掌握函数的调用。5.理解函数的原型。6.了解函数的嵌套调用和递归调用。7.理解数组元素作为函数参数。8.了解多维数组作为函数参数。9.了解数组名作为函数参数。10.了解函数变量的作用域。11.了解变量的存储类型。 吉林省《信息工程类(电子与信息类)考纲百套卷》 第19卷 《C语言程序设计》 (六)函数-知识点训练卷 考试时间60分钟 满分100分 班级 姓名 学号 成绩 一、选择题(本大题共10小题,每小题2分,共20分) 1. 有如下函数定义: int func(int a, int b) { return a + b; } 调用该函数时,以下实参传递正确的是( ) A. func (3.5, 4.5); B. func (3, 4); C. func ("3", "4"); D. func (); 答案:B 2. 有函数调用 func(++a, b--);,这里的 ++a 和 b-- 是( ) A. 实参 B. 形参 C. 局部变量 D. 全局变量 答案:A 3. 若函数 func 的定义如下: int func(int x) { return x * x; } 调用 int y = func(func(2)); 后,y 的值是( ) A. 2 B. 4 C. 8 D. 16 答案:D 4. 有如下函数定义和调用: int add(int a, int b) { return a + b; } int main() { int x = 3, y = 4; int result = add(x, y); return 0; } 在函数调用 add(x, y) 时,以下说法正确的是( ) A. 实参 x 和 y 的值会被改变 B. 形参 a 和 b 是 x 和 y 的别名 C. 形参 a 和 b 接收的是实参 x 和 y 的值 D. 函数 add 会直接修改实参 x 和 y 的值 答案:C 5. 以下关于函数原型的说法,错误的是( ) A. 函数原型可以省略参数名 B. 函数原型必须放在函数调用之前 C. 函数原型可以不指定返回值类型 D. 函数原型可以让编译器在调用函数前进行参数类型检查 答案:C 6. 已知函数 void func(int arr[], int n),以下哪种方式可以将数组元素作为参数传递给该函数( ) A. int a[5] = {1, 2, 3, 4, 5}; func(a[2], 5); B. int a[5] = {1, 2, 3, 4, 5}; func(a, 5); C. int a[5] = {1, 2, 3, 4, 5}; func(&a[2], 5); D. int a[5] = {1, 2, 3, 4, 5}; func(&a, 5); 答案:B 7. 对于二维数组 int arr[3][4],若要将其作为参数传递给函数 void func(int arr[][4], int rows),以下调用正确的是( ) A. func(arr, 3); B. func(arr[3], 3); C. func(&arr[0][0], 3); D. func(arr[][4], 3); 答案:A 8. 以下哪种存储类型的变量在程序运行期间只初始化一次( ) A. auto B. register C. static D. extern 答案:C 9. 以下递归函数的功能是计算 n 的阶乘: int factorial(int n) { if (n == 0 || n == 1) { return 1; } else { return n * factorial(n - 1); } } 调用 factorial(3) 的返回值是( ) A. 3 B. 6 C. 9 D. 12 答案:B 10. 以下关于函数变量作用域和存储类型的说法,正确的是( ) A. 全局变量的作用域是整个程序,存储在栈区 B. 局部变量的作用域仅限于定义它的函数内部,存储在堆区 C. 静态局部变量的作用域是定义它的函数内部,但存储在静态存储区 D. 寄存器变量的作用域是整个程序,存储在寄存器中 答案:C 二、判断题(本大题共10小题,每小题2分,共20分) 1. 函数调用时,实参的个数和类型必须与形参的个数和类型完全一致。( ) 答案:正确 2. 函数的返回值只能是一个基本数据类型的值,不能是数组或结构体。( ) 答案:错误 3. 实参可以是常量、变量或表达式。( ) 答案:正确 4. 函数定义时,形参列表可以为空,表示该函数不需要任何参数。( ) 答案:正确 5. 函数的递归调用就是在函数内部无限地调用自身。( ) 答案:错误 6. 二维数组作为函数参数时,第一维的大小可以省略,但第二维的大小必须指定。( ) 答案:正确 7. 局部变量的作用域仅限于定义它的函数内部,函数调用结束后,局部变量的内存空间会被释放。( ) 答案:正确 8. 寄存器变量可以提高变量的访问速度,因此可以大量使用寄存器变量。( ) 答案:错误 9. 若函数原型为 void func(int arr[]);,调用时可以传递一个一维数组名。( ) 答案:正确 10. 当使用 extern 声明变量时,表示该变量是外部变量,存储在外部存储设备中。( ) 答案:错误 三、填空题(本大题共5小题,每题2分,共10分) 1. 函数调用时,传递给函数的参数称为 ______。 答案:实参 2. 函数调用时,实参和形参之间的数据传递方式通常有值传递和 ______。 答案:指针传递 3. 函数的递归调用需要有 ______,否则会导致栈溢出错误。 答案:终止条件 4. 局部变量存储在 ______ 区,静态变量存储在 ______ 区。 答案:栈;静态存储 5. 函数的嵌套调用是指在一个函数中 ______ 另一个函数。 答案:调用 四、读程序写结果题(本大题共5小题,每题5分,共25分) 1.以下程序的运行结果是______。 #include <stdio.h> int func(int a, int b) { return a + b; } int main() { int x = 3, y = 5; int result = func(x, y); printf("%d ", result); return 0; } 答案:8 2.以下程序的运行结果是______。 #include <stdio.h> int factorial(int n) { if (n == 0 || n == 1) { return 1; } else { return n * factorial(n - 1); } } int main() { int num = 4; int result = factorial(num); printf("%d ", result); return 0; } 答案:24 3.以下程序的运行结果是______。 #include <stdio.h> void func(int a[][3], int rows) { for (int i = 0; i < rows; i++) { for (int j = 0; j < 3; j++) { a[i][j] += 1; } } } int main() { int arr[2][3] = {{1, 2, 3}, {4, 5, 6}}; func(arr, 2); for (int i = 0; i < 2; i++) { for (int j = 0; j < 3; j++) { printf("%d ", arr[i][j]); } printf(" "); } return 0; } 答案: 2 3 4 4.以下程序的运行结果是______。 #include <stdio.h> void testStatic() { static int count = 0; count++; printf("%d ", count); } int main() { for (int i = 0; i < 3; i++) { testStatic(); } printf(" "); return 0; } 答案:1 2 3 5.以下程序的运行结果是______。 #include <stdio.h> int max(int a, int b) { return (a > b) ? a : b; } int findMax(int arr[], int n) { if (n == 1) { return arr[0]; } else { return max(arr[n - 1], findMax(arr, n - 1)); } } int main() { int arr[] = {3, 7, 2, 9, 5}; int size = sizeof(arr) / sizeof(arr[0]); int result = findMax(arr, size); printf("%d ", result); return 0; } 答案:9 五、编程题(本大题共5小题,每题5分,共25分) 1.编写一个函数 square 用于计算一个数的平方,再编写一个函数 sumOfSquares 调用 square 函数计算数组元素的平方和。在 main 函数中初始化一个数组,调用 sumOfSquares 函数计算并输出结果。 答案代码: #include <stdio.h> // 计算一个数的平方 int square(int num) { return num * num; } // 计算数组元素的平方和 int sumOfSquares(int arr[], int size) { int sum = 0; for (int i = 0; i < size; i++) { sum += square(arr[i]); } return sum; } int main() { int arr[] = {1, 2, 3, 4}; int size = sizeof(arr) / sizeof(arr[0]); int result = sumOfSquares(arr, size); printf("数组元素的平方和是: %d ", result); return 0; } 2.编写一个函数 transpose,以二维数组作为参数,对传入的矩阵进行转置操作。在 main 函数中初始化一个矩阵,调用 transpose 函数进行转置并输出转置后的矩阵。 答案代码: #include <stdio.h> #define ROWS 3 #define COLS 3 // 矩阵转置函数 void transpose(int matrix[ROWS][COLS]) { int temp; for (int i = 0; i < ROWS; i++) { for (int j = i + 1; j < COLS; j++) { temp = matrix[i][j]; matrix[i][j] = matrix[j][i]; matrix[j][i] = temp; } } } int main() { int matrix[ROWS][COLS] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}; transpose(matrix); printf("转置后的矩阵是: "); for (int i = 0; i < ROWS; i++) { for (int j = 0; j < COLS; j++) { printf("%d ", matrix[i][j]); } printf(" "); } return 0; } 3.编写一个函数 isPrime,用于判断一个数是否为素数。在 main 函数中初始化一个数组,遍历数组,将每个元素作为参数传递给 isPrime 函数,输出数组中所有素数。 答案代码: #include <stdio.h> #include <math.h> // 判断一个数是否为素数 int isPrime(int num) { if (num < 2) return 0; for (int i = 2; i <= sqrt(num); i++) { if (num % i == 0) return 0; } return 1; } int main() { int arr[] = {2, 3, 4, 5, 6, 7, 8, 9}; int size = sizeof(arr) / sizeof(arr[0]); printf("数组中的素数有: "); for (int i = 0; i < size; i++) { if (isPrime(arr[i])) { printf("%d ", arr[i]); } } printf(" "); return 0; } 4.编写一个函数 countCalls,使用静态变量统计该函数的调用次数。在 main 函数中多次调用 countCalls 函数,每次调用后输出调用次数。 答案代码: #include <stdio.h> // 统计函数调用次数 void countCalls() { static int count = 0; count++; printf("函数被调用了 %d 次 ", count); } int main() { countCalls(); countCalls(); countCalls(); return 0; } 5.编写一个函数 sum3DArray,以三维数组作为参数,计算三维数组元素的和。在 main 函数中初始化一个三维数组,调用 sum3DArray 函数计算并输出结果。 答案代码: #include <stdio.h> #define X 2 #define Y 2 #define Z 2 // 计算三维数组元素的和 int sum3DArray(int arr[X][Y][Z]) { int sum = 0; for (int i = 0; i < X; i++) { for (int j = 0; j < Y; j++) { for (int k = 0; k < Z; k++) { sum += arr[i][j][k]; } } } return sum; } int main() { int arr[X][Y][Z] = { { {1, 2}, {3, 4} }, { {5, 6}, {7, 8} } }; int result = sum3DArray(arr); printf("三维数组元素的和是: %d ", result); return 0; } 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $$

资源预览图

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