内容正文:
编写说明:2027版山东省春季高考统一考试软件与应用技术类《考纲百套卷》,依据《软件与应用技术类专业知识考试标准》编写。本专辑涵盖三个部分,第一部分为知识训练卷,第二部分为专题训练卷,第三部分为课程综合卷。本专辑共85份试卷,其中知识训练卷48份、专题训练卷25份、课程综合卷12份。
本试卷是第56卷,为专题训练卷,按“函数与结构体”专题范围和要求编写。具体内容为:(1)理解函数的定义。(2)掌握函数的调用;(1)了解结构体变量的定义及初始化。(2)理解结构体变量的引用。
山东省春季高考统一考试
软件与应用技术类《考纲百套卷》
第56卷 专题训练——函数与结构体
(考试时间:45分钟 满分:100分)
一、选择题(共20题,每题3分,共60分)
1.关于下列函数头部,哪一项可以作为定义的开头( )
A.total int(int a)
B.function total(int a)
C.int total(int a)
D.define total(int a)
【答案】C
【解析】C 语言函数头部格式为【返回值类型 函数名 (形参列表)】。A 顺序错误;B 中 function 不属于 C 语言关键字;D 中 define 用于宏定义,不能定义函数;只有 C 符合语法规范。
2.若函数只执行操作而不向调用者返回数值,返回值类型通常写为( )
A.char
B.int
C.void
D.float
【答案】C
【解析】void表示函数没有具体的数值返回结果,适用于只执行操作的函数。
3.调用函数average(6, 8)时,传入的实参数量是( )
A.两个
B.一个
C.三个
D.四个
【答案】A
【解析】括号中的6和8分别是两个实参,因此调用时传入两个实参。
4.下列哪一项表示把函数调用结果保存到变量result中( )
A.result add(2,5);
B.call add(2,5);
C.add int(2,5);
D.result=add(2,5);
【答案】D
【解析】函数调用可写在赋值语句的右侧,result=add(2,5)表示保存返回值。
5.函数定义中的返回类型主要说明( )
A.返回结果的类型
B.函数名称的长度
C.实参数量
D.局部变量的范围
【答案】A
【解析】返回类型用于说明函数通过return语句交给调用处的结果类型。
6.函数定义的参数在术语上称为( )
A.调用时写入的数据
B.函数最后返回的数值
C.定义时列出的参数
D.函数外部的变量
【答案】C
【解析】函数定义括号中列出的参数用于接收调用数据,称为形式参数。
7.执行下列程序后,变量value的输出值是( )
void setValue(int n)
{
n = 20;
}
int main(void)
{
int value = 6;
setValue(value);
printf("%d", value);
return 0;
}
A.20
B.0
C.8
D.6
【答案】D
【解析】整型参数按值传递,函数内n的修改不会改变调用处的value,因此输出6。
8.函数需要把计算结果交给调用者时,通常使用哪条语句( )
A.continue语句
B.return语句
C.break语句
D.switch语句
【答案】B
【解析】return语句可以结束当前函数,并把表达式的值返回给调用者。
9.执行下列程序后,输出结果是( )
int choose(int a, int b)
{
if (a % 2 == 0)
return a;
return b;
}
int main(void)
{
printf("%d", choose(6, 9));
return 0;
}
A.6
B.9
C.15
D.3
【答案】A
【解析】6是偶数,choose函数执行第一条return语句,返回6。
10.在函数体出现之前,哪类语句可以先说明函数接口( )
A.函数调用语句
B.赋值语句
C.函数声明语句
D.循环控制语句
【答案】C
【解析】函数声明可以提前说明函数名、返回值类型和参数形式,便于编译器检查调用。
11.函数调用时,形参的作用是( )
A.保存程序的返回结果
B.替代函数的返回类型
C.控制主函数的循环次数
D.接收对应实参的值
【答案】D
【解析】形参是函数定义中用于接收调用者传入数据的变量,调用时由对应实参为其提供初值。
12.在函数内部声明的普通变量,其直接可用范围通常是( )
A.整个工程的所有函数
B.当前函数或所在代码块
C.程序启动前的预处理阶段
D.仅main函数的参数表
【答案】B
【解析】普通局部变量的作用域限于定义它的函数或代码块,不能被其他函数直接使用。
13.函数调用结束后,调用处能够直接得到的是( )
A.函数返回的结果
B.函数内部的全部局部变量
C.函数形参的存储地址
D.函数体中的每条语句
【答案】A
【解析】有返回值的函数结束后,调用表达式可以得到return语句返回的结果;局部变量仍属于函数内部。
14.下列函数原型与调用组合中,参数能够匹配的是( )
A.int f(int x,y); 调用f(3)
B.void f(void); 调用f(3)
C.int f(int x); 调用f(3)
D.char f(char c); 调用f(3,4)
【答案】C
【解析】int f(int x)需要一个int实参,调用f(3)的参数个数和类型均匹配。
15.递归调用能够最终停止,程序中必须安排( )
A.数组下标
B.文件指针
C.输出格式
D.终止条件
【答案】D
【解析】递归函数必须有终止条件,否则会不断调用自身而无法正常结束。
16.执行下列程序后,输出结果是( )
int sumOdd(int n)
{
if (n <= 0)
return 0;
return n + sumOdd(n - 2);
}
int main(void)
{
printf("%d", sumOdd(5));
return 0;
}
A.6
B.9
C.5
D.12
【答案】B
【解析】sumOdd(5)=5+sumOdd(3)=5+3+sumOdd(1)=9,继续调用到n<=0时返回0。
17.对于参数表写成void的函数,下面哪一项是真正的调用表达式( )
A.ping()
B.ping;
C.void ping();
D.call(ping);
【答案】A
【解析】无参数函数的调用仍需写函数名和圆括号,ping()才是调用表达式。
18.执行下列程序后,输出结果是( )
int bias = 2;
int getValue(int x)
{
return x + bias;
}
int main(void)
{
printf("%d", getValue(5));
return 0;
}
A.5
B.7
C.2
D.10
【答案】B
【解析】全局变量bias的值为2,getValue(5)返回5+2,输出7。
19.函数需要返回可能包含小数的计算结果时,返回类型宜选择( )
A.整数类型int
B.字符类型char
C.双精度浮点型
D.无返回值void
【答案】C
【解析】计算结果可能包含小数时,应选用double对应的双精度浮点类型;void表示不返回具体数值。
20.下列函数调用中,第一个实参表达式运算结果等于 7 的是( )
A.mix(2*3,1)
B.mix(14/2,2)
C.mix(10-4,3)
D.mix(4+2,4)
【答案】B
【解析】
A:3*2=6
B:14/2=7
C:10-4=6
D:4+2=6
二、简答题(共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)=11;内层calc(4)=2,外层calc(2)=1,因此三个实参表达式依次得到3、11、1。
2.阅读程序,说明实参和形参的关系,并写出输出结果。
#include <stdio.h>
int adjust(int x)
{
int y = 3;
x = x + y;
return x;
}
int main(void)
{
int x = 4;
int y = adjust(x);
printf("%d %d
", x, y);
return 0;
}
【答案】输出:4 7。
【解析】调用adjust时,main中的x=4作为实参传给形参x,函数内形参变为7并返回;按值传递不改变main中的x,所以输出4和7。
三、案例分析题(共1题,共10分)
1.下面程序用于计算两个整数的较大值,但函数调用处存在错误。请指出错误并修改。
#include <stdio.h>
int max2(int a, int b)
{
if (a > b)
return a;
return b;
}
int main(void)
{
int x = 8, y = 5;
printf("%d
", max2(x));
return 0;
}
【答案】将max2(x)修改为max2(x, y)。
【解析】函数max2定义了两个int形参a和b,调用时必须提供两个实参。原程序只传入x,参数个数不匹配,修改为max2(x,y)后才能正确调用并返回较大值。
四、综合应用题(共1题,共10分)
1.编写程序:定义函数isPrime,判断输入的正整数是否为素数;若为素数输出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调用函数并输出返回值。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$
编写说明:2027版山东省春季高考统一考试软件与应用技术类《考纲百套卷》,依据《软件与应用技术类专业知识考试标准》编写。本专辑涵盖三个部分,第一部分为知识训练卷,第二部分为专题训练卷,第三部分为课程综合卷。本专辑共85份试卷,其中知识训练卷48份、专题训练卷25份、课程综合卷12份。
本试卷是第56卷,为专题训练卷,按“函数与结构体”专题范围和要求编写。具体内容为:(1)理解函数的定义。(2)掌握函数的调用;(1)了解结构体变量的定义及初始化。(2)理解结构体变量的引用。
山东省春季高考统一考试
软件与应用技术类《考纲百套卷》
第56卷 专题训练——函数与结构体
(考试时间:45分钟 满分:100分)
一、选择题(共20题,每题3分,共60分)
1.关于下列函数头部,哪一项可以作为定义的开头( )
A.total int(int a)
B.function total(int a)
C.int total(int a)
D.define total(int a)
2.若函数只执行操作而不向调用者返回数值,返回值类型通常写为( )
A.char
B.int
C.void
D.float
3.调用函数average(6, 8)时,传入的实参数量是( )
A.两个
B.一个
C.三个
D.四个
4.下列哪一项表示把函数调用结果保存到变量result中( )
A.result add(2,5);
B.call add(2,5);
C.add int(2,5);
D.result=add(2,5);
5.函数定义中的返回类型主要说明( )
A.返回结果的类型
B.函数名称的长度
C.实参数量
D.局部变量的范围
6.函数定义的参数在术语上称为( )
A.调用时写入的数据
B.函数最后返回的数值
C.定义时列出的参数
D.函数外部的变量
7.执行下列程序后,变量value的输出值是( )
void setValue(int n)
{
n = 20;
}
int main(void)
{
int value = 6;
setValue(value);
printf("%d", value);
return 0;
}
A.20
B.0
C.8
D.6
8.函数需要把计算结果交给调用者时,通常使用哪条语句( )
A.continue语句
B.return语句
C.break语句
D.switch语句
9.执行下列程序后,输出结果是( )
int choose(int a, int b)
{
if (a % 2 == 0)
return a;
return b;
}
int main(void)
{
printf("%d", choose(6, 9));
return 0;
}
A.6
B.9
C.15
D.3
10.在函数体出现之前,哪类语句可以先说明函数接口( )
A.函数调用语句
B.赋值语句
C.函数声明语句
D.循环控制语句
11.函数调用时,形参的作用是( )
A.保存程序的返回结果
B.替代函数的返回类型
C.控制主函数的循环次数
D.接收对应实参的值
12.在函数内部声明的普通变量,其直接可用范围通常是( )
A.整个工程的所有函数
B.当前函数或所在代码块
C.程序启动前的预处理阶段
D.仅main函数的参数表
13.函数调用结束后,调用处能够直接得到的是( )
A.函数返回的结果
B.函数内部的全部局部变量
C.函数形参的存储地址
D.函数体中的每条语句
14.下列函数原型与调用组合中,参数能够匹配的是( )
A.int f(int x,y); 调用f(3)
B.void f(void); 调用f(3)
C.int f(int x); 调用f(3)
D.char f(char c); 调用f(3,4)
15.递归调用能够最终停止,程序中必须安排( )
A.数组下标
B.文件指针
C.输出格式
D.终止条件
16.执行下列程序后,输出结果是( )
int sumOdd(int n)
{
if (n <= 0)
return 0;
return n + sumOdd(n - 2);
}
int main(void)
{
printf("%d", sumOdd(5));
return 0;
}
A.6
B.9
C.5
D.12
17.对于参数表写成void的函数,下面哪一项是真正的调用表达式( )
A.ping()
B.ping;
C.void ping();
D.call(ping);
18.执行下列程序后,输出结果是( )
int bias = 2;
int getValue(int x)
{
return x + bias;
}
int main(void)
{
printf("%d", getValue(5));
return 0;
}
A.5
B.7
C.2
D.10
19.函数需要返回可能包含小数的计算结果时,返回类型宜选择( )
A.整数类型int
B.字符类型char
C.双精度浮点型
D.无返回值void
20.下列函数调用中,第一个实参表达式运算结果等于 7 的是( )
A.mix(2*3,1)
B.mix(14/2,2)
C.mix(10-4,3)
D.mix(4+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;
}
2.阅读程序,说明实参和形参的关系,并写出输出结果。
#include <stdio.h>
int adjust(int x)
{
int y = 3;
x = x + y;
return x;
}
int main(void)
{
int x = 4;
int y = adjust(x);
printf("%d %d
", x, y);
return 0;
}
三、案例分析题(共1题,共10分)
1.下面程序用于计算两个整数的较大值,但函数调用处存在错误。请指出错误并修改。
#include <stdio.h>
int max2(int a, int b)
{
if (a > b)
return a;
return b;
}
int main(void)
{
int x = 8, y = 5;
printf("%d
", max2(x));
return 0;
}
四、综合应用题(共1题,共10分)
1.编写程序:定义函数isPrime,判断输入的正整数是否为素数;若为素数输出1,否则输出0。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$