大连外国语大学2022年C语言专升本

本试卷为大连外国语大学2022年C语言专升本,题目包括:单项选择题,判断题,编程题。

覆盖的内容包括:理论题,基础知识,控制结构,循环结构,指针,数组/指针数组,字符串/字符串指针,函数/函数指针,程序题,结构体,文件。

C语言专升本

一、单项选择题 (共20题,每题2分,共计40分)

(  C  )
1、设变量a、b、e、d和y都已正确定义并赋值。若有以下if语句: if(a<b) if(c==d) y=0; else y=1; 该语句所表示的含义是________。
A、y=0,a
B、y=0,a
y=1,a≥b y一1,a≥b且c≠d
C、y=0,a
D、y=0,a
y=1,a<B且C≠D y="1,c≠d
(  B  )
2、struct ex
{
int x ;
float y;
char z ;
}
example;
则下面的叙述中不正确的是________。
A、struct结构体类型的关键字
B、example是结构体类型名
C、x,y,z都是结构体成员名
D、struct ex是结构体类型
(  D  )
3、阅读下面的程序
#include<stdio.h>
void main()
{
int i,j;
i=010;
j=9;
printf("%d,%d",i-j,i+j);
}
则程序的运行结果是 __________.
A、1,19
B、-1, 19
C、1,17
D、-1,17
(  A  )
4、如有定义语句 int a[]={ 1,8,2,8,3,8,4,8,5,8 }; 则数组 a 的大小是 __________.
A、10
B、11
C、8
D、不定
(  D  )
5、设有语句:"int a=1,b=2,*p1=&a,*p2=&b; ",则使指针p1指向变量b的赋值语句是______。
A、p1=*p2
B、*p1=p2
C、p1=p2
D、*p1=*p2
(  A  )
6、下列对字符数组进行初始化的语句中,______ 是正确的。
A、char s 1[]=“abcd”;
B、char s2 [3]=”xyz”;
C、char s 3[] [3]={‘a’,‘x’,‘y’}
D、char s3 [][3]={“xyz”,“mnp”};
(  C  )
7、以下说法中不正确是________。
A、使用while循环时,循环变量初始化的操作应在循环语句之前完成
B、while循环是先判断表达式,后执行循环体语句
C、do-while和for循环均是先执行循环体语句,后判断表达式
D、for,while和for-while循环中的循环体均可以由空语句构成
(  D  )
8、下列不是循环语句的是________。
A、while语句
B、do…while语句
C、for语句
D、if…else语句
(  B  )
9、下列关于自动类型转换的说法中,正确的是________。
A、操作数1是byte类型,操作数2是long类型,结果为byte类型
B、操作数1是byte类型,操作数2是long类型,结果为long类型
C、操作数1是long类型,操作数2是byte类型,结果是byte类型
D、操作数1是long类型,操作数2是byte类型,结果是long类型
(  A  )
10、以下叙述中正确的是________。
A、局部变量说明为static存储类,其生存期将得到延长
B、全局变量说明为static存储类,其作用域将被扩大
C、任何存储类的变量在未赋初值时,其值都是不确定的
D、形参可以使用的存储类说明符与局部变量完全相同
(  A  )
11、以下程序运行后的输出结果是 ______。
main()
{
int x=0210;
printf("%x\n",x);
}
A、88
B、86
C、77
D、21
(  C  )
12、下面函数定义形式正确的是________。
A、int f(int x;int y)
B、int f(int x,y)
C、int f(int ,int y)
D、int f(x,y:int)
(  C  )
13、以下二维数组c 的定义形式是________。
A、int c [3][]
B、float c [ 3,4]
C、double c [3][ 4]
D、float c 3)4)
(  D  )
14、按照c语言规定的用户标识符命名规则,不能出现在标识符中的是________。
A、大写字母
B、下划线
C、数字字符
D、连接符
(  C  )
15、下列程序段的输出是____。int c[]={1, 3, 5};
int *k=c+1;
printf("%d", *++k);
A、3
B、4
C、5
D、6
(  B  )
16、c语言中数组下标的下限是________。
A、1
B、0
C、视具体情况而定
D、无固定下限
(  C  )
17、"对下面程序段:
#define A 3
#define B(a) ((A+1)*a)...x=3*(A+B(7)); 正确的判断是________。"
A、程序错误,不许嵌套宏定义
B、程序错误,宏定义不许有参数
C、x=93
D、x=21
(  C  )
18、以下叙述中正确的是________。
A、两个字符串可以用关系运算符进行大小比较
B、函数调用 strlen(s)会返回字符串 s 实际占用内存的大小(以字节为单位)
C、C 语言本身没有提供对字符串进行整体操作的运算符
D、当拼接两个字符串时,结果字符串占用的内存空间是两个原串占用空间的和
(  C  )
19、在c语言中,只有在使用时才占用内存单元的变量,其存储类型是________。
A、auto和static
B、extern和register
C、auto和register
D、static和register
(  A  )
20、设有如下定义:
struct sk
{
int a;
float b;
}
data,*p;
若要使p指向data中的a域,正确的赋值语句是________。
A、p=(struct sk*)&data.a;
B、p=(struct sk*) data.a;
C、p=&data.a;
D、*p=data.a;

二、判断题 (共10题,每题2分,共计20分)

(   T  )
1、c语言中的main()函数是程序的入口。 
(   T  )
2、关系表达式的值只能为1和0 
(   T  )
3、break语句不能终止正在进行的多层循环。 
(   T  )
4、函数strcpy(str1,str2);
的功能是将字符串str2复制到字符串str1中。 
(   F  )
5、c语言中非标准输入输出设备指的是键盘和显示器。 
(   T  )
6、某文件中定义的静态全局变量的作用域是本文件。 
(   T  )
7、数组名是该数组的首地址。 
(   F  )
8、tc中函数调用时,函数参数求值顺序是从右到左的。 
(   T  )
9、int a[4],*p; 其中a 是地址常量, p 为地址变量。 
(   T  )
10、下划线是标识符中的合法字符。 

三、编程题 (共3题,每题0分,共计40分)

1、编写程序:将一个数组逆序输出。
2、编写程序:从键盘输入一些字符,逐个把它们送到磁盘上去,直到输入一个#为止。程序功能如下:
输入你要保存到的文件的名称:
test.txt
现在你可以输入你要保存的一些字符,以#结束:
www.baidu.com
#
3、编写程序求解约瑟夫问题,有n个小孩围成一圈,给他们从1开始编号。现指定从第w个小孩开始报数,报到s时出列然后从下个小孩开始重新报数,报到s时出列如此重复下去直到所有的小孩都出列。求小孩出列的顺序,使用结构体实现。