西安交通大学18年5月补考《程序设计基础(高起专)》作业考核试题
试卷总分:100 得分:100
一、 单选题 (共 30 道试题,共 60 分)
1.用户定义的函数不可以调用的函数是()。
A.非整型返回值的
B.本文件外的
C.main函数
D.本函数下面定义的
正确答案:
2.若有int *p=(int *)malloc(sizeof(int));则向内存申请到内存空间存入整数123的语句为()。
A.scanf("%d",p);
B.scanf("%d",&p);
C.scanf("%d",*p);
D.scanf("%d",**p);
正确答案:A
3.在C语言中,形参的缺省存储类是()。
A.auto
B.register
C.static
D.extern
正确答案:A
4.以下程序段的输出结果是( )int a=1234;printf("%2d\n",a);
A.12
B.34
C.1234
D.提示出错、无结果
正确答案:
5.C语言中,要求运算数必须是整型的运算符是()。
A.^
B.%
C.!
D.>
正确答案:
6.下列程序段的输出结果为()。Int x=3,y=2;printf("%d",(x-=y,x*=y+8/5));
A.1
B.7
C.3
D.5
正确答案:
7.以下选项中合法的实型常数是()。
A.5E2.0
B.E-3
C..2E0
D.1.3E
正确答案:
8.关于switch语句说法不正确的是( )
A.case的次序不影响执行结果
B.每个case语句后面的常量可以不同
C.在执行完一个case语句后转到下一个case语句执行
D.每个case语句后面表达式只能是常量
正确答案:
9.关于数组,下列说法正确的是( )
A.对数组的初始化操作在定义数组的同时进行
B.给数组赋初值时,必须所有数组元素都被赋值
C.给数组元素全部赋初值时,一定要指明数组的大小。
D.引用数组元素的时候,可以一次引用数组中的全部元素
正确答案:A
10.下面关于do-while语句和while语句说法正确的是( )
A.while语句和do-while语句肯定都要执行
B.两者运行结果不同
C.do-while在判断条件之前先执行循环体一次
D.while语句至少执行一次
正确答案:
11.以下程序的运行结果是()。main(){int i=1,sum=0;while(i<10)sum=sum+1;i++;printf("i=%d,sum=%d",i,sum);}
A.i=10,sum=9
B.i=9,sum=9
C.i=2,sum=1
D.运行出现错误
正确答案:
12.以下说法错误的是( )
A.C语言函数分为由系统提供的标准库函数和由程序员自己定义的函数
B.在主函数main()中可以调用其他函数,其他函数之间不可以相互调用
C.C语言的程序是由一个函数或多个函数组成的
D.对于一个很大的任务,一般把它分解成若干源文件,分别编写和调试
正确答案:
13.double x;scanf("%lf",&x);不可以赋值给x变量的常量是()。
A.123
B.100000
C.A'
D."abc"
正确答案:
14.以下程序的输出结果是( )int f(){static int i=0;int s=1;s+=i; i++;return s;}main(){ int i,a=0;for(i=0;i<5;i++) a+=f();printf("%d\n",a);}
A.20
B.24
C.25
D.15
正确答案:
15.若有说明.int i,j=2,*p=&i;,则能完成i=j赋值功能的语句是()。
A.i=*p;
B.*p=*&j;
C.i=&j;
D.i=**p;
正确答案:
16.凡是函数中未指定存储类别的局部变量,其隐含的存储类别为()。
A.自动(auto)
B.静态(static)
C.外部(extern)
D.寄存器(register)
正确答案:A
17.若有int a[][]={{1,2},{3,4}};则*(a+1),*(*a+1)的含义分别为()。
A.非法,2
B.&a[1][0],2
C.&a[0][1],3
D.a[0][0],4
正确答案:
18.以下错误的描述是:函数调用可以()。
A.出现在执行语句中
B.出现在一个表达式中
C.做为一个函数的实参
D.做为一个函数的形参
正确答案:
19.若有下列定义和语句,则对a数组元素的非法引用是()。Int a[2][3],(*pt)[3];pt=a;
A.pt[0][0]
B.*(pt+1)[2]
C.*(pt[1]+2)
D.*(a[0]+2
正确答案:
20.以下叙述中不正确的是()。
A.一个好的程序应该有详尽的注释
B.在C程序中,赋值运算符的优先级最低
C.在C程序中,j++;是一条赋值语句
D.C程序中的#include和#define均不是C语句
正确答案:
21.若指针p已正确定义,要使p指向两个连续的整型动态存储单元,不正确的语句是( )
A.p=2*(int*)malloc(sizeof(int));
B.p=(int*)malloc(2*sizeof(int));
C.p=(int*)malloc(2*2);
D.p=(int*)calloc(2,sizeof(int));
正确答案:A
22.结构体类型的定义允许嵌套是指()。
A.成员是已经或正在定义的结构体型
B.成员可以重名
C.结构体型可以派生
D.定义多个结构体型
正确答案:A
23.关于建立函数的目的,以下正确的说法是()。
A.提高程序的执行效率
B.提高程序的可读性
C.减少程序的篇幅
D.减少程序文件所占内存
正确答案:
24.下列说法不正确的是:( )
A.++、——只能用于变量
B.++、——比负号运算符的优先级要高
C.++、——的结合方向是:自右至左。
D.++、——常用于循环变量表达式中
正确答案:
25.以下叙述正确的是( )
A.可以把define和if定义为用户标识符
B.可以把define定义为用户标识符,但不能把if定义为用户标识符
C.可以把if定义为用户标识符,但不能把define定义为用户标识符
D.define和if都不能定义为用户标识符
正确答案:
26.C语言中,定义结构体的保留字是()。
A.union
B.struct
C.enum
D.typedef
正确答案:
27.若k为int型变量,则以下程序段的执行结果是()。k=-8567;printf("|%06D|\n",k);
A.格式描述符不合法,输出无定值
B.输出为|%06D|
C.输出为|0-8567|
D.输出为|-8567|
正确答案:
28.以下叙述中正确的是()。
A.在程序的一行上可以出现多个有效的预处理命令行
B.使用带参的宏时,参数的类型应与宏定义时的一致
C.宏替换不占用运行时间,只占编译时间
D.在以下定义中CR是称为"宏名"的标识符#defineCR045
正确答案:
29.若有以下程序#include void f(int n);main(){ void f(int n);f(5);}void f(int n){ printf("%d\n",n); }则以下叙述中不正确的是( )
A.若只在主函数中对函数f进行说明,则只能在主函数中正确调用函数f
B.若在主函数前对函数f进行说明,则在主函数和其后的其它函数中都可以正确调用函数f
C.对于以上程序,编译时系统会提示出错信息:提示对对f函数重复说明
D.函数f无返回值,所以可用void将其类型定义为无值型
正确答案:
30.在计算机中,一个字节所包含二进制位的个数是( )
A.2
B.4
C.8
D.16
正确答案:
二、 多选题 (共 10 道试题,共 20 分)
1.以下不合法的赋值语句是()。
A.x=y=100
B.d--;
C.x+y;
D.c=int(a+b);
正确答案:ACD
2.以下选项中,合法的字符常量是()。
A.'\t'
B.'\17'
C."n"
D.'\xaa'
正确答案:ABD
3.设有以下定义int a=0;double b=1.25;cha rc='A';#defined2则下面语句中正确的是()。
A.a++;
B.b++;
C.c++;
D.d++;
正确答案:ABC
4.t为int类型,进入下面的循环之前,t的值为0do{………}while(t==1);则以下叙述中正确的是()
A.循环控制表达式的值为0
B.循环控制表达式的值为1
C.循环控制表达式合法
D.以上说法都不对
正确答案:AC
5.下列对逻辑运算符两侧的运算对象的数据类型描述不正确的是()。
A.只能是0或1
B.只能是0或非0正数
C.可以是整型或字符型数据
D.可以是任何类型的数据
正确答案:ABD
6.以下描述正确的是()。
A.使用while和do-while循环时,循环变量初始话的操作应在循环体语句之前完成
B.while循环是先判断表达式,后执行循环语句
C.do-while和for循环均是先执行循环语句,后判断表达式
D.for,while和do-while循环中的循环体均可以由空语句构成
正确答案:ABD
7.以下叙述正确的是()。
A.预处理命令行都必须以"#"开始
B.在程序中凡是以"#"开始的语句行都是预处理命令行
C.C程序在执行过程中对预处理命令行进行处理
D.#defineABCD是正确的宏定义
正确答案:ABD
8.下列为c语言的关键字是()
A.if
B.struct
C.union
D.Int
正确答案:ABC
9.以下选项中合法的表达式是()。
A.0<=x<100
B.i=j==0
C.(char)(65+3)
D.x+1=x+1
正确答案:ABC
10.以下描述错误的是()。
A.continue语句的作用是重新开始一次循环体的执行
B.只能在循环体内和switch语句体内使用break语句
C.在循环体内使用break语句和continue语句的作用相同
D.从多重循环嵌套中退出是,只能使用goto语句
正确答案:
三、 判断题 (共 10 道试题,共 20 分)
1.用户标识符中可以出现下划线和中划线(减号)。()
A.错误
B.正确
正确答案:A
2.C语言中,函数的隐含存储类别是extern()
A.错误
B.正确
正确答案:
3.break语句可用于switch语句,也可用于for、while和do循环语句中。()
A.错误
B.正确
正确答案:
4.若有static int a[10];则a数组的10个元素的值都是0。()
A.错误
B.正确
正确答案:
5.在C程序中“%”是只能用于整数运算的运算符,而“/”是既可以用于整数运算又可以用于实数运算的运算符。()
A.错误
B.正确
正确答案:
6.一个无符号整数各数字往左移动2位后,一定是原数的4倍。()
A.错误
B.正确
正确答案:A
7.函数的实参可以传递给形参,形参也可以传递给实参。()
A.错误
B.正确
正确答案:A
8.数组名代表数组的起始地址。()
A.错误
B.正确
正确答案:
9.在某种意义上,char和int通用。()
A.错误
B.正确
正确答案:
10.若定义char *str;则str="BOOK";是正确的。()
A.错误
B.正确
正确答案: