内容正文:
编写说明:本冲刺卷严格依据山东省软件与应用技术类高考考纲编写,依托《编程语言基础—C语言》(高教版第五版),聚焦高三考生冲刺需求,助力高效提分。内容上深度覆盖考纲掌握、理解层级考点,既系统梳理构建知识框架,又强化应用能力训练;同时结合近五年高考真题,精准把握高频考点、命题趋势与题型特点,确保贴合高考方向。
山东省软件与应用技术类
《C语言程序设计》高教版第五版
高频考点冲刺卷(一)原卷版
时间:60分钟 总分:100分
班级 姓名 学号 成绩
一、单选题(共25小题,每题2分,共50分)
1. 下列选项中,不属于C语言基本数据类型的是( )
A. int B. float C. string D. char
2. 以下哪个是合法的C语言标识符?( )
A. 2var B. var-name C. _var D. var name
3. 若定义 int a = 5, b = 2;,则表达式 a / b 的值为( )
A. 2 B. 2.5 C. 2.0 D. 3
4. 下列运算符中,优先级最高的是( )
A. = B. + C. * D. ()
5. 下列选项中,不属于C语言关键字的是( )
A. main B. int C. if D. for
6.若 int x = 10;,执行 x += x -= x * 2; 后,x的值为( )
A. -10 B. 0 C. 10 D. -20
7. 以下关于 switch 语句的描述中,错误的是( )
A. case 后必须是常量表达式 B. default 可以省略
C. break 语句可以省略 D. switch 表达式的类型可以是浮点型
8. 下列循环结构中,至少执行一次循环体的是( )
A. for B. while C. do…while D. 以上都是
9. 若定义 int a[5] = {1, 2, 3};,则 a[4] 的值为( )
A. 0 B. 3 C. 随机值 D. 语法错误
10. 以下关于函数的描述中,正确的是( )
A. 函数必须返回一个值 B. 函数可以嵌套定义
C. 函数可以没有参数 D. 函数名可以与变量名相同
11. 以下程序的输出结果是( )
#include <stdio.h>
int main() {
int i = 0;
while(i++ < 3);
printf("%d", i);
}
A. 3 B. 4 C. 0 D. 死循环
12. 下列数组定义中,错误的是( )
A. int a[] = {1,2,3}; B. int a[3] = {1,2,3,4};
C. int a[3] = {1}; D. int a[][2] = {{1,2},{3,4}};
13. 若 char s[] = "hello";,则 sizeof(s) 的值为( )
A. 5 B. 6 C. 7 D. 8
14. 以下关于指针的描述中,错误的是( )
A. 指针可以指向变量 B. 指针可以指向数组
C. 指针可以指向函数 D. 指针不能指向指针
15. 下列函数声明中,正确的是( )
A. int f(int a, b); B. int f(int a, int b);
C. int f(int a; int b); D. int f(a, b);
16. 以下程序的输出结果是( )
#include <stdio.h>
int main() {
int a = 5, b = 10;
printf("%d", a > b ? a : b);
}
A. 5 B. 10 C. 1 D. 0
17. 若定义 int a = 3, b = 4, c;,执行 c = a++ + b++; 后,a、b、c 的值分别为( )
A. 4,5,7 B. 4,5,8 C. 3,4,7 D. 3,4,8
18. 以下关于 break 语句的描述中,正确的是( )
A. 只能用于循环语句 B. 只能用于 switch 语句
C. 可用于循环和 switch 语句 D. 可用于任何语句
19. 若定义 int a[3][4];,则以下引用正确的是( )
A. a[2][4] B. a[3][0] C. a[1][3] D. a[0][4]
20. 以下程序的输出结果是( )
#include <stdio.h>
int main() {
int i, sum = 0;
for(i = 1; i <= 5; i++) {
if(i % 2 == 0) continue;
sum += i;
}
printf("%d", sum);
}
A. 6 B. 9 C. 15 D. 0
21. 下列函数中,用于输出字符的是( )
A. printf() B. scanf() C. putchar() D. gets()
22. 若 int a = 10, *p = &a;,则 *p + 1 的值为( )
A. 10 B. 11 C. 地址值 D. 不确定
23. 以下关于数组名作为函数参数的描述中,正确的是( )
A. 传递的是整个数组 B. 传递的是数组的首地址
C. 传递的是数组的长度 D. 传递的是数组的最后一个元素
24. 若定义 int *p;,则以下赋值正确的是( )
A. p = 10; B. p = &10; C. p = (int*)10; D. p = NULL;
25. 以下程序的输出结果是( )
#include <stdio.h>
int main() {
int x = 1, y = -1;
printf("%d", (x-- && y++));
}
A. 0 B. 1 C. -1 D. 2
二、简答题(共3小题,每题5分,共15分)
1. 简述C语言中 ++i 与 i++的区别。
2. 简述数组与指针的关系。
3. 简述 break 与 continue 在循环中的区别。
三、案例分析题(共3小题,每题5分,共15分)
1. 分析以下代码的输出结果:
#include <stdio.h>
int main() {
int a = 5, b = 3;
if(a > b) {
printf("A");
if(a > 10)
printf("B");
}
else
printf("C");
}
2. 分析以下代码的输出结果:
#include <stdio.h>
int main() {
int i, a[5] = {1,2,3,4,5};
for(i = 4; i >= 0; i--)
printf("%d ", a[i]);
return 0;
}
3. 分析以下代码的输出结果:
#include <stdio.h>
void change(int x) {
x = 10;
}
int main() {
int a = 5;
change(a);
printf("%d", a);
}
四、综合应用题(共2小题,每题10分,共20分)
1. 编写程序,输入10个整数,输出其中的最大值和最小值。
2. 编写函数 `int isPrime(int n)`,判断 n 是否为素数,若是返回1,否则返回0。并在主函数中输入一个整数,调用该函数判断是否为素数。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$
编写说明:本冲刺卷严格依据山东省软件与应用技术类高考考纲编写,依托《编程语言基础—C语言》(高教版第五版),聚焦高三考生冲刺需求,助力高效提分。内容上深度覆盖考纲掌握、理解层级考点,既系统梳理构建知识框架,又强化应用能力训练;同时结合近五年高考真题,精准把握高频考点、命题趋势与题型特点,确保贴合高考方向。
山东省软件与应用技术类
《C语言程序设计》高教版第五版
高频考点冲刺卷(一)解析版
时间:60分钟 总分:100分
班级 姓名 学号 成绩
一、单选题(共25小题,每题2分,共50分)
1. 下列选项中,不属于C语言基本数据类型的是( )
A. int B. float C. string D. char
答案:C
解析:C语言基本数据类型包括整型(int)、浮点型(float)、字符型(char)等,string不是基本数据类型,通常用字符数组表示。
2. 以下哪个是合法的C语言标识符?( )
A. 2var B. var-name C. _var D. var name
答案:C
解析:标识符只能由字母、数字和下划线组成,且不能以数字开头,不能包含空格或特殊符号。
3. 若定义 int a = 5, b = 2;,则表达式 a / b 的值为( )
A. 2 B. 2.5 C. 2.0 D. 3
答案:A
解析:整型相除结果为整型,小数部分被截断。
4. 下列运算符中,优先级最高的是( )
A. = B. + C. * D. ()
答案:D
解析:括号 () 的优先级最高。
5. 下列选项中,不属于C语言关键字的是( )
A. main B. int C. if D. for
答案:A
解析:main 是函数名,不是关键字。
6.若 int x = 10;,执行 x += x -= x * 2; 后,x的值为( )
A. -10 B. 0 C. 10 D. -20
答案:A
解析:先计算 x * 2 = 20,再 x -= 20 得 -10,最后 x += -10 得 -10。
7. 以下关于 switch 语句的描述中,错误的是( )
A. case 后必须是常量表达式 B. default 可以省略
C. break 语句可以省略 D. switch 表达式的类型可以是浮点型
答案:D
解析:switch 表达式的类型必须是整型或字符型,不能是浮点型。
8. 下列循环结构中,至少执行一次循环体的是( )
A. for B. while C. do…while D. 以上都是
答案:C
解析:do…while 循环先执行循环体,再判断条件。
9. 若定义 int a[5] = {1, 2, 3};,则 a[4] 的值为( )
A. 0 B. 3 C. 随机值 D. 语法错误
答案:A
解析:数组未赋值的元素自动初始化为0。
10. 以下关于函数的描述中,正确的是( )
A. 函数必须返回一个值 B. 函数可以嵌套定义
C. 函数可以没有参数 D. 函数名可以与变量名相同
答案:C
解析:函数可以没有参数,也可以没有返回值(void 类型)。
11. 以下程序的输出结果是( )
#include <stdio.h>
int main() {
int i = 0;
while(i++ < 3);
printf("%d", i);
}
A. 3 B. 4 C. 0 D. 死循环
答案:B
解析:循环执行3次后 i 自增为4。
12. 下列数组定义中,错误的是( )
A. int a[] = {1,2,3}; B. int a[3] = {1,2,3,4};
C. int a[3] = {1}; D. int a[][2] = {{1,2},{3,4}};
答案:B
解析:数组初始化的元素个数不能超过数组长度。
13. 若 char s[] = "hello";,则 sizeof(s) 的值为( )
A. 5 B. 6 C. 7 D. 8
答案:B
解析:字符串末尾有 '\0',共6个字符。
14. 以下关于指针的描述中,错误的是( )
A. 指针可以指向变量 B. 指针可以指向数组
C. 指针可以指向函数 D. 指针不能指向指针
答案:D
解析:指针可以指向指针,即多级指针。
15. 下列函数声明中,正确的是( )
A. int f(int a, b); B. int f(int a, int b);
C. int f(int a; int b); D. int f(a, b);
答案:B
解析:函数参数必须逐个声明类型。
16. 以下程序的输出结果是( )
#include <stdio.h>
int main() {
int a = 5, b = 10;
printf("%d", a > b ? a : b);
}
A. 5 B. 10 C. 1 D. 0
答案:B
解析:三目运算符,a > b 为假,返回 b 的值 10。
17. 若定义 int a = 3, b = 4, c;,执行 c = a++ + b++; 后,a、b、c 的值分别为( )
A. 4,5,7 B. 4,5,8 C. 3,4,7 D. 3,4,8
答案:A
解析:a++ 和 b++ 都是先取值再自增,c = 3 + 4 = 7,之后 a=4, b=5。
18. 以下关于 break 语句的描述中,正确的是( )
A. 只能用于循环语句 B. 只能用于 switch 语句
C. 可用于循环和 switch 语句 D. 可用于任何语句
答案:C
解析:break 可用于循环和 switch 语句中。
19. 若定义 int a[3][4];,则以下引用正确的是( )
A. a[2][4] B. a[3][0] C. a[1][3] D. a[0][4]
答案:C
解析:数组下标从0开始,最大下标为行数-1和列数-1。
20. 以下程序的输出结果是( )
#include <stdio.h>
int main() {
int i, sum = 0;
for(i = 1; i <= 5; i++) {
if(i % 2 == 0) continue;
sum += i;
}
printf("%d", sum);
}
A. 6 B. 9 C. 15 D. 0
答案:B
解析:累加1、3、5,和为9。
21. 下列函数中,用于输出字符的是( )
A. printf() B. scanf() C. putchar() D. gets()
答案:C
解析:putchar() 用于输出一个字符。
22. 若 int a = 10, *p = &a;,则 *p + 1 的值为( )
A. 10 B. 11 C. 地址值 D. 不确定
答案:B
解析:*p 取 a 的值 10,再加 1 得 11。
23. 以下关于数组名作为函数参数的描述中,正确的是( )
A. 传递的是整个数组 B. 传递的是数组的首地址
C. 传递的是数组的长度 D. 传递的是数组的最后一个元素
答案:B
解析:数组名作为参数传递的是数组的首地址。
24. 若定义 int *p;,则以下赋值正确的是( )
A. p = 10; B. p = &10; C. p = (int*)10; D. p = NULL;
答案:D
解析:指针可以赋值为 NULL,表示空指针。
25. 以下程序的输出结果是( )
#include <stdio.h>
int main() {
int x = 1, y = -1;
printf("%d", (x-- && y++));
}
A. 0 B. 1 C. -1 D. 2
答案:B
解析:x-- 为真,y++ 为真,逻辑与结果为1,之后 x=0, y=0。
二、简答题(共3小题,每题5分,共15分)
1. 简述C语言中 ++i 与 i++的区别。
答案:
++i 是前置自增,先自增再使用i的值;
i++ 是后置自增,先使用i的值再自增。
2. 简述数组与指针的关系。
答案:
数组名是一个常量指针,指向数组的首元素;
可以通过指针访问数组元素;
数组作为函数参数时,实际传递的是数组首地址。
3. 简述 break 与 continue 在循环中的区别。
答案:
break用于立即终止当前循环;
continue用于跳过本次循环剩余语句,进入下一次循环判断。
三、案例分析题(共3小题,每题5分,共15分)
1. 分析以下代码的输出结果:
#include <stdio.h>
int main() {
int a = 5, b = 3;
if(a > b) {
printf("A");
if(a > 10)
printf("B");
}
else
printf("C");
}
答案:
输出:A
解析:a > b 成立,输出 A;a > 10 不成立,不输出 B。
2. 分析以下代码的输出结果:
#include <stdio.h>
int main() {
int i, a[5] = {1,2,3,4,5};
for(i = 4; i >= 0; i--)
printf("%d ", a[i]);
}
答案:
输出:5 4 3 2 1
解析:逆序输出数组元素。
3. 分析以下代码的输出结果:
#include <stdio.h>
void change(int x) {
x = 10;
}
int main() {
int a = 5;
change(a);
printf("%d", a);
}
答案:
输出:5
解析:函数参数传递是值传递,不影响实参 a 的值。
四、综合应用题(共2小题,每题10分,共20分)
1. 编写程序,输入10个整数,输出其中的最大值和最小值。
答案:
#include <stdio.h>
int main() {
int i, num, max, min;
scanf("%d", &num);
max = min = num;
for(i = 1; i < 10; i++) {
scanf("%d", &num);
if(num > max) max = num;
if(num < min) min = num;
}
printf("最大值:%d
最小值:%d", max, min);
}
2. 编写函数 `int isPrime(int 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() {
int n;
scanf("%d", &n);
if(isPrime(n))
printf("%d是素数", n);
else
printf("%d不是素数", n);
}
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$