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

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

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

一、单选题

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

1.
C语言的关键字是( )。
  • A.strepy
  • B.printf
  • C.stdio
  • D.float

参考答案D

解析A项"strepy"不是C语言关键字,正确的字符串复制函数是"strcpy";B项"printf"是C语言标准库函数,不是关键字;C项"stdio"是C语言标准输入输出头文件,不是关键字;D项"float"是C语言用于声明浮点型变量的关键字。
故本题答案为D项。
2.
错误的表达式是( )。
  • A.20%5
  • B.20/5
  • C.20.8%5
  • D.20.8/5

参考答案C

解析在C语言等编程语言中,取余运算符"%"两边的操作数必须是整数,20.8是浮点数,所以20.8%5这种表达式是错误的。A项20%5,20和5都是整数,取余操作合法。B项20/5,整数除法,合法。D项20.8/5,浮点数与整数相除,合法。
故本题答案为C项。
3.
设int x10,y=5;,表达式x++,x+y++的值是( )。
  • A.10
  • B.11
  • C.15
  • D.16

参考答案D

解析首先,`x++`是后置自增运算符,表达式`x++`的值是自增前的`x`,即10,然后`x`增加到11。接下来,`x+y++`此时`x`已经是11,`y++`是后置自增运算,表达式`y++`的值是自增前的`y`,即5,然后`y`增加到6。因此,`x+y++`的值为11+5=16。
故本题答案为D项。
4.
设int a,循环次数为10的语句是( )。
  • A.for(a=0;a=10;a++)
  • B.for(a=0;a==10;a++);
  • C.for(a=0;a<10;a++);
  • D.for(a=0;a
    =10;a++);

参考答案C

解析在`for`循环语句`for(初始化表达式;条件表达式;循环变量更新表达式)`中,条件表达式为真时循环继续执行,为假时循环结束。A项中`a=10`是赋值表达式,其值恒为10(非0,即逻辑真),会导致死循环。B项中`a==10`,初始`a=0`,条件为假,循环一次都不执行。C项中`a<10`,从`a=0`开始,每次`a++`,当`a`从0变化到9时条件为真,循环执行10次。D项语句不完整,语法错误。
故本题答案为C项。
5.
当循环语句while(表达式)结束时,"表达式"的值是( )。
  • A.0
  • B.1
  • C.-1
  • D.非0

参考答案A

解析在C语言等编程语言中,while循环条件表达式值为非0时,执行循环体;当表达式值为0时,循环结束。
故本题答案为A项。
6.
设int a=1,b=2,c=3;,不能将变量c的值赋给变量a和b的表达式是( )。
  • A.a=c,b=c
  • B.a=(b=c++)
  • C.(a=c)
  • (b=c)
  • D.(a=c)&&(b=c)

参考答案C

解析
A项:"a=c,b=c"是逗号表达式,先执行"a=c",a的值变为3,再执行"b=c",b的值也变为3。
B项:"a=(b=c++)",先将c的值赋给b,b变为3,再将b的值赋给a,a也变为3,同时c自增为4。
C项:"(a=c)||(b=c)",逻辑或运算,先执行"a=c",a变为3,由于"a=c"的值非0(为真),逻辑或运算短路,不会执行"b=c",所以b的值不会变为3。
D项:"(a=c)\u0026\u0026(b=c)",逻辑与运算,先执行"a=c",a变为3,"a=c"值非0(为真),继续执行"b=c",b也变为3。
7.
下列变量定义正确的是( )。
  • A.int a6;
  • B.double-a6;
  • C.float6a;
  • D.char Ab*:

参考答案A

解析变量名只能由字母、数字、下划线组成,且不能以数字开头,B项中变量名含-非法,C项以数字开头非法,D项中含*非法,A项符合命名规则。
故本题答案为A项。
8.
关于函数不正确的说法是( )。
  • A.可以没有返回值
  • B.可以没有形式参数
  • C.返回值可以是指针类型
  • D.一个函数中可以定义另一函数

参考答案D

解析在C、C++等常见编程语言中,函数内部不允许再定义函数。
A项:函数可通过void类型表示无返回值;
B项:函数参数列表可为空;
C项:函数能返回指针类型。
故本题答案为D项。
9.
设int a[3][4]={1,2,3,4,5,6};,值为4的数组元素是( )。
  • A.a[0][1]
  • B.a[0][2]
  • C.a[0][3]
  • D.a[1][1]

参考答案C

解析数组初始化:`int a[3][4]={1,2,3,4,5,6};`,数组按行优先存储。这里只初始化了部分元素,后面未明确初始化的元素默认初始化为0。第一行`a[0]`元素依次为`1,2,3,4`,第二行`a[1]`元素依次为`5,6,0,0`,第三行`a[2]`元素依次为`0,0,0,0`。2.然后看各个选项:`a[0][1]`表示第一行第二个元素,值为2;`a[0][2]`表示第一行第三个元素,值为3;`a[0][3]`表示第一行第四个元素,值为4;`a[1][1]`表示第二行第二个元素,值为6。
10.
调用递归函数func(1),返回值为3的是( )。
  • A.题目图片
  • B.题目图片
  • C.题目图片
  • D.题目图片

参考答案B

