北京交通大学《C语言程序设计(专)》期末考试题集汇总
奥鹏北京交通大学期末考试题集参考
北京交通大学《C语言程序设计(专)》奥鹏期末考试题库合集
单选题:
(1)有以下程序: #include union pw { int i; char ch[2];}a; main() {a.ch[0]=13;a.ch[1]=0;printf("%d\n",a.i);} 程序的输出结果是
A.13
B.14
C.208
D.209
正确答案问询微信:424329
(2)执行以下程序后,a,b的值分别为 main() { int a,b,k=4,m=6,*p1=&k,*p2=&m; a=p1==&m; b=(*p1)/(*p2)+7; printf("a=%d\n",a); printf("b=%d\n",b); }
A.-1,5
B.1,6
C.0,7
D.4,10
正确答案问询微信:424329
(3)阅读以下程序及对程序功能的描述,其中正确的描述是 #include main() { FILE *in,*out; char ch,infile[10],outfile[10]; printf("Enter the infile name:\n"); scanf("%s",infile); printf("Enter the outfile name:\n"); scanf("%s",outfile); if((in=fopen(infile,"r"))==NUL
A.程序完成将磁盘文件的信息在屏幕上显示的功能
B.程序完成将两个磁盘文件合二为一的功能
C.程序完成将一个磁盘文件复制到另一个磁盘文件中
D.程序完成将两个磁盘文件合并并在屏幕上输出
正确答案问询微信:424329
(4)以下不正确的叙述是
A.在C程序中,逗号运算符的优先级最低
B.在C程序中,APH和aph是两个不同的变量
C.若a和b类型相同,在计算了赋值表达式a=b后b中的值将放入a中,而b中的值不变
D.当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值
正确答案问询微信:424329
(5)设有以下说明语句 struct ex { int x ; float y; char z ;} example; 则下面的叙述中不正确的是
A.struct结构体类型的关键字
B.example是结构体类型名
C.x,y,z都是结构体成员名
D.struct ex是结构体类型名
正确答案问询微信:424329
(6)有如下程序 int a[10]={1,2,3,4,5,6,7,8,9,10}; int *p=&a[3],b;b=p[5]; 则b的值是
A.5
B.6
C.9
D.8
正确答案问询微信:424329
(7)以下叙述中不正确的是
A.在不同的函数中可以使用相同的名字的变量
B.函数中的形式参数是局部变量
C.在一个函数内定义的变量只在本函数范围内有效
D.在一个函数内的复合语句中定义的变量在本函数范围内有效
正确答案问询微信:424329
(8)下面程序的运行结果是 #include main() { int a=1,b=10; do {b-=a;a++;}while(b–<0); printf("a=%d,b=%d\n",a,b); }
A.a=3,b=11
B.a=2,b=8
C.a=1,b=-1
D.a=4,b=9
正确答案问询微信:424329
(9)C语言中,能识别处理的文件为
A.文本文件和数据块文件
B.文本文件和二进制文件
C.流文件和文本文件
D.数据文件和二进制文件
正确答案问询微信:424329
(10)一个C语言程序是由
A.一个主程序和若干子程序组成
B.函数组成
C.若干过程组成
D.若干子程序组成
正确答案问询微信:424329
(11)以下程序有错,错误原因是 main() { int *p,i;char *q,ch; p=&i; q=&ch; *p=40; *p=*q; …… }
A.p和q的类型不一致,不能执行*p=*q;语句
B.*p中存放的是地址值,因此不能执行*p=40;语句
C.q没有指向具体的存储单元,所以*q没有实际意义
D.q虽然指向了具体的存储单元,但该单元中没有确定的值,所以执行*p=*q;没有意义,可能会影响后面语句的执行结果
正确答案问询微信:424329
(12)设有以下语句: char x=3,y=6,z; z=x^y<<2; 则z的二进制值是
A.00010100
B.00011011
C.00011100
D.00011000
正确答案问询微信:424329
(13)在16位C编译系统上,若定义long a;,则能给a赋40000的正确语句是
A.a=20000+20000;
B.a=4000*10;
C.a=30000+10000;
D.a=4000L*10L
正确答案问询微信:424329
(14)假定以下程序经编译和连接后生成可执行文件PROG.EXE,如果在此可执行文件所在目录的DOS提示符下键入: PROG ABCDEFGH IJKL<回车>,则输出结果为 main( int argc, char *argv[]) { while(–argc>0) printf("%s",argv[argc]); printf("\n"); }
A.ABCDEFG
B.IJHL
C.ABCDEFGHIJKL
D.IJKLABCDEFGH
正确答案问询微信:424329
(15)下列各数据类型不属于构造类型的是
A.枚举型
B.共用型
C.结构型
D.数组型
正确答案问询微信:424329
(16)设有int x=11;则表达式(x++*1/3)的值是
A.3
B.4
C.11
D.12
正确答案问询微信:424329
(17)下面程序的输出结果是 main() { int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a; printf("%d\n",*(p+2));}
A.3
B.4
C.1
D.2
正确答案问询微信:424329
(18)请选出以下语句的输出结果 printf("%d\n",strlen("\t\"\065\xff\n"));
A.5
B.14
C.8
D.输出项不合法,无正常输出
正确答案问询微信:424329
(19)函数 rewind 的作用是
A.使文件位置指针重新返回文件的开始位置
B.将文件位置指针指向文件中所要求的特定位置
C.使文件位置指针指向文件的末尾
D.使文件位置指针自动移至下一个字符位置
正确答案问询微信:424329
(20)下列程序的输出结果是 main() { double d=3.2; int x,y; x=1.2; y=(x+3.8)/5.0; printf("%d\n", d*y); }
A.3
B.3.2
C.0
D.3.07
正确答案问询微信:424329
(21)下面程序的功能是把316表示为两个加数的和,使两个加数分别能被13和11整除,请选择填空。 #include main() { int i=0,j,k; do{i++;k=316-13*i;}while(______); j=k/11; printf("316=13*%d+11*%d",i,j); }
A.k/11
B.k
C.k/11==0
D.k==0
正确答案问询微信:424329
(22)C语言允许函数类型缺省定义,此时函数值隐含的类型是
A.float
B.int
C.long
D.double
正确答案问询微信:424329
(23)设有数组定义: char array[]="China"; 则数组 array所占的空间为
A.4个字节
B.5个字节
C.6个字节
D.7个字节
正确答案问询微信:424329
(24)请选出可用作C语言用户标识符的是
A.void,define,WORD
B.a3_b3,_123,IF
C.FOR,–abc,Case
D.2a,Do,Sizeof
正确答案问询微信:424329
(25)若有以下程序 #include int a[]={2,4,6,8}; main() { int i; int *p=a; for(i=0;i<4;i++)a[i]=*p; printf("%d\n",a[2]); } 上面程序输出结果是
A.6
B.8
C.4
D.2
正确答案问询微信:424329
(26)有如下程序: long fib(int n) { if(n>2)return(fib(n-1)+fib(n-2)); else return(2); } main() { printf("%d\n",fib(3));} 该程序的输出结果是
A.2
B.4
C.6
D.8
正确答案问询微信:424329
(27)设有定义:int n=0,*p=&n,**q=&p,则下列选项中正确的赋值语句是
A.p=1;
B.*q=2;
C.q=p;
D.*p=5;
正确答案问询微信:424329
(28)以下不正确的定义语句是
A.double x[5]={2.0,4.0,6.0,8.0,10.0};
B.int y[5]={0,1,3,5,7,9};
C.char c1[]={′1′,′2′,′3′,′4′,′5′};
D.char c2[]={′\x10′,′\xa′,′\x8′};
正确答案问询微信:424329
(29)在16位IBM-PC机上使用C语言,若有如下定义 struct data { int i; char ch; double f; } b; 则结构变量b占用内存的字节数是
A.1
B.2
C.7
D.11
正确答案问询微信:424329
(30)若已定义: int a[]={0,1,2,3,4,5,6,7,8,9}, *p=a,i; 其中 0≤i≤9, 则对a数组元素不正确的引用是
A.a[p-a]
B.*(&a[i])
C.p[i]
D.a[10]
正确答案问询微信:424329
(31)若x,i,j和k都是int型变量,则计算表达式x=(i=4,j=16,k=32)后,x的值为
A.4
B.16
C.32
D.52
正确答案问询微信:424329
(32)已知int i=5;,执行语句i+=++i;后,i的值是( )。
A.10
B.11
C.12
D.A、B、C答案都不对
正确答案问询微信:424329
(33) 已知:double *p[6];,它的含义是( )。
A.p是指向double型变量的指针
B.p是double型数组
C.p是指针数组
D.p是数组指针
正确答案问询微信:424329
(34) 假设定义:int x = 3, y = 3; 则复合赋值表达式x/=1+y的值为( )。
A.6
B.0
C.0.75
D.以上都错
正确答案问询微信:424329
(35) C语言程序的基本单位是( )。
A.字符
B.程序行
C.语句
D.函数
正确答案问询微信:424329
(36)以下运算符优先级最高的是( )。
A.==
B.!
C.&&
D.<
正确答案问询微信:424329
(37) 最初的计算机编程语言是( )。
A.机器语言
B.汇编语言
C.高级语言
D.低级语言
正确答案问询微信:424329
(38)若有如下变量定义,int x;float y;则下列表达式的值为1.5的是( )。
A.y=3/2.0
B.y=3/2
C.x=3/2
D.x=3/2.0
正确答案问询微信:424329
(39)简单变量做实参时,实参与其对应的形参之间的数据传递方式是( )。
A.地址传递方式
B.单向值传递方式
C.用户指定传递方式
D.双向值传递方式
正确答案问询微信:424329
(40)要为读/写操作打开一个字符文件,其正确的打开方式为( )。
A.wr
B.r+
C.rb+
D.rw
正确答案问询微信:424329
(41) 设变量定义为“int a, b;”,执行下列语句时,输入( ),则a和b的值都是10。 scanf("a=%d, b=%d",&a, &b);
A.10 10
B.10, 10
C.a=10 b=10
D.a=10, b=10
正确答案问询微信:424329
(42) 若变量已正确定义,表达式( )的值不是2。
A.2&3
B.1<<1
C.a==2
D.1^3
正确答案问询微信:424329
(43) 若定义:#define f(x) (x*x),则执行int y; y=f(4)/f(2+2);后y=( )。
A.2
B.4
C.8
D.16
正确答案问询微信:424329
(44) 在C程序中,若对函数类型未加说明,则函数的隐含类型为( )。
A.int
B.double
C.void
D.char
正确答案问询微信:424329
(45) 表达式 strlen(”hello”) 的值是( )。
A.4
B.5
C.6
D.7
正确答案问询微信:424329
(46) 有定义语句:int b;char c[10];,则正确的输入语句是( )。
A.scanf("%d%s",&b,&c);
B.scanf("%d%s",&b,c);
C.scanf("%d%s",b,c);
D.scanf("%d%s",b,&c);
正确答案问询微信:424329
(47)以下说法正确的是( )。
A.C语言程序总是从第一个的函数开始执行
B.在C语言程序中,要调用的函数必须在main()函数中定义
C.C语言程序总是从main()函数开始执行
D.C语言程序中的main()函数必须放在程序的开始部分
正确答案问询微信:424329
(48) 设 a 为整型变量,不能确定表达数学关系 10<a<15 的为 C 语言表达式是: ( )。
A.10<a<15
B.a==11|| a==12|| a==13|| a==14
C.a>10&&a<15
D.!(a<=10)&&!(a>=15)
正确答案问询微信:424329
(49) 以下说法正确的是( )。
A.定义函数时,形参的类型说明可以放在函数体内
B.return后边的值不能为表达式
C.如果函数值的类型与返回值表达式的类型不一致,以函数值类型为准
D.如果形参与实参的类型不一致,以实参类型为准
正确答案问询微信:424329
(50) 已知:int **p;,则变量p是( )。
A.指向int的指针
B.指向指针的指针
C.int型变量
D.以上三种说法均是错误的
正确答案问询微信:424329
(51)设变量定义为“int a[4];”,则表达式( )不符合C语言语法。
A.*a
B.a[0]
C.a
D.a++
正确答案问询微信:424329
(52)设有struct sk{int a;float b;}data,*p=&data;,则data中的a成员的错误引用是 ( )。
A.(*p).a
B.p->a
C.data.a
D.p.a
正确答案问询微信:424329
(53)若变量已正确定义,语句“if(a>b) k=0; else k=1;”和( )等价。
A.k=(a>b)?1:0;
B.k=a>b;
C.k=a<=b;
D.a<=b?0:1;
正确答案问询微信:424329
(54) 为求出s=10!的值,则变量s的类型应当为( )。
A.int
B.unsigned
C.long
D.以上三种类型均可
正确答案问询微信:424329
(55) ( )把x、y定义成float类型变量,并赋同一初值3.14。
A.float x, y=3.14;
B.float x, y=2*3.14;
C.float x=3.14, y=x=3.14;
D.float x=y=3.14;
正确答案问询微信:424329
多选题:
(1)下列关于#include命令的叙述中,正确的是______。
A.一个#include命令中只能指定一个被包含文件
B.一个#include命令中可以指定多个被包含文件
C.一个被包含文件中又可以包含另一个被包含文件
D.#include命令中,文件名可以用双引号或尖括号括起来
正确答案问询微信:424329
(2)C语言中函数返回值的类型与下列哪项无关?
A.定义函数时所指定的函数类型
B.调用函数时临时
C.调用该函数的主函数类型
D.return语句中的表达式类型
正确答案问询微信:424329
(3)下列说法中错误的是______。
A.C程序总是从第一个定义的函数开始执行
B.C程序总是从main函数开始执行
C.C函数必须有返回值,否则不能使用函数
D.C程序中有调用关系的所有函数必须放在同一个程序文件中
正确答案问询微信:424329
(4)以下正确的C语言标识符是_____。
A.ABC
B.abc
C.a_bc
D.ab.c
正确答案问询微信:424329
(5)以下不正确的叙述是______。
A.C语言的主函数是无参函数
B.C语言的主函数最多允许有1个参数
C.C语言的主函数最多允许有2个参数
D.C语言的主函数可以有2个以上参数
正确答案问询微信:424329
(6)以下说法不正确的是______。
A.定义函数时,形参的类型说明可以放在函数体内
B.return后边的值不能为表达式
C.如果函数值的类型与返回值表达式的类型不一致,以函数值类型为准
D.如果形参与实参的类型不一致,以实参类型为准
正确答案问询微信:424329
(7)以下______是正确的转义字符。( )
A.‘\'
B.‘’
C.‘81'
D.‘ '
正确答案问询微信:424329
(8)已知:int x,a,b;下列选项中正确的if语句是______。
A.if(a=b) x++;
B.if(a=<b) x++;
C.if(a-b) x++;
D.if(x) x++;
正确答案问询微信:424329
(9)关于实参和形参的说法正确的是______。
A.在定义函数中指定的形参,在未出现函数调用时,它们并不占内存中的存储单元
B.实参可以是变量、常量或表达式
C.实参与形参的类型应相同或赋值兼容
D.实参变量对形参变量的数据传递是“值传递”
正确答案问询微信:424329
(10)以下不正确的描述是______。
A.函数的定义可以嵌套,函数的调用不可以嵌套
B.函数的定义不可以嵌套,函数的调用可以嵌套
C.函数的定义和函数的调用均可以嵌套
D.函数的定义和函数的调用均不可以嵌套
正确答案问询微信:424329
(11)下列说法不正确的是______。
A.C程序由符号构成
B.C程序由标识符构成
C.C程序由函数构成
D.C程序由C语句构成
正确答案问询微信:424329
(12)在动态存储区中主要存放以下数据______。
A.函数形式参数
B.自动变量
C.函数调用时的现场保护和返回地址
D.全局变量
正确答案问询微信:424329
(13)不与while(x)语句中的x等价的是_____。
A.x= =0
B.x= =1
C.x!=1
D.x!=0
正确答案问询微信:424329
(14)已知:int x;,则下面的说明指针变量pb的语句______不是正确的。
A.int pb=&x;
B.int *pb=x;
C.int *pb=&x;
D.*pb=*x
正确答案问询微信:424329
(15)在C语言中,正确的int类型的常数是:______。
A.0
B.32768
C.037
D.0xaf
正确答案问询微信:424329
(16)对静态变量的正确描述
A.静态局部变量在静态存储区内分配单元
B.静态外部变量可以赋初值,也可以不赋初值
C.静态外部变量的作用与外部变量相同
D.静态局部变量在函数调用结束时,仍保存其值,不会随着消失。
正确答案问询微信:424329
(17)函数调用可以______。
A.出现在一个表达式中
B.出现在执行语句中
C.作为一个函数的实参
D.作为一个函数的形参
正确答案问询微信:424329
(18)带参宏定义与函数的区别是:______。
A.函数调用时,先求出实参表达式的值,然后代入形参,带参的宏只是进行简单的字符替换
B.函数调用是在程序运行时为形参分配临时的存储单元,而宏展开是在编译前进行的
C.宏不存在类型问题,宏名和参数都不存在类型问题
D.调用函数只能得到一个返回值,而使用宏可设法得到几个结果
正确答案问询微信:424329
(19)下列字符中能构成标识符的是______。
A.数字字符
B.连接符
C.下划线字符
D.大写字母
正确答案问询微信:424329
(20)在文件操作中,用于检测和设置文件状态的函数有______。
A.文件结束检测函数feof()
B.读写文件出错检测函数ferror()
C.文件出错和结束标志文件函数才clearerr()
D.文件关闭函数fclose()
正确答案问询微信:424329
(21)在缓冲文件系统中用于读写的函数有
A.putchar ()
B.fread()
C.rewind ()
D.purw()
正确答案问询微信:424329
(22)内存中供用户使用的存储空间可分为:______。
A.程序区
B.静态存储区
C.动态存储区
D.数据存储区
正确答案问询微信:424329
(23)以下叙述中正确的是______。
A.对于double类型数组,不可以直接用数组名对数组进行整体输入或输出
B.当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”的出错信息
C.可以通过赋初值的方式确定数组元素的个数
D.数组名代表的是数组所占存储区的首地址,其值不可改变
正确答案问询微信:424329
(24)下列描述正确的是
A.由main 函数及其参数argc和* argv[]可以实现命令行方式
B.使用fclose关闭文件时,先释放文件指针,再写缓冲区数据到文件中
C.字符数组并不要求它的最后一个字符是‘