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

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

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

一、单选题

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

1.
下列属于C语言关键字的是( )。
  • A.main
  • B.break
  • C.define
  • D.include

参考答案B

解析C语言关键字是语言中预先定义有特定含义的词。main是主函数名,不是关键字;define和include是预处理指令,并非关键字;break是C语言关键字,用于跳出循环或switch语句。
故本题答案为B项。
2.
回车换行的转义字符是( )。
  • A.`\n`
  • B.`\0`
  • C.`\r`
  • D.`\\`

参考答案A

解析在C语言等编程语言中,`\`表示换行,将光标移到下一行开头;`\0`是字符串结束标志;`\r`是回车,把光标移到当前行开头;`\\`表示反斜杠字符本身。回车换行指先回车回到行首再换行,在一些系统中常用`\r\`表示,单独说回车换行的转义字符更倾向于`\`。
故本题答案为A项。
3.
正确的C语言常量是( )。
  • A.0186
  • B.1E0.5
  • C.0xaf
  • D.'abc'

参考答案C

解析指数形式的常量,E的后面必须是整数,B错误。A项要看进制。D项,没有具体的给出值,也没有限制说是常量,就不能算常量。
故本题答案为C项。
4.
设intx=1;,执行语句x/=1+2;后x的值是( )。
  • A.0
  • B.1
  • C.2
  • D.3

参考答案A

解析首先分析表达式`x/=1+2`:根据运算符优先级,先计算`1+2`,结果为`3`。然后`x/=3`等价于`x=x/3`。已知`x`初始值为`1`,`1/3`在整型运算中,结果取整数部分,所以`1/3`结果为`0`。
故本题答案为A项。
5.
下列运算符优先级最高的是( )。
  • A.+
  • B.=
  • C.,
  • D.++

参考答案D

解析在C/C++等常见编程语言中,自增运算符`++`优先级较高。`+`是算术运算符,`=`是赋值运算符,`,`是逗号运算符,这几个运算符优先级都低于自增运算符`++`。
故本题答案为D项。
6.
设int m=2;,下列表达式结果为1的是( )。
  • A.0<m<1
  • B.m>0
  • m<1
  • C.m>0&&m<1
  • D.m>0,m<1

参考答案B

解析
A项:在C语言中,关系运算符"<"是左结合的,`0B项:`m>0||m<1`,`m=2`,`m>0`为真(值为1),逻辑或`||`只要有一个操作数为真结果就为真,所以整个表达式结果为1。
C项:`m>0\u0026\u0026m<1`,`m=2`,`m>0`为真(值为1),但`m<1`为假(值为0),逻辑与`\u0026\u0026`需要两个操作数都为真结果才为真,所以整个表达式结果为0。
D项:`m>0,m<1`是逗号表达式,逗号表达式的值是最后一个表达式的值,`m=2`,`m<1`为假,值为0。
7.
设int p=3,q=5;,则执行语句printf("%c\n",'A'+p/q);后输出结果是( )。
  • A.65
  • B.66
  • C.A
  • D.B

参考答案C

解析首先计算p / q ,已知p = 3 ,q = 5 ,在整数除法中3 / 5结果为0 。然后计算'A' + p / q ,字符'A'的ASCII码值为65 ,那么65 + 0 = 65 。printf("%c\n",'A' + p / q);中%c是输出字符的格式控制符,ASCII码值为65对应的字符是“A” ,所以输出结果是“A”。
故本题答案为C项。
8.
设intn=0;,下列循环语句不能输出5个"A"的是( )。
  • A.for(;n<5;n++)printf("A");
  • B.while(n<5){printf("A");n++;};
  • C.do{n++;printf("A");}while(n<5);
  • D.for(;n<5;n++){printf("A");if(n)break;};

参考答案D

解析for(; n < 5; n++) {printf("A"); if(n) break;} ,进入循环后,第一次执行循环体输出A ,此时n = 0 ,if(n)条件不成立,继续循环;第二次循环,n变为1 ,执行if(n)条件成立,执行break语句跳出循环,所以只会输出1个A ,不能输出5个A 。
故本题答案为D项。
9.
设ints[][3]{1,2,3,4,5,6,7);,则数组元素s[2][1]的值是( )。
  • A.0
  • B.5
  • C.6
  • D.7

参考答案A

解析定义二维数组`s[][3]`并初始化`{1,2,3,4,5,6,7}`,因为第二维大小为`3`,所以第一维大小可推算为`3`(共7个元素,`7/3`向上取整为3),即数组实际为`s[3][3]`。初始化时按行顺序填充,第一行`{1,2,3}`,第二行`{4,5,6}`,第三行`{7,0,0}`。对于`s[2][1]`,`2`表示第三行(下标从0开始),`1`表示该行第二个元素,所以`s[2][1]`就是第三行第二个元素,值为`0`。
故本题答案为A项。
10.
设charr[]="Zhong\nXing";,则执行语句printf("%d",sizeof(r));后输出结果是( )。
  • A.5
  • B.6
  • C.10
  • D.11

参考答案D

解析数组`r`定义时用字符串常量初始化,字符串常量"Zhong\Xing"中,`\`是转义字符算一个字符。字符串常量末尾会自动添加`\0`作为结束标志。`sizeof(r)`计算的是整个数组的大小,包括字符串结束标志`\0`。该字符串包含字符`Z``h``o``n``g``\``X``i``n``g`以及字符串结束标志`\0`,共11个字符。
故本题答案为D项。
11.
下列说法正确的是( )。
  • A.函数必须有形参
  • B.函数可以递归定义
  • C.函数可以嵌套定义
  • D.函数体中必须出现return语句

参考答案B

解析函数不一定要有形参,A错;C语言中函数不允许嵌套定义,C错;函数体不一定要有return语句,比如void类型函数,D错。而函数是可以递归定义的,即函数调用自身。
故本题答案为B项。
12.
设intx=1,*q=&x;,可表示x值的是( )。
  • A.*q
  • B.q
  • C.&x
  • D.&q

参考答案A

解析`int x=1,*q=\u0026x;`这里`q`是一个指针变量,它存储了`x`的地址。`*`是解引用运算符,`*q`表示访问`q`所指向的内存单元的值,也就是`x`的值。`q`是`x`的地址,不是`x`的值。`\u0026x`是取`x`的地址,不是`x`的值。`\u0026q`是取指针变量`q`的地址,也不是`x`的值。
故本题答案为A项。
13.
定义函数为int*p(floatx,char c){…..},则该函数是( )。
  • A.整型函数
  • B.实型函数
  • C.指针型函数
  • D.字符型函数

参考答案C

解析函数定义为`int*p(float x,char c)`,函数名前的`int*`表示函数返回值类型是指向`int`类型的指针。
故本题答案为C项。
14.
设typedef float REAL;,则REAL是( )。
  • A.float型变量
  • B.REAL型变量
  • C.typedef型变量
  • D.float类型的别名

参考答案D

解析typedef用于给已有的数据类型定义别名,这里typedef float REAL就是给float类型定义了别名REAL。
故本题答案为D项。
15.
若到达文件尾,则库函数feof( )的返回值是( )。
  • A.0
  • B.非0
  • C.1
  • D.NULL

参考答案B

解析当文件指针到达文件尾时,feof函数返回非0值,表示文件结束;未到达文件尾返回0。
故本题答案为B项。

二、填空题

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

16.
执行printf("%d\n",(int)1.5%5/2);后输出结果是_____。

参考答案0。

解析
17.
C语言中,程序的执行从_____函数开始。

参考答案main(或主)。

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

参考答案\Computer\

解析
19.
C语言中,唯一的三目运算符是_____。

参考答案?:(或条件运算符)。

解析
20.
执行printf("%d",8>>2);后输出结果是_____。

参考答案2。

解析
21.
结构化程序的三种基本结构分别是循环结构、选择结构和_____结构。

参考答案顺序。

解析
22.
变量的存储类型包括static型、extemn型、register型和_____型。

参考答案auto(或自动)。

解析
23.
设int w[5],*p=w;,则w的最后一个元素的表示方法是_____。

参考答案w[4](或p[4]或*(p+4)或*(w+4))。

解析
24.
设struct st{char name[10];char sex;int age;}s[100],*q=s;,当引用s的第三个元素的成员age时,与s[2].age等价的是_____。

参考答案(q+2)->age(或(*(q+2)).age)。

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

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

三、程序分析题

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

26.
#include
int main(void)
{
int i,j,x=0;
for(i=0;i<2;i++)
{for(j=0;j<=3;j++)
{if(j%2)continue;
x++;
}
x++;
}
printf('x=%d\n',x);
}
return0;
}

参考答案详见解析

解析x=6。
27.
#include
#include
int main(void)
{
char str[10];
strcpy(str,"中国");
strcat(str,"北京");
puts(str);
return0;
}

参考答案详见解析

解析中国北京。
28.

题目图片

参考答案详见解析

解析100。
29.
#include
#include
int main(void)
{
int i;
char*city[]={"北京","上海","广州","深圳"};
for(i=1;i<4;i+=2)printf("%s\n",city[i]);
return0;
}

参考答案详见解析

解析上海
深圳。

四、程序填空题

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

30.
输入四则运算表达式后,计算(零不能做除数)并输出其结果。
#include
int main(void)
{char oper;float a,b;
scanf("%f%c%f",&a,&oper,&b);/*输入四则运算表达式*/
switch(__________)/*第一空*/
{
case'+':printf("a+b=%.2f\n",a+b);
break;
case'-':printf("a-b=%.2f\n",a-b);
_______________;/*第二空*/
case'*':printf("a*b=%.2f\n",a*b);
break;
case'/':if(__________)printf("a/b=%.2f\n",a/b);/*第三空*/
else printf("除数为0,不能计算!\n");
break;
default:print("不是四则运算符!\n");
}
return0;
}

参考答案详见解析

解析第一空:oper
第二空:break
第三空:b!=0。
31.
输入一个字符串,以回车换行作为结束标志,分别统计数字字符0,1,2,······,9出现的次数并保存至数组元素num[0]、num[1]、num[2]······中,输出统计结果。
#include
int main(void)
{
int i,num[10]={0};
char ch;
while((ch=getchar( )!=__________)*/第一空*/
if(__________)num[ch-'0']++;/*第二空*/
for(i=0;i<10;i++)
printf('%d->%od\n',i,__________);/*第三空*/
return0;
}

参考答案详见解析

解析第一空:'\n'
第二空:ch>="0&&ch<=`9`
第三空:num[i]
32.
从键盘输入若干个学生的姓名和考试成绩,若高于或等于80分,则显示字母等级为A,若低于60分则显示字母等级为C,其余显示字母等级为B。
#define N10
#include
typedef struct stu
{
char name[10];
int score;
char grade;
}__________;/*第一空*/
int main(void)
{
int i;ST stud[N];
for(i=0;i{
scanf('%s%d',stud[i].name,&stud[i].score);
if(stud[i].score>=80)stud[i].grade='A';
else if(__________)stud[i].grade='C';/*第二空*/
else__________;/*第三空*/
}
for(i=0;ipintf('%-10s%5d%3c\n',stud[i].name,stud[i].score,stud[i].grade);
return0;
}

参考答案详见解析

解析第一空:ST
第二空:stud[i].score<60
第三空:stud[i].grade=`B`

五、程序设计题

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

33.
利用二重循环输出如下图形。
1
12
123
1234
……
123456789

参考答案详见解析

解析#include
int main(void)
{
int i,j:
for(i=1;i<=9;i++))
{
for(=1;j<=i;j++)printf("%d",j);
Pdintf("\n");
}
return0;
}
34.
从键盘输入x的值,计算并输出题目图片的近似值,直到公式中最后一项的绝对值小于10-4为止,其中n是大于等于0的自然数。

参考答案详见解析

解析#include
#include
#define EPS IE-4
int main(void)
{
double temp=1,x,n=2,sum=1;
scanf("%lf,&x);
printf("x=%.4f\n",x);
do
{
temp*=-x*x/(n-1)/n;
sumt=temp;
n+=2;
}while(fabs(temp)>=EPS);
printf("sum=%.4f\n",sum);
return0;
}