内容正文:
编写说明:本冲刺卷严格依据山东省软件与应用技术类高考考纲编写,依托《编程语言基础——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);
}
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$