返回试卷 在打印对话框中选择「另存为 PDF」即可下载

2022年04月高等教育自学考试《13013高级语言程序设计》试题

13013高级语言程序设计 / 历年真题 共 34 题 更新于 2026-09-28

一、单选题

在每小题列出的四个备选项中只有一个是符合题目要求的。错选、多选或未选均无分。

1.
以下不属于C语言关键字的是( )。
  • A.do
  • B.case
  • C.extern
  • D.scanf

参考答案D

解析C语言关键字是语言规定有特定含义的词。do、case、extern都是C语言关键字,而scanf是标准输入函数,不是关键字。
故本题答案为D项。
2.
设float x=2.3:,表达式(int)(x+2.5)和(int)x+2.5的值分别是( )。
  • A.4,4.5
  • B.5,4.5
  • C.4,4.0
  • D.5,4.0

参考答案A

解析首先,我们来看这两个表达式的区别。1.`(int)(x+2.5)`:这里首先计算`x+2.5`,即`2.3+2.5=4.8`。然后,将结果`4.8`强制转换为整数,根据强制类型转换的规则,小数部分会被截断,所以结果是`4`。2.`(int)x+2.5`:这里首先将`x`强制转换为整数,即`(int)2.3`,结果是`2`(小数部分被截断)。然后,将这个结果与`2.5`相加,即`2+2.5=4.5`。综上所述:`(int)(x+2.5)`的值是`4`。`(int)x+2.5`的值是`4.5`。
故本题答案为项A。
3.
设int a=2;,下列表达式正确的是( )。
  • A.a题目图片0
  • B.a%3
  • C.!a-a
  • D.aE3.0

参考答案B

解析
A项:图片中运算符显示不完整,无法准确判断其运算逻辑,所以不能确定该表达式是否正确。
B项:a % 3是取余运算,%是C语言中的取余运算符,用于计算a除以3的余数。已知a = 2 ,2 % 3结果为2 ,该表达式在语法和运算逻辑上都是正确的。
C项:!a - a中,!是逻辑非运算符,作用于a时,因为a为非零值(a = 2 ) ,所以!a结果为0 ,但!一般用于逻辑判断场景,这里与算术运算- a混合使用不符合常规运算逻辑,该表达式不正确。
D项:aE3.0不是C语言中的合法表达式,C语言中没有这种将变量与科学计数法表示形式直接结合的运算形式。
故本题答案为B项。
4.
表达式2>3,1,2的值是( )。
  • A.3
  • B.2
  • C.1
  • D.0

参考答案B

解析逗号表达式,是c语言中的逗号运算符,优先级别最低,它将两个及其以上的式子联接起来,从左往右逐个计算表达式,整个表达式的值为最后一个表达式的值。所以,本题有3个表达式,而最终的结果是取最右边的表达式的值即2。
故本题答案为B项。
5.
设int a=-1,b=3;,执行语句printf("%d\n",a?a+b:a-b);后输出结果是( )。
  • A.-4
  • B.-1
  • C.2
  • D.3

参考答案C

解析`a?a+b:a-b`是一个条件表达式。条件表达式的格式为`表达式1?表达式2:表达式3`,如果`表达式1`的值为非0(真),则整个条件表达式的值为`表达式2`的值;如果`表达式1`的值为0(假),则整个条件表达式的值为`表达式3`的值。这里`a=-1`,`-1`是非0值,即条件为真,所以会执行`a+b`。已知`a=-1`,`b=3`,那么`a+b=-1+3=2`。
故本题答案为C项。
6.
对某文件进行读操作,若未到达文件尾时,调用函数feof( ),则该函数的返回值是( )。
  • A.-1
  • B.0
  • C.1
  • D.非0

参考答案B

解析`feof`函数用于检测文件是否到达文件尾。当未到达文件尾时,`feof`函数返回值为0;当到达文件尾时,`feof`函数返回非0值(一般为1)。
故本题答案为B项。
7.
设int k=20;下列语句正确的是( )。
  • A.for(;k<=20;);
  • B.for(k<20;k++);
  • C.scanf("%d\n",k);
  • D.scanf("%f\n",&k);

