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

高等教育自学考试《13013高级语言程序设计》模拟试卷二

13013高级语言程序设计 / 模拟试卷 共 34 题 更新于 2026-09-28

一、单选题

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

1.
在以下一组运算符中,优先级最高的运算符是( )。
  • A.--
  • B.==
  • C.
  • D.&&

参考答案A

解析在C/C++等常见编程语言中,自减运算符"--"属于算术运算符,其优先级高于关系运算符"==",而逻辑运算符"||"和"\u0026\u0026"优先级相对更低。
故本题答案为A项。
2.
执行下列程序段,则输出结果是( )
#include
char*p="ABC";
printf("%d",strlen( )+*p);
  • A.语句错误
  • B.输出3
  • C.输出4
  • D.输出68

参考答案D

解析strlen( )=3,*p=65。故本题答案为D项。
3.
设有下列结构型数组的定义:struct student{long num;char name[10];}stu[50],*p=stu;.假定该数组所有元素已经赋值,则将这个数组所有元素值写入fp指向的文件,错误的语句是( )。
  • A.fwrite(p,sizeof(struct student),50,fp)
  • B.fwritc(p,50*sizeof(struct student),1,fp)
  • C.fwrite(stu[0],4+10,50,fp)
  • D.for(p=stu;p

参考答案C

解析`fwrite`函数的原型为`size_t fwrite(const void*ptr,size_t size,size_t nmemb,FILE*stream)`,它表示从`ptr`指向的内存区域读取`nmemb`个大小为`size`字节的数据块,写入到`stream`指向的文件中。对于结构体数组`stu`,每个元素`struct student`的大小为`sizeof(struct student)`,`sizeof(struct student)`等于`long`类型(通常4字节)加上`char name[10]`(10字节),即`4+10`字节(假设`long`为4字节)。
A项:`fwrite(p,sizeof(struct student),50,fp)`,`p`指向`stu`数组首地址,每次写`sizeof(struct student)`字节,写50次,是正确的写入方式。
B项:`fwrite(p,50*sizeof(struct student),1,fp)`,每次写`50*sizeof(struct student)`字节,写1次,也是正确的写入方式。
C项:`fwrite(stu[0],4+10,50,fp)`,这里`stu[0]`不是指针,不符合`fwrite`函数第一个参数为指针的要求,所以是错误的。D项虽然没完整给出,但从前面部分`for(p=stu;p`推测应该是通过循环逐个元素写入,也是合理的方式(若循环体正确调用`fwrite`写单个元素)。
4.
下列程序的输出结果是
int a=l;
int f( )
{int a=2;return a;}
void main( )
{printf("%d,%d",a,f( ));}
  • A.1,1
  • B.1,2
  • C.2,1
  • D.2,2

参考答案B

解析在`main`函数外定义了全局变量`a`并初始化为`1`。在`f`函数内定义了局部变量`a`并初始化为`2`,`f`函数返回这个局部变量`a`的值。在`main`函数中,`printf`输出全局变量`a`的值(始终是`1`,不受`f`函数内局部变量影响)以及`f`函数的返回值(`2`)。
故本题答案为B项。
5.
设int a=5,b=6;,正确的赋值语句是( )。
  • A.b=a%6.8;
  • B.a+=b+=8;
  • C.++(a+b);
  • D.a+b=9;

参考答案B

解析
A项:取模运算符"%"两边要求是整数,6.8是浮点数,所以A错误。
B项:复合赋值运算符是合法的,先计算`b+=8`,即`b=b+8`,此时`b`变为14,再计算`a+=14`,即`a=a+14`,`a`变为19,是合法的赋值语句。
C项:`(a+b)`是表达式,不能对表达式进行自增操作,自增操作只能作用于变量,所以C错误。
D项:`a+b`是表达式,不能在赋值号左边,赋值号左边必须是变量,所以D错误。
故本题答案为B项。
6.
设int x=7,*p=&x;,表达式的值为7的是( )。
  • A.P
  • B.*p
  • C.&x
  • D.*x

参考答案B

解析x=7,*p=&x;中,首先定义了一个整型变量x并赋值为7,然后定义了一个指向整型数据的指针变量p,并将变量x的地址赋给p,即p指向x。因此,p实际上存储的是变量x的内存地址,而*p表示通过指针p访问它所指向的值,即变量x的值。由于变量x被初始化为7,因此表达式*p的值也是7。
故本题答案为B项。
7.
下列叙述正确的是( )。
  • A.for语句中的循环体至少被执行一次
  • B.while语句中的循环体至少被执行一次
  • C.continue与break在循环语句中的作用相同
  • D.switch语句中case后可以不出现break语句

参考答案D

解析
A项:for循环先判断条件,若条件一开始就不满足,循环体一次都不会执行。
B项:while循环也是先判断条件,条件不满足时,循环体不执行。
C项:continue是结束本次循环进入下一次循环,break是跳出整个循环,作用不同。
D项:switch语句中case后如果没有break语句,会继续执行下一个case的内容,这是合法的。
故本题答案为D项。
8.
设char c[5]{′a′,′b′,′c′,′\0′}则printf(″%s″,c);的输出是( )。
  • A.′a′′b′
  • B.ab
  • C.abc
  • D.″ab\0c″

参考答案C

解析在C语言中,printf("%s", c);里的%s格式控制符用于输出字符串。它会从指定地址(这里是字符数组c的首地址)开始,依次输出字符,直到遇到字符串结束符'\0'为止。字符数组c中依次存储'a' 、'b' 、'c' 、'\0' ,所以会输出abc 。
故本题答案为C项。
9.
若有:char c[5]={′a′,′b′,′\0′,′c′,′\0′};则执行语句printf(″%s″,c);的结果为( )。
  • A.′a′′b′
  • B.ab
  • C.ab c
  • D.ab\0c

参考答案B

解析对于printf("%s", c); ,%s输出字符串时遇到'\0'就停止输出。字符数组c中,前两个字符是'a'、'b' ,然后遇到'\0',所以输出结果为ab 。
故本题答案为B项。
10.
C语言的保留字(又称关键字)是( )。
  • A.sum
  • B.main
  • C.double
  • D.longint

参考答案C

解析C语言关键字是有特定含义被语言本身使用的词。A项sum是自定义标识符;B项main是主函数名非关键字;C项double是用于声明双精度浮点型变量的关键字;D项long int中间应空格分开,且不是整体作为关键字,long和int是两个关键字。
故本题答案为C项。
11.
设inta,b;,表达式a=2,b=5,b++,a+b--的值是( )。
  • A.2
  • B.6
  • C.7
  • D.8

参考答案D

解析b++的运算结果是b=5+1=6,然后运算a+b--,因b--是先调用变量b,再进行自减运算,所以是先计算a+b=2+6=8,然后计算b--,即b=b-1=5。所以"a+b--"更后的结果就是8,其中b的值变为5。
故本题答案为D项。
12.
正确定义一维数组的是( )。
  • A.int a(10);
  • B.int n=10,a[n];
  • C.题目图片
  • D.题目图片

参考答案C

解析
A项:在C语言中,定义数组应该使用方括号[] ,而不是圆括号() ,int a(10);这种写法是错误的。
B项:C语言标准(C99之前)不允许使用变量定义数组大小。这里int n = 10, a[n];试图用变量n来定义数组a的大小,不符合语法规则。
C项:通过宏定义#define N 10 ,将N定义为常量10 ,然后int a[N];用常量N来定义数组a的大小,这是合法的一维数组定义方式。
D项:先定义变量n ,然后通过scanf函数输入n的值,再用变量n定义数组a的大小,这在C语言标准(C99之前)中是不允许的,因为不能用变量来定义数组大小。
故本题答案为C项。
13.
设ints=3;,表达式值为0的是( )。
  • A.s/2
  • B.3-++s
  • C.(s++)%3
  • D.s>3?2:5

参考答案C

解析A项结果是1,B项结果是-1,D项结果是5。C项先调用变量s,3%3=0,然后s进行自加运算,即表达式的结果是0,而变量s的值是4。
故本题答案为C项。
14.
设struct ex
{int x;float y;char z;}example;
则下列叙述不正确的是
  • A.ex可以缺省
  • B.example是结构体类型名
  • C.x,y,z都是结构体成员名
  • D.struct是结构体类型的关键字

参考答案B

解析`struct`是定义结构体类型时使用的关键字,所以D项正确。在`struct ex{int x;float y;char z;}example;`中,`x`、`y`、`z`是结构体`ex`的成员名,C项正确。定义结构体时,结构体标签`ex`可以缺省,例如`struct{int x;float y;char z;}example;`,A项正确。`example`是结构体变量名,而不是结构体类型名,结构体类型名是`struct ex`,B项叙述不正确。
故本题答案为B项。
15.
设char c,s[20]={'This is book'},*p=s,*q=s;,正确的赋值语句是( )。
  • A.c=*p;
  • B.q=&s
  • C.*q=s;
  • D.*c=*q;

参考答案A

解析//A.p是字符指针,*p是字符,c也是字符,所以正确//B.s是字符指针,"&s是指向一个数组的指针(类型为int(*)[3])"//C.s是字符指针,q是字符指针,*q是字符,所以类型不同,错误//D.q是字符指针,*q是字符,c是字符,不能做解引用操作。
故本题答案为A项。

二、填空题

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

16.
用十进制表示整型常量-017为____,表示整型常量-0xF为____.

参考答案-15,-15。

解析
17.
设有定义语句"int a[3][4]={{1},{2},{3}};"则3[1][1]值为_____,3[2][1]的值为_____.

参考答案a[1][1]=0,a[2][1]=0。

解析给二维数组初始化时,可按行给出初值,并且每行可以只给前面部分的元素给出初值.系统规定,对哪些未给出初值的部分元素,系统自动置二进制代码全0的值.由于定义语句只给a[0][0]给定初值1、a[1][0]给定初值2、a[2][0]给定初值3.这样,其它元素都为0值.
18.
"*"称为_____运算符,"&"称为_____运算符.

参考答案单目运算符"*"称为取内容运算符,单目运算符"&"称为取地址运算符。

解析
19.
若形参和实参都是整型变量,其间传递的是_____型的数据形参和实参都是指向整型的指针变量,其间传递的是_____型的数据.

参考答案整,地址。

解析
20.
系统函数pow( )应使用的文件包含命令是________。

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

解析
21.
假设所有变量均为整型,则表达式(a=2,b=5,a++,b++,a+b)的值为___。

参考答案9。

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

参考答案5。

解析
23.
C语言的标识符由下画线、字母和_____三种字符组成。

参考答案数字。

解析
24.
C语言中,表示回车换行的转义字符是_____。

参考答案\n。

解析
25.
C语言中,定义已有数据类型的别名使用的关键字是_____。

参考答案typedef。

三、程序分析题

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

26.
题目图片

参考答案详见解析

解析p=7,q=8,r=-9。
27.
题目图片

参考答案详见解析

解析sam=55。
28.
#include
main( )
{int s=0,k;
for(k=7;k>=0;k--)
{switch(k)
{case1:
case4:
case7:s++;break;
case2:
case3:
case6:break;
case0:
case5:s+=2;break;
}
}
printf(″s=%d\n″,s);
}
输出结果为?

参考答案详见解析

解析s=7。
29.
题目图片

参考答案详见解析

解析red
blue
white。

四、程序填空题

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

30.
题目图片

参考答案详见解析

解析第一空:&a[i][j]第二空:b[j][i]第三空:N。
31.
题目图片

参考答案详见解析

解析题目图片
32.
下列程序的功能是输入一个字符串,将其中所有大写字母换成小写字母,小写字母换成大写字母后输出.请填写程序中缺少的语句或语句成分.
题目图片

参考答案详见解析

解析s[i]+=32;
程序先输入字符串,然后顺序考察输入字符串中的字符,当发现是大写字母时,将它改写成对应的小写字母,而当它是小写字母时,就将它改写成对应的人写字母.若变量ch中的字符是大写字母,则与它对应的小写字母的表达式可以写成ch+32;类似地,若变量ch中的字符是小写字母,则与它对应的人写字母的表达式可以写成ch-32.空白处应填s[i]+=32;。

五、程序设计题

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

33.
编一个程序,输入一个字符串,将其中所有的大写英文字母的代码+3,小写英文字母的代码-3.然后输出加密后的字符串.

参考答案详见解析

解析程序的主要工作是输入字符串,并顺序考察输入字符率中的字符,分别对其中大小写英文字母完成问题要求的更改,而跳过不是英文字母的字符.完整程序如下:
题目图片·
34.
题目图片

参考答案详见解析

解析题目图片