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

2026-01-16
| 2份
| 19页
| 61人阅读
| 0人下载

资源信息

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

内容正文:

编写说明:本冲刺卷严格依据山东省软件与应用技术类高考考纲编写,依托《编程语言基础——C语言》(高教版第五版),聚焦高三考生冲刺需求,助力高效提分。内容上深度覆盖考纲掌握、理解层级考点,既系统梳理构建知识框架,又强化应用能力训练;同时结合近五年高考真题,精准把握高频考点、命题趋势与题型特点,确保贴合高考方向。 山东省软件与应用技术类 《编程语言基础——C语言》高教版第五版 高频考点冲刺卷(四)原卷版 时间:60分钟 总分:100分 班级 姓名 学号 成绩 一、单项选择题(共25小题,每题2分,共50分) 1.以下关于C语言的描述中,正确的是( )。 A. C语言是面向对象的语言 B. C语言程序总是从第一个函数开始执行 C. C语言程序必须包含一个main函数 D. C语言程序中的注释可以嵌套 2.下面四个选项中,均是合法的整型常量的选项是( )。 A. 160 -0xffff 011 B. 23L 1234 oxaf C. 32345 101 3e4 D. -0x48a 2e5 0x 3.以下选项中,均不是C语言关键字的是( )。 A. switch file type B. printf scanf FOR C. case char sin D. return case if 4.设有定义:int a=5, b=2;,则表达式(!a||b- -)的值是( )。 A. 2.5 B. 2 C. 3 D. 1 5.以下程序的运行结果是( )。 main() { int k = 4, a =3, b = 2, c = 1; printf (" %d ", k < a ? k : c < b ? c: a); } A. 1 B.2 C.3 D. 4 6.以下程序的输出结果是( )。 main() { int x = 2, y = -1, z = 2; if (x < y) if (y < 0) z = 0; else z + = 1; printf("%d ",z); } A. 1 B. 2 C. 0 D. 3 7.若有定义:int a=3, b=4, c=5;,则以下表达式中值为0的是( )。 A. a&&b B. a<=b C. a||b+c&&b-c D. !(a<b&&c>a) 8.下面程序的运行结果是( )。 #include <stdio.h> main() { int y = 10; do { y --; } while (-- y); printf (" %d ", y --); } A. 0 B. 1 C. 2 D. -1 9.对以下的for循环,说法正确的是( )。 for (x = 0, y = 0; (y! = 123) && (x < 4); x ++); A. 执行3次 B. 执行4次 C. 循环次数不定 D. 是无限循环 10.以下程序的输出结果是( )。 #include <stdio.h> main() { int x=1, y=2, z=3; if(x>y) if(y>z) printf("%d", z); else printf("%d", y); else printf("%d", x); } A. 1 B. 2 C. 3 D. 无输出 11.以下程序的输出结果是( )。 #include <stdio.h> main() { int a=0, i; for(i=0; i<5; i++) { if(i%2==0) continue; a++; } printf("%d", a); } A. 0 B. 1 C. 2 D. 3 12.以下程序的输出结果是( )。 #include <stdio.h> main() { int i, s=0; for(i=1; i<=5; i++) { s+=i; if(s>5) break; } printf("%d", i); } A. 3 B. 4 C. 5 D. 6 13.以下数组定义中,正确的是( )。 A.int a[]; B.int n=5, a[n]; C.int a[5]={1,2,3,4,5,6}; D.int a[]={1,2,3}; 14.若有定义:int a[3][4];,则以下对数组元素的引用中,正确的是( )。 A.a[2][4] B.a[2][3] C.a[1,2] D.a(2)(3) 15.以下程序的输出结果是( )。 #include <stdio.h> main() { int a[5]={1,2,3,4,5}, i; for(i=4; i>=0; i--) printf("%d ", a[i]); } A. 1 2 3 4 5 B. 5 4 3 2 1 C. 5 4 3 2 1 0 D. 0 1 2 3 4 16.以下程序的输出结果是( )。 #include <stdio.h> main() { char str[]="hello"; printf("%d", sizeof(str)); } A. 5 B. 6 C. 7 D. 8 17.以下程序的输出结果是( )。 #include <stdio.h> int fun(int x) { static int n = 1; n += x; return n; } main() { int a = 3; printf("%d", fun(a+2) + fun(a+2)); } A.9 B. 25 C. 11 D. 17 18.以下关于函数的叙述中,错误的是( )。 A. 函数可以没有返回值 B. 函数可以没有参数 C. 函数必须返回一个值 D. 函数可以嵌套调用 19.以下程序的输出结果是( )。 #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("%d %d", a, b); } A. 3 5 B. 5 3 C. 3 3 D. 5 5 20.以下程序的输出结果是( )。 #include <stdio.h> int f() { static a=0; a++; return a;} main() { int i, s=0; for(i=0; i<3; i++) s+=f(); printf("%d", s); } A. 3 B. 6 C. 9 D. 0 21.若有以下说明,则数值为4的表达式是( ) int a[12]={1,2,3,4,5,6,7,8,9,10,11,12}; char c='a',d,g; A. a[g-c] B. a[4] C. a['d'-'c'] D.a['d'-c] 22.以下程序的输出结果是( )。 #include <stdio.h> main() { int a=10, *p; p=&a; printf("%d", ++(*p)); } A. 10 B. 11 C. 地址 D. 编译错误 23.以下程序的输出结果是( )。 #include <stdio.h> main() { int a=5, b=6, c=7; int *pa=&a, *pb=&b, *pc=&c; *pc=*pa+*pb; printf("%d", c); } A. 5 B. 6 C. 11 D. 12 24.以下程序的输出结果是( )。 #include <stdio.h> main() { int a[3]={1,2,3}; int *p=a; printf("%d", *(p+1)); } A. 1 B. 2 C. 3 D. 地址 25.下面程序段的运行结果是( )。 char a[ ] = "language",*p; p = a; while (*p ! = 'u') { printf ("%c",*p - 32); p++; } A. LANGUAGE B. language C. LANG D. langUAGE 二、简答题(共3小题,每题5分,共15分) 1.阅读程序,写出运行结果: #include <stdio.h> main() { int i, j, k=0; for(i=0; i<2; i++) for(j=0; j<3; j++) k++; printf("%d", k); } 2.阅读程序,写出运行结果: #include <stdio.h> main() { int a=5, b=10, c=3; if(a = b > c ? a++ : ++b) printf("%d %d", a, b); } 3.阅读以下程序,写出运行结果: #include <stdio.h> void num() { extern int x,y; int a=15,b=10; x=a-b; y=a+b; } int x,y; main() { int a=7,b=5; x=a-b; y=a+b; num(); printf("%d,%d ",x,y); } 三、案例分析题(共3小题,每题5分,共15分) 1.以下程序用于计算1到100之间的奇数之和,请补充完整。 #include <stdio.h>main() { int i, sum=0; for(i=1; ① ; i++) { if( ② ) sum+=i; } printf("%d", sum); } 2.以下程序用于求两个整数的最大值,请补充完整。 #include <stdio.h> int max(int x, int y) { return ③ ; main() { int a=3, b=5; printf("%d", ④ ); } 3.以下程序用于将数组中的元素逆序存放,请补充完整。 #include <stdio.h> main() { int a[5]={1,2,3,4,5}, i, temp; for(i=0; i<5/2; i++) { temp=a[i]; a[i]=a[ ⑤ ]; a[ ⑥ ]=temp; } for(i=0; i<5; i++) printf("%d ", a[i]); } 四、综合应用题(共2小题,每题10分,共20分) 1. 编程输出以下图形 1 2 3 4 5 6 7 8 9 10 2.编写函数int isPrime(int n),判断一个正整数是否为素数(素数是指只能被1和自身整除的大于1的整数)。在主函数中输入一个整数,调用该函数判断是否为素数,并输出相应信息。 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $ 编写说明:本冲刺卷严格依据山东省软件与应用技术类高考考纲编写,依托《编程语言基础——C语言》(高教版第五版),聚焦高三考生冲刺需求,助力高效提分。内容上深度覆盖考纲掌握、理解层级考点,既系统梳理构建知识框架,又强化应用能力训练;同时结合近五年高考真题,精准把握高频考点、命题趋势与题型特点,确保贴合高考方向。 山东省软件与应用技术类 《编程语言基础——C语言》高教版第五版 高频考点冲刺卷(四)解析版 时间:60分钟 总分:100分 班级 姓名 学号 成绩 一、单项选择题(共25小题,每题2分,共50分) 1.以下关于C语言的描述中,正确的是( )。 A. C语言是面向对象的语言 B. C语言程序总是从第一个函数开始执行 C. C语言程序必须包含一个main函数 D. C语言程序中的注释可以嵌套 答案:C 解析:C语言是面向过程的语言,程序从main函数开始执行,必须有一个main函数,注释不能嵌套。 2.下面四个选项中,均是合法的整型常量的选项是( )。 A. 160 -0xffff 011 B. 23L 1234 oxaf C. 32345 101 3e4 D. -0x48a 2e5 0x 答案:A 解析:十六进制:以0x/0X开头,由 0-9、a-f/A-F 组成;B选项中的oxaf不合法;C选项中3e4不是整形常量;D选项中2e5不是整形常量,0x不合法。 3.以下选项中,均不是C语言关键字的是( )。 A. switch file type B. printf scanf FOR C. case char sin D. return case if 答案:B 解析:printf、scanf是库函数不是关键字,FOR是大写,所以不是关键字。 4.设有定义:int a=5, b=2;,则表达式(!a||b- -)的值是( )。 A. 2.5 B. 2 C. 3 D. 1 答案:D 解析:!a的值为0,b--的值为2,0||2的值为1。 5.以下程序的运行结果是( )。 main() { int k = 4, a =3, b = 2, c = 1; printf (" %d ", k < a ? k : c < b ? c: a); } A. 1 B.2 C.3 D. 4 答案:A 解析:k<a即4 <3,结果为假,因此转向冒号后的部分 (c < b ? c : a)。c < b 即1<2,结果为真,因此取c的值1。故表达式的结果为1,程序输出 1。 6.以下程序的输出结果是( )。 main() { int x = 2, y = -1, z = 2; if (x < y) if (y < 0) z = 0; else z + = 1; printf("%d ",z); } A. 1 B. 2 C. 0 D. 3 答案:B 解析:x<y为假,if语句不执行,直接执行输出语句,输出z的值为2。 7.若有定义:int a=3, b=4, c=5;,则以下表达式中值为0的是( )。 A. a&&b B. a<=b C. a||b+c&&b-c D. !(a<b&&c>a) 答案:D 解析:A为真,值为1;B为真,值为1;C中b+c=9为真,b-c=-1为真,a为真,所以整体为真,值为1;D中a<b为真,c>a为真,真&&真为真,!真为假,值为0。 8.下面程序的运行结果是( )。 #include <stdio.h> main() { int y = 10; do { y --; } while (-- y); printf (" %d ", y --); } A. 0 B. 1 C. 2 D. -1 答案:A 解析:程序运行过程如下: 1. 初始值y = 10。 2. 进入 do-while 循环: 第一次循环:执行y--,y 变为 9;判断--y,y 先减为 8,条件为真。 第二次循环:执行y--,y 变为 7;判断--y,y 先减为 6,条件为真。 第三次循环:执行y--,y 变为 5;判断--y,y 先减为 4,条件为真。 第四次循环:执行y--,y 变为 3;判断--y,y 先减为 2,条件为真。 第五次循环:执行y--,y 变为 1;判断--y,y 先减为 0,条件为假,循环结束。 3. 循环结束后y = 0。 4. 执行printf(" %d ", y--);,先打印y 的当前值 0,然后y 自减为 -1。 因此,输出结果为0。 9.对以下的for循环,说法正确的是( )。 for (x = 0, y = 0; (y! = 123) && (x < 4); x ++); A. 执行3次 B. 执行4次 C. 循环次数不定 D. 是无限循环 答案:B 解析:该循环的初始化部分为x = 0, y = 0;条件为(y != 123)&&(x<4)。由于y始终为 0,y != 123恒真,所以循环条件实际上取决于x < 4。x从0开始,每次循环后自增 1,当x为 0、1、2、3时条件为真,循环执行4次;当x变为4时条件为假,循环结束。因此,循环执行4次。 10.以下程序的输出结果是( )。 #include <stdio.h> main() { int x=1, y=2, z=3; if(x>y) if(y>z) printf("%d", z); else printf("%d", y); else printf("%d", x); } A. 1 B. 2 C. 3 D. 无输出 答案:A 解析:else与最近的if配对,所以外层if的else对应if(x>y),x>y为假,执行else输出x的值1。 11.以下程序的输出结果是( )。 #include <stdio.h> main() { int a=0, i; for(i=0; i<5; i++) { if(i%2==0) continue; a++; } printf("%d", a); } A. 0 B. 1 C. 2 D. 3 答案:C 解析:循环5次,i=0,1,2,3,4。当i为偶数时跳过a++,所以i=1和3时执行a++,a从0增加到2。 12.以下程序的输出结果是( )。 #include <stdio.h> main() { int i, s=0; for(i=1; i<=5; i++) { s+=i; if(s>5) break; } printf("%d", i); } A. 3 B. 4 C. 5 D. 6 答案:A 解析:输出的是i,当i=3时,s=6>5,break,输出i=3。所以答案应为A。 13.以下数组定义中,正确的是( )。 A.int a[]; B.int n=5, a[n]; C.int a[5]={1,2,3,4,5,6}; D.int a[]={1,2,3}; 答案:D 解析:A没有指定大小;B中n是变量,C语言中数组大小必须是常量;C初始化值个数大于数组大小;D正确。 14.若有定义:int a[3][4];,则以下对数组元素的引用中,正确的是( )。 A.a[2][4] B.a[2][3] C.a[1,2] D.a(2)(3) 答案:B 解析:数组下标从0开始,a[3][4]的行下标0~2,列下标0~3,所以a[2][3]是最后一个元素。A选项中列下标越界,C、D写法错误。 15.以下程序的输出结果是( )。 #include <stdio.h> main() { int a[5]={1,2,3,4,5}, i; for(i=4; i>=0; i--) printf("%d ", a[i]); } A. 1 2 3 4 5 B. 5 4 3 2 1 C. 5 4 3 2 1 0 D. 0 1 2 3 4 答案:B 解析:逆序输出数组元素。 16.以下程序的输出结果是( )。 #include <stdio.h> main() { char str[]="hello"; printf("%d", sizeof(str)); } A. 5 B. 6 C. 7 D. 8 答案:B 解析:字符串"hello"有5个字符加结尾的结束符‘\0’,所以数组str的大小为6。 17.以下程序的输出结果是( )。 #include <stdio.h> int fun(int x) { static int n = 1; n += x; return n; } main() { int a = 3; printf("%d", fun(a+2) + fun(a+2)); } A.9 B. 25 C. 11 D. 17 答案:D 解析:第一次调用 fun(5): n 初始为1,执行 n+=x 后 n=6,返回6。第二次调用fun(5):n的初始值是6,执行 n+=5 后 n=11,返回11。所以结果是 6+11=17。 18.以下关于函数的叙述中,错误的是( )。 A. 函数可以没有返回值 B. 函数可以没有参数 C. 函数必须返回一个值 D. 函数可以嵌套调用 答案:C 解析:函数可以没有返回值,用void定义。 19.以下程序的输出结果是( )。 #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("%d %d", a, b); } A. 3 5 B. 5 3 C. 3 3 D. 5 5 答案:A 解析:函数参数是值传递,不能交换实参的值。 20.以下程序的输出结果是( )。 #include <stdio.h> int f() { static a=0; a++; return a;} main() { int i, s=0; for(i=0; i<3; i++) s+=f(); printf("%d", s); } A. 3 B. 6 C. 9 D. 0 答案:B 解析:静态局部变量a只初始化一次,每次调用f(),a自增1,第一次返回1,第二次返回2,第三次返回3,累加得6。 21.若有以下说明,则数值为4的表达式是( ) int a[12]={1,2,3,4,5,6,7,8,9,10,11,12}; char c='a',d,g; A. a[g-c] B. a[4] C. a['d'-'c'] D.a['d'-c] 答案:D 解析:数组下标从0开始,值为4的元素是第3个元素。 22.以下程序的输出结果是( )。 #include <stdio.h> main() { int a=10, *p; p=&a; printf("%d", ++(*p)); } A. 10 B. 11 C. 地址 D. 编译错误 答案:B 解析:p指向a,p即a,++(p)使a增加为11。 23.以下程序的输出结果是( )。 #include <stdio.h> main() { int a=5, b=6, c=7; int *pa=&a, *pb=&b, *pc=&c; *pc=*pa+*pb; printf("%d", c); } A. 5 B. 6 C. 11 D. 12 答案:C 解析:pc=c,pa=a,*pb=b,所以c=a+b=5+6=11。 24.以下程序的输出结果是( )。 #include <stdio.h> main() { int a[3]={1,2,3}; int *p=a; printf("%d", *(p+1)); } A. 1 B. 2 C. 3 D. 地址 答案:B 解析:p指向a[0],p+1指向a[1],*(p+1)=a[1]=2。 25.下面程序段的运行结果是( )。 char a[ ] = "language",*p; p = a; while (*p ! = 'u') { printf ("%c",*p - 32); p++; } A. LANGUAGE B. language C. LANG D. langUAGE 答案:C 解析:指针p指向字符数组的首地址,在whil 循环中,只要p指向的字符不是'u',就将该字符减去 32 转换为大写字母并输出,然后将指针p后移一位。所以最终输出LANG。 二、简答题(共3小题,每题5分,共15分) 1.阅读程序,写出运行结果: #include <stdio.h> main() { int i, j, k=0; for(i=0; i<2; i++) for(j=0; j<3; j++) k++; printf("%d", k); } 答案:6 解析:外层循环2次,内层循环3次,总共循环6次,k从0开始每次加1,最终k=6。 2.阅读程序,写出运行结果: #include <stdio.h> main() { int a=5, b=10, c=3; if(a = b > c ? a++ : ++b) printf("%d %d", a, b); } 答案:5,10 解析: b>c为真(10>3),则三目运算,取a++(先取值5,后自增a为6),赋值运算,a=5;if(5)为真,输出:a=5, b=10(b未变化)。 3.阅读以下程序,写出运行结果: #include <stdio.h> void num() { extern int x,y; int a=15,b=10; x=a-b; y=a+b; } int x,y; main() { int a=7,b=5; x=a-b; y=a+b; num(); printf("%d,%d ",x,y); } 答案:5,25 解析:main函数外定义全局变量x和y。main函数中,局部变量a=7, b=5,计算并赋值:x=a-b=2,y=a+b=12;调用num函数,通过extern声明使用全局变量x和y,局部变量a=15,b=10,重新赋值全局变量:x = a - b = 5,y = a + b = 25返回main函数,打印全局变量x和y的值,输出为5,25。 三、案例分析题(共3小题,每题5分,共15分) 1.以下程序用于计算1到100之间的奇数之和,请补充完整。 #include <stdio.h>main() { int i, sum=0; for(i=1; ① ; i++) { if( ② ) sum+=i; } printf("%d", sum); } 答案: ①i<=100 ②i%2!=0 或 i%2==1 解析:1到100作为循环条件,即i奇数不能被2整除,即i%2不等于0。 2.以下程序用于求两个整数的最大值,请补充完整。 #include <stdio.h> int max(int x, int y) { return ③ ; main() { int a=3, b=5; printf("%d", ④ ); } 答案:③x>y?x:y ④max(a,b) 解析:条件表达式,如果x大返回x,否则返回y。调用max函数 3.以下程序用于将数组中的元素逆序存放,请补充完整。 #include <stdio.h> main() { int a[5]={1,2,3,4,5}, i, temp; for(i=0; i<5/2; i++) { temp=a[i]; a[i]=a[ ⑤ ]; a[ ⑥ ]=temp; } for(i=0; i<5; i++) printf("%d ", a[i]); } 答案:⑤4-i ⑥ 4-i 解析:数组下标从0到4,第i个元素与第4-i个元素交换。 四、综合应用题(共2小题,每题10分,共20分) 1. 编程输出以下图形 1 2 3 4 5 6 7 8 9 10 #include <stdio.h> main() { int i, j, k = 1; for(i=1;i<=4;i++) {for(j=4;j>=i;j--) printf(" "); for(j=1;j<=i;j++) {printf("%2d",k++); } printf(" "); } } 2.编写函数int isPrime(int n),判断一个正整数是否为素数(素数是指只能被1和自身整除的大于1的整数)。在主函数中输入一个整数,调用该函数判断是否为素数,并输出相应信息。 参考代码: #include <stdio.h>int isPrime(int n) { int i; if(n<=1) for(i=2; i<=n/2; i++) { if(n%i==0) } return 1;}main() { int n; scanf("%d", &n); if(isPrime(n)) printf("%d是素数", n); else printf("%d不是素数", n); } 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $

资源预览图

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