参考答案A

解析
A项:for(;k<=20;);是合法的for循环语句。其中循环体为空语句(即; ),初始条件省略(可在循环前设置好k的值),只要k的值满足k <= 20 (当前k = 20满足条件),循环就会持续执行空操作,该语句正确。
B项:for(k<20;k++);语法错误,for循环的第一个表达式应该是用于初始化循环变量的(可省略),这里k<20是一个条件判断表达式,不符合for循环语法规则。
C项:scanf("%d\n",k);错误,scanf函数用于输入数据,要求输入项必须是变量的地址,而这里直接写变量k ,没有取地址符& ,无法正确接收输入。
D项:scanf("%f\n",&k);错误,%f是用于读取浮点数的格式控制符,而k是int类型变量,格式控制符与变量类型不匹配,不能正确读取输入。
故本题答案为A项。
8.
下列定义正确的是( )。
  • A.int b[5];
  • B.int b[5.0];
  • C.int b[5][];
  • D.int b[][5];

参考答案A

解析数组定义时,数组大小必须是常量表达式且为整数,二维数组定义时行可省略但列不可省略。A项定义一维数组,大小为5,正确;B项数组大小为5.0不是整数,错误;C项二维数组列未指定,错误;D项虽列指定但行省略无初始化数据,错误。
故本题答案为A项。
9.
设chars[]={`1`,`\n`,`2`,`3`,`4`,`\0`};,执行pintf("%s\n",s);后输出结果是( )。
  • A.1
  • B.1234
  • C.题目图片
  • D.题目图片

参考答案D

解析在C语言中,printf("%s\n", s);里的%s格式控制符用于输出字符串,它会从指定地址(这里是s数组首地址)开始,依次输出字符,直到遇到字符串结束符'\0'为止。
字符数组s中,'\n'是换行符,它只是控制输出格式的字符,不是字符串结束符。所以从'1'开始输出,依次输出'1' 、'\n' (换行)、'2' 、'3' 、'4' ,直到遇到'\0'停止,最终输出结果是先输出1 ,然后换行,再输出234 。
故本题答案为D项。
10.
下列关于C语言变量的说法正确的是( )。
  • A.不同函数中的变量不可以同名
  • B.局部变量与全局变量不可以同名
  • C.局部变量与全局变量可以同名,两者的作用域不同
  • D.局部变量与全局变量可以同名,两者的作用域相同

参考答案C

解析在C语言中,不同函数的变量可同名,因为它们作用域不同互不干扰;局部变量和全局变量也可同名,此时在局部变量作用域内,全局变量被屏蔽,两者作用域不同。
故本题答案为C项。
11.
设char q[]="Hua\nWei";,执行语句printf("%d,%d",sizeof(q),stelen(q));后输出结果( )。
  • A.3,4
  • B.7,6
  • C.7,8
  • D.8,7

参考答案D

解析sizeof(q):sizeof运算符用于计算数据类型或变量所占的字节数。字符数组q存储字符串"Hua\nWei" ,该字符串本身有6个字符(包括'\n'这个转义字符),但在C语言中,字符串会自动在末尾添加一个字符串结束符'\0' ,所以整个字符数组占用8个字节,即sizeof(q)的值为8。
strlen(q):strlen函数用于计算字符串的长度,不包括字符串结束符'\0' 。对于字符串"Hua\nWei" ,其长度为7 ,所以strlen(q)的值为7。
因此,执行printf("%d,%d",sizeof(q),strlen(q));后输出结果是8,7。
故本题答案为D项。
12.
设char u,v[]={"China"},*p=v;,正确的赋值语句是( )。
  • A.u=*p;
  • B.*u=v;
  • C.v=p;
  • D.*u=*p;

参考答案A

