《C语言程序设计》(高教版)山东省(春季高考)软件与应用技术 高频考点冲刺卷(二)

2026-01-08
| 2份
| 22页
| 91人阅读
| 1人下载

资源信息

学段 中职
学科 职教专业课
课程 C语言程序设计
教材版本 C语言程序设计高教版(第五版)全一册
年级 高一
章节 第2章 基本数据类型与简单程序设计,第4章 循环结构程序设计,第6章 函数
类型 题集-专项训练
知识点 数据类型和简单程序设计,分支结构,循环结构,数组,函数
使用场景 中职复习
学年 2026-2027
地区(省份) 山东省
地区(市) -
地区(区县) -
文件格式 ZIP
文件大小 281 KB
发布时间 2026-01-08
更新时间 2026-01-09
作者 xkw_063129603
品牌系列 学易金卷·阶段检测模拟卷
审核时间 2026-01-08
下载链接 https://m.zxxk.com/soft/55847546.html
价格 3.00储值(1储值=1元)
来源 学科网

内容正文:

编写说明:本冲刺卷严格依据山东省软件与应用技术类高考考纲编写,依托《编程语言基础—C语言》(高教版第五版),聚焦高三考生冲刺需求,助力高效提分。内容上深度覆盖考纲掌握、理解层级考点,既系统梳理构建知识框架,又强化应用能力训练;同时结合近五年高考真题,精准把握高频考点、命题趋势与题型特点,确保贴合高考方向。 山东省软件与应用技术类 《C语言程序设计》高教版第五版 高频考点冲刺卷(二)解析版 时间:60分钟 总分:100分 班级 姓名 学号 成绩 一、单选题(共25小题,每题2分,共50分) 1. 以下选项中,是合法的C语言标识符的是( ) A. 2a B. case C. _abc D. a+b 答案:C 解析:C语言标识符只能由字母、数字和下划线组成,且不能以数字开头。A以数字开头,B是关键字,D含有加号,均不合法。 2. C语言源程序的基本单位是( ) A. 过程 B. 函数 C. 子程序 D. 标识符 答案:B 解析:C语言源程序由函数组成,函数是C程序的基本单位。 3. 以下程序的输出结果为( ) #include<stdio.h> main( ) {int a=0,b=0; a=10; /*给a赋值x/ b=10; /*给b赋值*/ printf(“a+b=%d ”,a+b); /*输出计算结果*/ A.a+b=0 B. a+b=20 C. a+b=10 D. a+b=9 答案:C 解析:b=10被注释掉了,所以只实现了a=10;b的值依旧为0。 4.若有int year;,则以下选项能使表达式year % 4 == 0 && year % 100 != 0 || year % 400 == 0的值为真的是( ) A. 2023 B.2024 C. 2025 D. 2026 答案:B 解析:能被4整除不能被100整除,或是能被400整除。 5. 以下程序的输出结果是( ) #include <stdio.h> main() { int x=10, y=3; printf("%d", y=x/y); } A. 0 B. 1 C. 3 D. 不确定的值 答案:C 解析:x/y为10/3,整数除法结果为3,赋值给y,所以输出3。 6. 以下程序段的输出结果是( ) int a=2, b=3, c=4; a = b = c; printf("%d %d %d", a, b, c); A. 4 4 4 B. 3 4 4 C. 2 3 4 D. 4 3 2 答案:A 解析:赋值运算符从右向左结合,先将c赋值给b,再将b的值赋值给a,所以a、b、c都等于4。 7. 设int a=5, b=6, c=7, d=8, m=2, n=2; 执行(m=a>b)&&(n=c>d)后n的值为( ) A. 0 B. 1 C. 2 D. 3 答案:C 解析:由于a>b为假(5>6为假),所以m=0,且&&短路,后面的n=c>d不执行,故n保持原值2。 8. 以下关于switch语句的叙述中,正确的是( ) A. case后可以是常量或变量表达式 B. 必须包含default分支 C. break语句可有可无 D. case后的常量表达式值必须互不相同 答案:D 解析:case后必须是整型常量表达式,不能是变量;default分支可以省略;break语句用于跳出switch,若无则会继续执行下一个case。 9. 以下程序段的循环次数是( ) for(int i=0, j=5; i=j; i++, j--) printf("%d", i); A. 0 B. 5 C. 无限循环 D. 语法错误 答案:B 解析:循环条件i=j,即将j赋值给i,然后判断i是否为0(非0则继续)。初始i=0,j=5,第一次判断i=j=5(非0),执行循环,然后i=1,j=4;第二次i=4(非0),执行,i=2,j=3;第三次i=3(非0),执行,i=3,j=2;第四次i=2(非0),执行,i=4,j=1;第五次i=1(非0),执行,i=5,j=0;第六次i=0,循环结束。所以循环5次。 10. 以下能正确定义一维数组的语句是( ) A. int n=5, a[n]; B. int a(5); C. #define N 5 int a[N]; D. int a[]; 答案:C 解析:定义数组时长度必须是常量或常量表达式,A中n是变量,B语法错误,D未指定长度且未初始化。 11. 以下程序的输出结果是( ) #include <stdio.h> main() { int a[3][3]={{1,2},{3,4},{5,6}}, i, j, s=0; for(i=1; i<3; i++) for(j=0; j<=i; j++) s+=a[i][j]; printf("%d", s); } A. 18 B. 19 C. 20 D. 21 答案:A 解析:数组a初始化后为:{{1,2,0},{3,4,0},{5,6,0}}。循环i从1到2,j从0到i。 i=1: j=0 -> s+=a[1][0]=3, s=3; j=1 -> s+=a[1][1]=4, s=7。 i=2: j=0 -> s+=a[2][0]=5, s=12; j=1 -> s+=a[2][1]=6, s=18; j=2 -> a[2][2]=0, 但j<=i,所以j=2也执行,s+=0,s=18。 最终s=18。 12. 以下关于数组初始化的描述中,错误的是( ) A. char s1[]="abc";与 char s2[]={'a','b','c'};等价 B. char s3[10]="abc"; 数组后7个元素为'\0' C. int a[5]={1,2,3,4,5}; 可以写成 int a[]={1,2,3,4,5}; D. int b[3]={0}; 表示所有元素初始化为0 答案:A 解析:s1字符串末尾自动加'\0',所以s1有4个元素,而s2只有3个元素,两者不等价。 13. 若用数组名作为函数调用的实参,传递给形参的是( ) A.数组的首地址 B. 数组第一个元素的值 C.数组中全部元素的值 D. 数组元素的个数 答案:A 解析:数组名作为实参传递的是数组的首地址。 14. 以下程序的输出结果是( ) #include <stdio.h> void fun(int x) { x=20; } main() { int x=10; fun(x); printf("%d", x); } A. 10 B. 20 C. 不确定 D. 编译错误 答案:A 解析:函数fun是值传递,不会改变main函数中x的值。 15. 在C语言中,形参的缺省存储类别是( ) A. auto B. register C. static D. extern 答案:A 解析:形参缺省存储类别是auto,但通常省略。因此,答案应为A。 16. 以下程序的输出结果是( ) #include <stdio.h> int f(int a) { static int b=3; b+=a; return b; } main() { int a=2; printf("%d ", f(a)); printf("%d", f(a)); } A. 5 5 B. 5 7 C. 5 10 D. 3 5 答案:B 解析:第一次调用f(2),b初值为3,b+=a后b=5,返回5。第二次调用f(2),b是静态局部变量,保持上次的值5,b+=a后b=7,返回7。 17. 宏定义 #define MUL(x,y) x*y 在使用MUL(1+2,3+4)时展开为( ) A. 1+2*3+4 B. (1+2)*(3+4) C. 21 D. 11 答案:A 解析:宏替换是直接替换,MUL(1+2,3+4)替换为1+2*3+4,即1+6+4=11。 18.以下程序的输出结果是( ) main( ) {int i,s=0; for(i=1;i<10;i++) if(!(i%2)&&!(i%3)) s+=i; printf(“%d ”,s); } A. 45 B. 6 C. 5 D. 10 答案:B 解析:求1~9之间能被2、3同时整除的数的和 19. 以下程序的输出结果是( ) #include <stdio.h> main() { int i, sum=0; for(i=1; i<=10; i++) { if(i%3==0) break; sum+=i; } printf("%d", sum); } A. 3 B. 6 C. 10 D. 55 答案:A 解析:循环累加sum,当i=1,2时,i%3不为0,sum累加1和2,得到3。当i=3时,i%3==0,执行break,跳出循环,所以sum=3。 20. 若变量已正确定义,要求程序段计算5!,不能完成此操作的是( ) A. for(i=1,p=1; i<=5; i++) p*=i; B. for(i=1; i<=5; i++) { p=1; p*=i; } C. i=1; p=1; while(i<=5) { p*=i; i++; } D. i=1; p=1; do { p*=i; i++; } while(i<=5); 答案:B 解析:B选项每次循环p都被重新赋值为1,所以最终p=5,而不是5!。 21. 以下数组定义中,错误的是( ) A. int x[][3]={{1,2,3},{4,5,6}}; B.int x[2][3]={1,2,3,4,5,6}; C. int x[][3]={1,2,3,4,5,6}; D. int x[2][]={1,2,3,4,5,6}; 答案:D 解析:二维数组定义时,第二维长度不能省略。 22. 以下程序段的输出结果是( ) char s[]="ABCD", *p=s; printf("%c", *(p+1)); A.A B. B C. C D. D 答案:B 解析:p指向字符串首字符,*(p+1)是第二个字符'B'。 23. 以下说法正确的是( ) A. 实参和对应的形参共同占用一存储单元 B. 形参是虚拟的,不占存储单元 C. 只有当实参和形参同名时才共占存储单元 D. 形参和实参的类型必须一致 答案:D 解析:实参和形参类型必须一致,否则会发生类型转换或错误。A、B、C均错误,因为形参是局部变量,独立存储单元。 24. 以下程序段的输出结果是( ) char a[7]="abcde"; char b[4]="ABC"; strcpy(a,b); printf("%c",a[3]); A. 空格 B.‘\0 ’ C. e D. f 答案:B 解析:strcpy(a,b)的作用是要把数组b中的内容复制到数组a中。 25. 以下程序的功能是( ) #include <stdio.h> main() { int a[10], i, max; for(i=0; i<10; i++) scanf("%d", &a[i]); max=a[0]; for(i=1; i<10; i++) if(a[i]>max) max=a[i]; printf("%d", max); } A. 求数组a中所有元素的和 B. 求数组a中所有元素的平均值 C. 求数组a中最大值 D. 求数组a中最小值 答案:C 解析:程序先输入10个数,然后找出最大值并输出。 2、 简答题(每题5分,共15分) 1. 阅读程序,写出输出结果 #include <stdio.h> main() { int i, j; for(i=1; i<=4; i++) { for(j=1; j<=i; j++) printf("*"); printf(" "); } } 答案:输出: * ** 解析:外层循环控制行数,内层循环控制每行输出的星号个数,第i行输出i个星号。 2. 阅读程序,写出输出结果 #include <stdio.h> void swap(int x, int y) { int t; t=x; x=y; y=t; } main() { int a=3, b=5; swap(a, b); printf("a=%d, b=%d", a, b); } 答案:输出:a=3, b=5 解析:函数swap是值传递,交换的是形参x和y的值,不影响实参a和b。 3. 阅读程序,写出输出结果 #include <stdio.h> main() { int a[5]={1,2,3,4,5}, *p, *q; p=a; q=&a[4]; printf("%d ", *p++); printf("%d ", (*p)++); printf("%d ", *p); printf("%d ", *q); } 答案:输出:1 2 3 5 解析:p指向数组a的首元素,q指向a[4]。 *p++:先取*p即a[0]=1,然后p指向a[1]。 (*p)++:取*p即a[1]=2,输出2,然后a[1]自增变为3。 *p:此时p指向a[1],值为3。 *q:输出a[4]=5。 所以输出:1 2 3 5。 三、案例分析题(共3小题,每题5分,共15分) 1. 以下程序的功能是:输入10个整数,求它们的平均值(保留两位小数) #include <stdio.h> main() { int i, a[10]; float sum=0, avg; for(i=0; i<10; i++) scanf("%d", __①____); for(i=0; i<10; i++) sum = sum + __②____; avg = sum / 10; printf("average=%.2f ", avg); } 答案: ①:&a[i] ②:a[i] 解析:输入10个整数,累加求和,然后求平均值并保留两位小数。 2. 2. 以下程序的功能是:判断一个数是否为素数 #include <stdio.h> #include <math.h> main() { int n, i, flag=1; scanf("%d", &n); if(n<=1) flag=0; else { for(i=2; i<= ③ ; i++) if(n%i==0) { flag=0; ____④__; } } if(flag) printf("%d是素数", n); else printf("%d不是素数", n); } 答案:③:sqrt(n) 或 n-1 (教材中常用n-1,但用sqrt(n)效率更高) ④:break 解析:判断素数只需检查2到sqrt(n)之间的数,如果n能被i整除,则不是素数,标记flag=0并跳出循环。 3. 以下程序的功能是:用选择法对10个整数从小到大排序 #include <stdio.h> main() { int a[10], i, j, min, t; for(i=0; i<10; i++) scanf("%d", &a[i]); for(i=0; i<9; i++) { min=i; for(j=i+1; j<10; j++) if(__⑤____) min=j; if(min!=i) { t=a[i]; ⑥ a[min] = t; } } for(i=0; i<10; i++) printf("%d ", a[i]); } 答案: ⑤:a[j] < a[min] ⑥:a[i]=a[min]; 解析:选择排序,每次选择未排序部分的最小元素,与当前位置交换。min记录最小元素的下标,所以比较a[j]与a[min],如果a[j]更小,则更新min。交换时,用临时变量t交换a[i]和a[min]。 四、编程题(共2小题,每题10分,共20分) 1. 编写程序,输入一个不多于5位的正整数,要求: (1) 求它是几位数 (2) 按逆序输出各位数字,例如原数为123,输出321 答案: 参考代码: #include <stdio.h> main() { int n, digit=0, reversed=0; scanf("%d", &n); int temp=n; while(temp) { reversed = reversed*10 + temp%10; temp /= 10; digit++; } printf("位数:%d ", digit); printf("逆序:%d ", reversed); } 2. 编写函数,统计一个字符串中字母、数字、空格和其他字符的个数。在主函数中输入字符串并输出统计结果。 答案:参考代码: #include <stdio.h> void countChars(char str[]) { int letter=0, digit=0, space=0, other=0; for(int i=0; str[i]!='\0'; i++) { if(str[i]>=’a’&&str[i]<=’z’||tr[i]>=’A’&&str[i]<=’Z’) letter++; else if(tr[i]>=’0’&&str[i]<=’9’) digit++; else if(str[i]==‘ ’) space++; else other++; } printf("字母:%d 数字:%d 空格:%d 其他:%d ",letter,digit,space,other);} main() { char str[100]; printf("请输入字符串:"); gets(str); countChars(str); } 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $ 编写说明:本冲刺卷严格依据山东省软件与应用技术类高考考纲编写,依托《编程语言基础—C语言》(高教版第五版),聚焦高三考生冲刺需求,助力高效提分。内容上深度覆盖考纲掌握、理解层级考点,既系统梳理构建知识框架,又强化应用能力训练;同时结合近五年高考真题,精准把握高频考点、命题趋势与题型特点,确保贴合高考方向。 山东省软件与应用技术类 《C语言程序设计》高教版第五版 高频考点冲刺卷(二)原卷版 时间:60分钟 总分:100分 班级 姓名 学号 成绩 一、单选题(共25小题,每题2分,共50分) 1. 以下选项中,是合法的C语言标识符的是( ) A. 2a B. case C. _abc D. a+b 2. C语言源程序的基本单位是( ) A. 过程 B. 函数 C. 子程序 D. 标识符 3. 以下程序的输出结果为( ) #include<stdio.h> main( ) {int a=0,b=0; a=10; /*给a赋值x/ b=10; /*给b赋值*/ printf(“a+b=%d ”,a+b); /*输出计算结果*/ A.a+b=0 B. a+b=20 C. a+b=10 D. a+b=9 4.若有int year;,则以下选项能使表达式year % 4 == 0 && year % 100 != 0 || year % 400 == 0的值为真的是( ) A. 2023 B.2024 C. 2025 D. 2026 5. 以下程序的输出结果是( ) #include <stdio.h> main() { int x=10, y=3; printf("%d", y=x/y); } A. 0 B. 1 C. 3 D. 不确定的值 6. 以下程序段的输出结果是( ) int a=2, b=3, c=4; a = b = c; printf("%d %d %d", a, b, c); A. 4 4 4 B. 3 4 4 C. 2 3 4 D. 4 3 2 7. 设int a=5, b=6, c=7, d=8, m=2, n=2; 执行(m=a>b)&&(n=c>d)后n的值为( ) A. 0 B. 1 C. 2 D. 3 8. 以下关于switch语句的叙述中,正确的是( ) A. case后可以是常量或变量表达式 B. 必须包含default分支 C. break语句可有可无 D. case后的常量表达式值必须互不相同 9. 以下程序段的循环次数是( ) for(int i=0, j=5; i=j; i++, j--) printf("%d", i); A. 0 B. 5 C. 无限循环 D. 语法错误 10. 以下能正确定义一维数组的语句是( ) A. int n=5, a[n]; B. int a(5); C. #define N 5 int a[N]; D. int a[]; 11. 以下程序的输出结果是( ) #include <stdio.h> main() { int a[3][3]={{1,2},{3,4},{5,6}}, i, j, s=0; for(i=1; i<3; i++) for(j=0; j<=i; j++) s+=a[i][j]; printf("%d", s); } A. 18 B. 19 C. 20 D. 21 12. 以下关于数组初始化的描述中,错误的是( ) A. char s1[]="abc";与 char s2[]={'a','b','c'};等价 B. char s3[10]="abc"; 数组后7个元素为'\0' C. int a[5]={1,2,3,4,5}; 可以写成 int a[]={1,2,3,4,5}; D. int b[3]={0}; 表示所有元素初始化为0 13. 若用数组名作为函数调用的实参,传递给形参的是( ) A.数组的首地址 B. 数组第一个元素的值 C.数组中全部元素的值 D. 数组元素的个数 14. 以下程序的输出结果是( ) #include <stdio.h> void fun(int x) { x=20; } main() { int x=10; fun(x); printf("%d", x); } A. 10 B. 20 C. 不确定 D. 编译错误 15. 在C语言中,形参的缺省存储类别是( ) A. auto B. register C. static D. extern 16. 以下程序的输出结果是( ) #include <stdio.h> int f(int a) { static int b=3; b+=a; return b; } main() { int a=2; printf("%d ", f(a)); printf("%d", f(a)); } A. 5 5 B. 5 7 C. 5 10 D. 3 5 17. 宏定义 #define MUL(x,y) x*y 在使用MUL(1+2,3+4)时展开为( ) A. 1+2*3+4 B. (1+2)*(3+4) C. 21 D. 11 18.以下程序的输出结果是( ) main( ) {int i,s=0; for(i=1;i<10;i++) if(!(i%2)&&!(i%3)) s+=i; printf(“%d ”,s); } A. 45 B. 6 C. 5 D. 10 19. 以下程序的输出结果是( ) #include <stdio.h> main() { int i, sum=0; for(i=1; i<=10; i++) { if(i%3==0) break; sum+=i; } printf("%d", sum); } A. 3 B. 6 C. 10 D. 55 20. 若变量已正确定义,要求程序段计算5!,不能完成此操作的是( ) A. for(i=1,p=1; i<=5; i++) p*=i; B. for(i=1; i<=5; i++) { p=1; p*=i; } C. i=1; p=1; while(i<=5) { p*=i; i++; } D. i=1; p=1; do { p*=i; i++; } while(i<=5); 21. 以下数组定义中,错误的是( ) A. int x[][3]={{1,2,3},{4,5,6}}; B.int x[2][3]={1,2,3,4,5,6}; C. int x[][3]={1,2,3,4,5,6}; D. int x[2][]={1,2,3,4,5,6}; 22. 以下程序段的输出结果是( ) char s[]="ABCD", *p=s; printf("%c", *(p+1)); A.A B. B C. C D. D 23. 以下说法正确的是( ) A. 实参和对应的形参共同占用一存储单元 B. 形参是虚拟的,不占存储单元 C. 只有当实参和形参同名时才共占存储单元 D. 形参和实参的类型必须一致 24. 以下程序段的输出结果是( ) char a[7]="abcde"; char b[4]="ABC"; strcpy(a,b); printf("%c",a[3]); A. 空格 B.‘\0 ’ C. e D. f 25. 以下程序的功能是( ) #include <stdio.h> main() { int a[10], i, max; for(i=0; i<10; i++) scanf("%d", &a[i]); max=a[0]; for(i=1; i<10; i++) if(a[i]>max) max=a[i]; printf("%d", max); } A. 求数组a中所有元素的和 B. 求数组a中所有元素的平均值 C. 求数组a中最大值 D. 求数组a中最小值 2、 简答题(每题5分,共15分) 1. 阅读程序,写出输出结果 #include <stdio.h> main() { int i, j; for(i=1; i<=4; i++) { for(j=1; j<=i; j++) printf("*"); printf(" "); } } 2. 阅读程序,写出输出结果 #include <stdio.h> void swap(int x, int y) { int t; t=x; x=y; y=t; } main() { int a=3, b=5; swap(a, b); printf("a=%d, b=%d", a, b); } 3. 阅读程序,写出输出结果 #include <stdio.h> main() { int a[5]={1,2,3,4,5}, *p, *q; p=a; q=&a[4]; printf("%d ", *p++); printf("%d ", (*p)++); printf("%d ", *p); printf("%d ", *q); } 三、案例分析题(共3小题,每题5分,共15分) 1. 以下程序的功能是:输入10个整数,求它们的平均值(保留两位小数) #include <stdio.h> main() { int i, a[10]; float sum=0, avg; for(i=0; i<10; i++) scanf("%d", __①____); for(i=0; i<10; i++) sum = sum + __②____; avg = sum / 10; printf("average=%.2f ", avg); } 2. 以下程序的功能是:判断一个数是否为素数 #include <stdio.h> #include <math.h> main() { int n, i, flag=1; scanf("%d", &n); if(n<=1) flag=0; else { for(i=2; i<= ③ ; i++) if(n%i==0) { flag=0; ____④__; } } if(flag) printf("%d是素数", n); else printf("%d不是素数", n); } 3. 以下程序的功能是:用选择法对10个整数从小到大排序 #include <stdio.h> main() { int a[10], i, j, min, t; for(i=0; i<10; i++) scanf("%d", &a[i]); for(i=0; i<9; i++) { min=i; for(j=i+1; j<10; j++) if(__⑤____) min=j; if(min!=i) { t=a[i]; ⑥ a[min] = t; } } for(i=0; i<10; i++) printf("%d ", a[i]); } 四、编程题(共2小题,每题10分,共20分) 1. 编写程序,输入一个不多于5位的正整数,要求: (1) 求它是几位数 (2) 按逆序输出各位数字,例如原数为123,输出321 2. 编写函数,统计一个字符串中字母、数字、空格和其他字符的个数。在主函数中输入字符串并输出统计结果。 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $

资源预览图

《C语言程序设计》(高教版)山东省(春季高考)软件与应用技术 高频考点冲刺卷(二)
1
《C语言程序设计》(高教版)山东省(春季高考)软件与应用技术 高频考点冲刺卷(二)
2
《C语言程序设计》(高教版)山东省(春季高考)软件与应用技术 高频考点冲刺卷(二)
3
所属专辑
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。