解析B项:当n = 1时,调用func(1) ,由于1 > 0 ,执行return func(1 - 1) + 3; ,也就是return func(0) + 3; 。当n = 0时,返回0 ,那么func(1)的返回值为0 + 3 = 3 ,符合要求。
故本题答案为B项。
11.
设int x=1,y=2;,下列语句错误的是( )。
  • A.x++=y
  • B.for(x=0;x
  • C.while(x
  • D.if(x

参考答案A

解析在C语言中,赋值运算符`=`左边必须是可修改的左值。`x++`是表达式,其结果是`x`自增之前的值,它不是可修改的左值,不能出现在赋值运算符左边。B项`for(x=0;x=y`时执行。
故本题答案为A项。
12.
不是变量存储类型关键字的是( )。
  • A.auto
  • B.stdout
  • C.static
  • D.register

参考答案B

解析`auto`(自动存储类型)、`static`(静态存储类型)、`register`(寄存器存储类型)都是C语言中用于指定变量存储类型的关键字。而`stdout`是C语言标准库中定义的一个文件指针,用于标准输出,不是变量存储类型关键字。
故本题答案为B项。
13.
下列二维数组定义正确的是( )。
  • A.char a(10,10);
  • B.char n=10,a[n](n];
  • C.题目图片
  • D.题目图片

参考答案C

解析C项:通过#define宏定义N为10 ,char a[N][N];相当于char a[10][10]; ,宏在预处理阶段会进行替换,这是使用常量表达式定义二维数组维度大小的合法方式。
故本题答案为C项。
14.
设int m=5,*p下列语句正确的是( )。
  • A.p=&m;
  • B.p=m;
  • C.*p=&m;
  • D.*p=*m

参考答案A

解析指针变量`p`用于存储变量的地址。A项中,`\u0026m`是取`m`的地址,然后将`m`的地址赋给指针变量`p`,这是正确的指针赋值操作。B项中,`m`是一个整数,不能直接赋值给指针变量`p`,类型不匹配。C项中,`*p`表示`p`所指向的内存单元的值,不能将地址`\u0026m`赋给`*p`,应该是`p=\u0026m`。D项中,`m`不是指针,不能使用`*m`这种形式,而且即使`m`是指针,`*p=*m`这种赋值也需要`p`和`m`都已经正确指向了有效的内存地址。
故本题答案为A项。
15.
当文件未结束时,系统函数feof的返回值是( )。
  • A.-1
  • B.0
  • C.1
  • D.非0

参考答案B

解析feof函数用于检测文件是否结束,当文件未结束时返回0,文件结束时返回非0值。
故本题答案为B项。

二、填空题

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

16.
设int a=11;,表达式a%3+a/4的值是_____。

参考答案4。

解析
17.
设int x=4,y=2,表达式(x>>y)+(x<

参考答案17。

解析
18.
设int s[5]={2,4,6,8},*p=s,执行语句printf("%d,%d\n",s[2],*(p+4));后输出结果是_____。

参考答案6,0。

解析
19.
设inta;float b=1.9,执行语句a=(int)b;后变量a和b的值分别是_____。

参考答案1,1.9。

解析
20.
设int n=5;,执行语句printf("%d,%d\n",(n=3*4,n*5,n+1))后输出结果是_____。

参考答案13。

解析
21.
设int x=2,执行语句printf("%d,%d\n",x++)后输出结果是_____。

参考答案2。

解析
22.
设int a=1,b=2,c=3;,表达式a||b-a&&c+!a的值是_____。

参考答案1。

解析
23.
系统函数getchar( )的功能是_____。

参考答案从键盘读取一个字符

解析
24.
设char s[]"\\1234";,执行语句printf("%d,%d\n",sizeof( ),strlen( )后输出结果是_____。

参考答案6,5。

解析
25.
使用系统函数strcat( )时,用到的文件包含命令是_____。

参考答案#include<string.h>或#include"string.h"

三、程序分析题

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

26.
题目图片

参考答案详见解析

解析Brazil
India
South Africa。
27.
题目图片

参考答案详见解析

解析5,11。
28.
题目图片

参考答案详见解析

解析-2。
29.
题目图片

参考答案详见解析

解析12345678910。

四、程序填空题

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

30.
题目图片
题目图片

参考答案详见解析

解析
第一空:10或=9
第二空:leaderi[j].count++
或++leader[j].count或leader[j].count+=1或leader[j].count=leader[j].count+1
第三空:leader[i.name。
31.
题目图片

参考答案详见解析

解析
第一空:char ch
第二空:\n
第三空:ch>=`0`&&ch<=`9`或ch>=48&&ch<=57。
32.
题目图片

参考答案详见解析

解析
第一空:0
第二空:a[i][j]
第三空:sum。

五、程序设计题

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

33.
从文本文件读取字符,将其中的数字字符`0`、`1`、`2`、……`9`分别用英文字母字符`Z`、`Y`、`X`、`W`、`V`、`U`、`T`、`S`、`R`、`Q`替换,其余字符不变结果写入文本文件new.txt,并分别将两个文件的内容输出到屏幕。

参考答案详见解析

解析题目图片
34.
(1)编写函数int move(intb[]intn,intm)将整型数组b的n个元素循环右移m个位置。
例如:n=10,m=2时,移动前、后数组b中的数据如下图所示。题目图片
(2)编写主函数,从键盘输入数组元素及n和m(0

参考答案详见解析

解析题目图片