解析
A项:`*p`是取指针`p`所指向的字符,即`'C'`,`u`是字符型变量,可以将`*p`的值赋给`u`,该赋值语句合理。
B项:`u`是字符型变量,不能进行`*u`这样的操作(因为它不是指针),而且`v`是字符数组名,代表首地址,不能这样赋值给`*u`。
C项:`v`是数组名,是常量指针,不能被赋值。
D项:同B项,`u`不是指针,不能进行`*u`这样的操作。
故本题答案为A项。
13.
设typedef struct st{int m;float n;}Ex;,则Ex是( )。
  • A.结构体变量名
  • B.结构体成员名
  • C.结构体类型指针名
  • D.结构体类型别名

参考答案D

解析`typedef`关键字用于给已有的数据类型定义一个新的别名。这里`typedef struct st{int m;float n;}Ex;`是为`struct st`这个结构体类型定义了一个别名`Ex`。
故本题答案为D项。
14.
设int*p[3];,则p是( )。
  • A.整型变量
  • B.整型数组
  • C.整型指针数组
  • D.指向整型数组的指针

参考答案C

解析`int*p[3];`中,`[]`优先级高于`*`,所以`p`先与`[3]`结合,说明`p`是一个有3个元素的数组,数组每个元素类型是`int*`,即整型指针,所以`p`是整型指针数组。
故本题答案为C项。
15.
下列运算符优先级最低的是( )。
  • A.!
  • B.=
  • C.==
  • D.?:

参考答案B

解析在C/C++等常见编程语言中,赋值运算符"="优先级相对较低。"!"是逻辑非运算符,优先级较高;"=="是关系运算符,优先级高于赋值运算符;"?:"是条件运算符,优先级也高于赋值运算符。
故本题答案为B项。

二、填空题

主观题不参与评分,请参考答案自行评分。

16.
实型数0.002的指数表示形式是_____。

参考答案2e-3。

解析
17.
C语言规定,用户标识符的首字符是_____或下划线。

参考答案英文字母

解析
18.
语句printf("\\");的执行结果是_____。

参考答案\

解析
19.
设double x;,则取变量x地址的表达式是_____。

参考答案&x。

解析
20.
设int a=1,b=2;,则执行printf("%d\n"(a,b));后输出结果是_____。

参考答案2。

解析
21.
设char s[10]="uvw\0xyz";,则执行printf("%s\n",s);后输出结果是_____。

参考答案uvw。

解析
22.
若函数的形参是变量名,而实参是常量,则参数传递的方式是_____。

参考答案值传递(或传值)。

解析
23.
设int t[10],*q=t,则使用指针引用数组t的第一个元素的方法是_____。

参考答案*q(或*t或q[0])。

解析
24.
设#define N"China",则执行printf("%s\n",N);后输出结果是_____。

参考答案China。

解析
25.
使用库函数sin( )所需的文件包含命令是_____。

参考答案#include<math.h>(或#include"math.h")。

三、程序分析题

主观题不参与评分,请参考答案自行评分。

26.
题目图片

参考答案详见解析

解析9 9 5 5 7。
27.
题目图片

参考答案详见解析

解析21。
28.
题目图片

参考答案详见解析

解析2 6 12 20 30。
29.
题目图片

参考答案详见解析

解析45 37 29
51 40 29。

四、程序填空题

主观题不参与评分,请参考答案自行评分。

30.
题目图片

参考答案详见解析

解析第一空:s[i](或s+i)
第二空:strcmp(s[0],s[1])(或strcmp(s,s+1))
第三空:t。
31.
题目图片

参考答案详见解析

解析第一空:strlen( )
第二空:1=l-1
第三空:s。
32.
题目图片

参考答案详见解析

解析第一空:"wb"(或"wb+")
第二空:&s[i],sizeof(struct ST),1,fp
第三空:s[i].name。

五、程序设计题

主观题不参与评分,请参考答案自行评分。

33.
利用二重循环输出如下图形。
题目图片

参考答案详见解析

解析题目图片
34.
输入10个整数,按升序排序后输出。

参考答案详见解析

解析题目图片