内容正文:
编写说明:2027版山东省春季高考统一考试软件与应用技术类《考纲百套卷》,依据《软件与应用技术类专业知识考试标准》编写。本专辑涵盖三个部分,第一部分为知识训练卷,第二部分为专题训练卷,第三部分为课程综合卷。本专辑共85份试卷,其中知识训练卷48份、专题训练卷25份、课程综合卷12份。
本试卷是第12卷,为知识训练卷,按《C语言程序设计知识》中“函数”范围和要求编写。具体内容为:(1)理解函数的定义。(2)掌握函数的调用。
山东省春季高考统一考试
软件与应用技术类《考纲百套卷》
第12卷 C语言程序设计知识——函数
(考试时间:45分钟 满分:100分)
一、选择题(共20题,每题3分,共60分)
1.下列语句中,正确的函数定义是( )
A.define add(int a, intb)
B.function int add(a, b) { return a + b; }
C.int add { return 1; }
D.int add(int a, int b) { return a + b; }
2.下列函数定义中,表示函数没有返回值的是( )
A.return show(void)
B.void show(void)
C.int show(void)
D.char show(void)
3.调用函数add(2, 3)时,传给函数的实际参数个数是( )
A.0个
B.3个
C.2个
D.1个
4.下列函数调用语句正确的是( )
A.sum = add(2, 3);
B.call add(2, 3);
C.sum add(2, 3);
D.add int(2, 3);
5.执行下列程序后,输出结果是( )
int add(int a, int b) {
return a + b;
}
int main(void) {
printf("%d", add(3, 4));
return 0;
}
A.12
B.3
C.7
D.4
6.若函数定义为int f(int x),调用f(5)时,x属于( )
A.返回值
B.实际参数
C.全局变量
D.形式参数
7.执行下列程序后,x的值是( )
void change(int x) { x = 10; }
int main(void) {
int x = 3;
change(x);
printf("%d", x);
return 0;
}
A.3
B.0
C.10
D.程序错误
8.下列关于return语句的说法正确的是( )
A.void函数必须返回整数
B.return可以结束函数并返回结果
C.return只能出现在main函数中
D.return不能带表达式
9.执行下列程序后,输出结果是( )
int f(int x) {
if (x > 0) return x * 2;
return -x;
}
int main(void) {
printf("%d %d", f(3), f(-4));
return 0;
}
A.6 -4
B.3 -4
C.6 4
D.4 6
10.函数声明的主要作用是( )
A.让函数自动执行
B.提前告知编译器函数的返回类型和参数形式
C.结束程序运行
D.定义一个数组
11.执行下列程序后,输出结果是( )
int square(int x) { return x * x; }
int main(void) {
int a = 2;
printf("%d", square(a + 1));
return 0;
}
A.4
B.5
C.6
D.9
12.关于局部变量的说法正确的是( )
A.局部变量只在定义它的函数或代码块内有效
B.局部变量不能赋值
C.局部变量必须使用static
D.局部变量在所有函数中都可直接使用
13.执行下列程序后,输出结果是( )
int f(int x) {
return x + 1;
}
int main(void) {
printf("%d", f(f(2)));
return 0;
}
A.3
B.4
C.2
D.5
14.下列函数调用与函数定义匹配的是( )
A.char f(char c);调用f(1,2)
B.void f(void);调用f(2)
C.int f(int x);调用f(2,3)
D.int f(int x, int y);调用f(2,3)
15.执行下列程序后,输出结果是( )
int fact(int n) {
if (n <= 1) return 1;
return n * fact(n - 1);
}
int main(void) {
printf("%d", fact(4));
return 0;
}
A.6
B.12
C.24
D.4
16.若函数定义为void print(void),下列调用正确的是( )
A.print( );
B.print;
C.void print( );
D.call(print);
17.执行下列程序后,输出结果是( )
int g(int a, int b) {
return a > b ? a : b;
}
int main(void) {
printf("%d", g(g(2, 5), 4));
return 0;
}
A.4
B.2
C.9
D.5
18.下列关于函数返回值的说法正确的是( )
A.main函数不能使用return
B.所有函数都必须返回int
C.有返回值的函数应返回类型匹配的结果
D.返回值类型必须与函数名相同
19.执行下列程序后,输出结果是( )
int add(int x) {
int y = 2;
return x + y;
}
int main(void) {
int y = 5;
printf("%d", add(y));
return 0;
}
A.7
B.5
C.10
D.2
20.若函数声明为double average(int a, int b);,下列调用符合参数个数的是( )
A.average(2, 4, 6)
B.average(2, 4)
C.average( )
D.average(2)
二、简答题(共2题,每题10分,共20分)
1.阅读程序,写出程序的输出结果。
#include <stdio.h>
int calc(int x)
{
if (x % 2 == 0)
return x / 2;
return x * 2 + 1;
}
int main(void)
{
printf("%d %d %d
", calc(6), calc(5), calc(calc(4)));
return 0;
}
2.阅读程序,写出程序的输出结果。
#include <stdio.h>
int f(int x)
{
int y = 3;
x = x + y;
return x;
}
int main(void)
{
int x = 4;
int y = f(x);
printf("%d %d
", x, y);
return 0;
}
三、案例分析题(共1题,共10分)
1.下面程序用于计算两个整数的较大值,但程序中有一处错误,请指出并改正。
#include <stdio.h>
int max(int a, int b)
{
if (a > b)
return a;
return b;
}
int main(void)
{
int x = 8, y = 5;
printf("%d
", max(x));
return 0;
}
四、综合应用题(共1题,共10分)
1.编写程序:定义函数isPrime,判断一个正整数是否为素数;在main函数中输入一个正整数n,调用该函数,若n为素数输出1,否则输出0。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$
编写说明:2027版山东省春季高考统一考试软件与应用技术类《考纲百套卷》,依据《软件与应用技术类专业知识考试标准》编写。本专辑涵盖三个部分,第一部分为知识训练卷,第二部分为专题训练卷,第三部分为课程综合卷。本专辑共85份试卷,其中知识训练卷48份、专题训练卷25份、课程综合卷12份。
本试卷是第12卷,为知识训练卷,按《C语言程序设计知识》中“函数”范围和要求编写。具体内容为:(1)理解函数的定义。(2)掌握函数的调用。
山东省春季高考统一考试
软件与应用技术类《考纲百套卷》
第12卷 C语言程序设计知识——函数
(考试时间:45分钟 满分:100分)
一、选择题(共20题,每题3分,共60分)
1.下列语句中,正确的函数定义是( )
A.define add(int a, intb)
B.function int add(a, b) { return a + b; }
C.int add { return 1; }
D.int add(int a, int b) { return a + b; }
【答案】D
【解析】C 语言函数定义格式为返回值类型 函数名 (形参列表){函数体}。A 使用 define 用于宏定义;B 中 function 不属于 C 语言关键字;C 缺少函数参数括号;只有 D 符合语法规则。
2.下列函数定义中,表示函数没有返回值的是( )
A.return show(void)
B.void show(void)
C.int show(void)
D.char show(void)
【答案】B
【解析】void作为返回值类型表示函数不返回一个具体数值,void show(void)表示无返回值且无参数。
3.调用函数add(2, 3)时,传给函数的实际参数个数是( )
A.0个
B.3个
C.2个
D.1个
【答案】C
【解析】括号中有2和3两个实参,因此实际参数个数为2。
4.下列函数调用语句正确的是( )
A.sum = add(2, 3);
B.call add(2, 3);
C.sum add(2, 3);
D.add int(2, 3);
【答案】A
【解析】函数调用写成函数名(实参表),返回值可以赋给sum,因此A项正确。
5.执行下列程序后,输出结果是( )
int add(int a, int b) {
return a + b;
}
int main(void) {
printf("%d", add(3, 4));
return 0;
}
A.12
B.3
C.7
D.4
【答案】C
【解析】调用add(3,4)时a=3、b=4,函数返回a+b=7,printf输出7。
6.若函数定义为int f(int x),调用f(5)时,x属于( )
A.返回值
B.实际参数
C.全局变量
D.形式参数
【答案】D
【解析】函数定义中的x是形式参数,调用时传入的5是实际参数。
7.执行下列程序后,x的值是( )
void change(int x) { x = 10; }
int main(void) {
int x = 3;
change(x);
printf("%d", x);
return 0;
}
A.3
B.0
C.10
D.程序错误
【答案】A
【解析】普通整型参数传递的是x的值,函数内形参x的修改不会改变main中的x,所以输出3。
8.下列关于return语句的说法正确的是( )
A.void函数必须返回整数
B.return可以结束函数并返回结果
C.return只能出现在main函数中
D.return不能带表达式
【答案】B
【解析】return可以结束当前函数;有返回值函数可通过return表达式返回结果,void函数通常使用return;或直接结束。
9.执行下列程序后,输出结果是( )
int f(int x) {
if (x > 0) return x * 2;
return -x;
}
int main(void) {
printf("%d %d", f(3), f(-4));
return 0;
}
A.6 -4
B.3 -4
C.6 4
D.4 6
【答案】C
【解析】f(3)满足x>0,返回6;f(-4)不满足条件,执行return -x,返回4,所以输出6 4。
10.函数声明的主要作用是( )
A.让函数自动执行
B.提前告知编译器函数的返回类型和参数形式
C.结束程序运行
D.定义一个数组
【答案】B
【解析】函数声明向编译器说明函数名、返回值类型和参数类型,使函数可以在定义前被调用。
11.执行下列程序后,输出结果是( )
int square(int x) { return x * x; }
int main(void) {
int a = 2;
printf("%d", square(a + 1));
return 0;
}
A.4
B.5
C.6
D.9
【答案】D
【解析】调用前实参表达式a+1的值为3,square(3)返回3*3=9。
12.关于局部变量的说法正确的是( )
A.局部变量只在定义它的函数或代码块内有效
B.局部变量不能赋值
C.局部变量必须使用static
D.局部变量在所有函数中都可直接使用
【答案】A
【解析】局部变量的作用域限于定义它的函数或代码块,其他函数不能直接使用同名局部变量。
13.执行下列程序后,输出结果是( )
int f(int x) {
return x + 1;
}
int main(void) {
printf("%d", f(f(2)));
return 0;
}
A.3
B.4
C.2
D.5
【答案】B
【解析】先计算内层f(2)=3,再计算外层f(3)=4,所以输出4。
14.下列函数调用与函数定义匹配的是( )
A.char f(char c);调用f(1,2)
B.void f(void);调用f(2)
C.int f(int x);调用f(2,3)
D.int f(int x, int y);调用f(2,3)
【答案】D
【解析】函数声明int f(int x,int y)需要两个整型实参,调用f(2,3)与其匹配。
15.执行下列程序后,输出结果是( )
int fact(int n) {
if (n <= 1) return 1;
return n * fact(n - 1);
}
int main(void) {
printf("%d", fact(4));
return 0;
}
A.6
B.12
C.24
D.4
【答案】C
【解析】递归调用得到fact(4)=4*3*2*1=24,满足n<=1时返回1。
16.若函数定义为void print(void),下列调用正确的是( )
A.print( );
B.print;
C.void print( );
D.call(print);
【答案】A
【解析】无参数函数调用仍需写函数名和一对圆括号,正确形式为print( )。
17.执行下列程序后,输出结果是( )
int g(int a, int b) {
return a > b ? a : b;
}
int main(void) {
printf("%d", g(g(2, 5), 4));
return 0;
}
A.4
B.2
C.9
D.5
【答案】D
【解析】内层g(2,5)返回5,外层调用g(5,4)仍返回5,因此输出5。
18.下列关于函数返回值的说法正确的是( )
A.main函数不能使用return
B.所有函数都必须返回int
C.有返回值的函数应返回类型匹配的结果
D.返回值类型必须与函数名相同
【答案】C
【解析】函数返回的表达式应与函数声明或定义中的返回值类型相匹配;不同函数可以有不同返回类型。
19.执行下列程序后,输出结果是( )
int add(int x) {
int y = 2;
return x + y;
}
int main(void) {
int y = 5;
printf("%d", add(y));
return 0;
}
A.7
B.5
C.10
D.2
【答案】A
【解析】main中的y=5作为实参传给x,函数内部局部y=2,返回5+2=7。两个y属于不同作用域。
20.若函数声明为double average(int a, int b);,下列调用符合参数个数的是( )
A.average(2, 4, 6)
B.average(2, 4)
C.average( )
D.average(2)
【答案】B
【解析】函数声明要求两个int参数,average(2,4)参数个数和类型都匹配。
二、简答题(共2题,每题10分,共20分)
1.阅读程序,写出程序的输出结果。
#include <stdio.h>
int calc(int x)
{
if (x % 2 == 0)
return x / 2;
return x * 2 + 1;
}
int main(void)
{
printf("%d %d %d
", calc(6), calc(5), calc(calc(4)));
return 0;
}
【答案】输出:3 11 1
【解析】calc(6)=3,calc(5)=5*2+1=11;内层calc(4)=2,外层再调用calc(2)=1,故输出为3 11 1。
2.阅读程序,写出程序的输出结果。
#include <stdio.h>
int f(int x)
{
int y = 3;
x = x + y;
return x;
}
int main(void)
{
int x = 4;
int y = f(x);
printf("%d %d
", x, y);
return 0;
}
【答案】输出:4 7
【解析】调用f时x按值传递,函数内形参x变为7但不改变main中的x;返回值y为7,因此输出4 7。
三、案例分析题(共1题,共10分)
1.下面程序用于计算两个整数的较大值,但程序中有一处错误,请指出并改正。
#include <stdio.h>
int max(int a, int b)
{
if (a > b)
return a;
return b;
}
int main(void)
{
int x = 8, y = 5;
printf("%d
", max(x));
return 0;
}
【答案】将max(x)改为max(x, y)。
【解析】函数max定义了两个int形参a和b,调用时必须提供两个实参。原程序只传入x,参数个数不匹配,改为max(x,y)后才能正确调用并返回较大值。
四、综合应用题(共1题,共10分)
1.编写程序:定义函数isPrime,判断一个正整数是否为素数;在main函数中输入一个正整数n,调用该函数,若n为素数输出1,否则输出0。
【答案】
#include <stdio.h>
int isPrime(int n)
{
int i;
if (n < 2)
return 0;
for (i = 2; i * i <= n; i++) {
if (n % i == 0)
return 0;
}
return 1;
}
int main(void)
{
int n;
scanf("%d", &n);
printf("%d
", isPrime(n));
return 0;
}
【解析】isPrime函数先排除小于2的数,再从2试除到i*i<=n;发现能整除时返回0,循环结束仍未找到因子则返回1,main调用函数并输出返回值。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$