|
一、单选题(共 10 道试题,共 40 分。)V 1. 一个C语言程序是由
( j9 d* W) i: V" c; SA. 一个主程序和若干子程序组成
: ^' k. L. G3 c/ @2 yB. 函数组成! k* ^' r c3 P9 b0 i" k
C. 若干过程组成2 q3 }2 c* _$ k, _% p1 N* `3 n) R* M! {
D. 若干子程序组成4 P! R/ w! W5 T: g6 o. G* M
满分:4 分6 }2 r6 N2 I) N* P; j/ s' w
2. 若有以下程序 #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]); } 上面程序输出结果是
% q& l0 ]5 u/ w* mA. 6; Q0 i% r6 M3 O* H# x- t5 @ i3 ^
B. 8- [) F, X _+ r5 A: ?6 s
C. 4
. K2 _4 ?" e6 o5 J4 W, v) c# ND. 2; J: g) \ k4 l/ t" z
满分:4 分+ i) c# ?5 R% S" w3 h5 [
3. 设有以下说明语句 struct ex { int x ; float y; char z ;} example; 则下面的叙述中不正确的是, V! l, o" Y. @
A. struct结构体类型的关键字
1 E5 t/ G( a2 p9 T* uB. example是结构体类型名3 t3 u8 d x/ s2 {- Z3 j
C. x,y,z都是结构体成员名+ r9 z, C$ @4 L( E8 X# y
D. struct ex是结构体类型名3 [3 v, p% y o, `/ g
满分:4 分3 E& v0 J8 G: I
4. 在16位IBM-PC机上使用C语言,若有如下定义 struct data { int i; char ch; double f; } b; 则结构变量b占用内存的字节数是
+ r1 K$ M: C7 @! _% n* z4 O w/ nA. 1
# T' v' c; H7 T; S$ M$ zB. 2( k9 A4 `& j1 h% A5 {6 B, u
C. 7. ^7 ?* p9 J. f
D. 11% c6 {+ d, q$ D) H U: K1 k6 B
满分:4 分% I y- M) \" R! N8 ]3 ^
5. 以下程序有错,错误原因是 main() { int *p,i;char *q,ch; p=&i; q=&ch; *p=40; *p=*q; ...... }' N& n( x/ H, ^1 R
A. p和q的类型不一致,不能执行*p=*q;语句
1 D2 g) n. u/ @! tB. *p中存放的是地址值,因此不能执行*p=40;语句
. |% d* g) P& C0 E0 f( [6 {. X: S) pC. q没有指向具体的存储单元,所以*q没有实际意义
. c, d* n. w; K/ G$ iD. q虽然指向了具体的存储单元,但该单元中没有确定的值,所以执行*p=*q;没有意义,可能会影响后面语句的执行结果/ ~9 h+ w- y9 y9 u
满分:4 分" N5 u% C2 W8 [" K7 q, p
6. 假定以下程序经编译和连接后生成可执行文件PROG.EXE,如果在此可执行文件所在目录的DOS提示符下键入: PROG ABCDEFGH IJKL<回车>,则输出结果为 main( int argc, char *argv[]) { while(--argc>0) printf("%s",argv[argc]); printf("\n"); }
* A( L L0 z# Z9 R8 XA. ABCDEFG
( y" H* y) U/ [) C+ ?, g9 y5 S, z KB. IJHL " p' O4 u$ O) [& k
C. ABCDEFGHIJKL
6 ~8 S( q3 f# g/ |D. IJKLABCDEFGH- K9 q# w! S. N0 r
满分:4 分
& t. s! j# l- x# {2 W: q6 D7. 设有定义:int n=0,*p=&n,**q=&p,则下列选项中正确的赋值语句是# {. \! g; g. [6 k% s! g E8 ?
A. p=1;
( G9 I( m3 V- {- V2 S1 K$ fB. *q=2;. K- I8 O1 i! S t: m4 c
C. q=p;. h o; s" O" F/ I& {: p
D. *p=5;
, I z. @/ F" z 满分:4 分
1 r! }1 i& J4 x5 P/ A1 v; d+ Z) {8. 下列各数据类型不属于构造类型的是
0 O# g0 v! f: B3 x! U- Z' CA. 枚举型
* }- W: O; e- M4 u8 L1 _B. 共用型
4 a6 ?( C7 T; o, m3 F* K3 n. EC. 结构型
6 _4 s' c% B$ s* V7 q5 XD. 数组型& C: m5 t2 f5 A8 i& K. x {$ W( i
满分:4 分; v# _7 Z$ ?* x* N
9. 若已定义: int a[]={0,1,2,3,4,5,6,7,8,9}, *p=a,i; 其中 0≤i≤9, 则对a数组元素不正确的引用是
' |9 ~0 F' ]9 ?1 e" t& u; dA. a[p-a]/ w6 z6 X6 Q6 V0 t
B. *(&a[i])0 x- s1 O/ `$ u8 S
C. p[i]- w7 v, |1 r7 R5 M* W
D. a[10]" B! X' Y$ G4 F K
满分:4 分+ Q: q8 P( N# X* E
10. 有如下程序: long fib(int n) { if(n>2)return(fib(n-1)+fib(n-2)); else return(2); } main() { printf("%d\n",fib(3));} 该程序的输出结果是. L1 T2 ^7 r Q
A. 26 z1 i2 h. H& ^; V! S0 G5 Y. |
B. 4 ^; P. }% o' Y/ z+ m$ f
C. 6% d; S% O' s$ u8 A0 s
D. 8
) w$ P. E* e$ `( ]% `8 U, X 满分:4 分 $ c+ h) g/ x/ g
+ M w9 L/ }; M! x
二、多选题(共 5 道试题,共 20 分。)V 1. 下列说法不正确的是______。8 }# ? i2 F( r( |
A. C程序由符号构成
/ a5 x3 @4 r1 O2 rB. C程序由标识符构成
( c3 [9 `3 {( j+ U! _. MC. C程序由函数构成' G& N/ q0 a* I. b% I& e
D. C程序由C语句构成% k5 ]/ e; G, P7 ^; c/ q A* [6 G
满分:4 分& k8 B' }2 p" x9 I% n6 R6 N |/ M
2. 在动态存储区中主要存放以下数据______。
& p. g: ^6 q+ fA. 函数形式参数- g) ^' U9 c- t, V* r. ]& D9 ~
B. 自动变量3 u) K& p( w; d6 K( K% Z# F
C. 函数调用时的现场保护和返回地址
$ G7 v$ V# t" @: f6 _D. 全局变量2 D4 z. @5 Y. D" G/ w
满分:4 分! e" @: y1 p( @( V: r
3. C提供的预处理功能主要有______。& m* } U! B7 c5 N/ i3 m0 m
A. 宏定义
) v, a5 C; z0 H2 W0 B! W( ?B. 文件包含" H& K+ E" ?& e2 m# }
C. 条件编译$ s* ]7 P# o7 s
D. 异常终止
" m9 P# Q- }% r" `4 k9 M6 z4 O 满分:4 分$ k' E/ w- `' S7 c4 b2 s2 q/ |
4. 关于实参和形参的说法正确的是______。0 s8 z/ B% f0 [! K9 y: m+ P. R
A. 在定义函数中指定的形参,在未出现函数调用时,它们并不占内存中的存储单元
6 f- P4 V$ X ?, T6 F# Y: `0 ?: fB. 实参可以是变量、常量或表达式
/ T: V5 ~- i: u( d! i1 H+ ^& iC. 实参与形参的类型应相同或赋值兼容
/ f2 S- B/ m5 u% Q8 U0 aD. 实参变量对形参变量的数据传递是“值传递”' k8 [- x7 t- w! L% v* j& ]; I
满分:4 分$ |1 l, V2 Y* ^' T
5. 带参宏定义与函数的区别是:______。/ a7 S" {2 `# _( A3 @
A. 函数调用时,先求出实参表达式的值,然后代入形参,带参的宏只是进行简单的字符替换
; R* B" d" I9 d( tB. 函数调用是在程序运行时为形参分配临时的存储单元,而宏展开是在编译前进行的 m) D8 \8 \5 b# s
C. 宏不存在类型问题,宏名和参数都不存在类型问题6 L( q& k8 ~' L
D. 调用函数只能得到一个返回值,而使用宏可设法得到几个结果; G/ v+ f# h, T& i( J+ K
满分:4 分 5 [+ Y- S% z' u6 l8 _3 [
7 S/ b# u$ Z7 n- |1 b! m) \
三、判断题(共 10 道试题,共 40 分。)V 1. 函数必须有返回值,否则不能使用函数
* T' U# U6 l7 }1 ~2 `A. 错误* ~5 w4 F) U- p" W( C
B. 正确
1 ]$ \6 m4 i2 J* l 满分:4 分
2 J4 p6 |' H9 g4 w2. C语言中,整常数有三种表示形式:十进制整数,八进制整数,十六进制整数。( ). H* Q' I: a8 Y2 l
A. 错误
# l$ d# G/ Y. D* b; B6 i& NB. 正确# t! p8 {% M9 G; x' D. m
满分:4 分6 ~% `& I" s' i) ?" W1 e
3. 宏定义就是用宏名代替一个字符串,也就是简单的置换,不作正确性检查。1 z3 V5 }4 o& J/ L& Z% X
A. 错误
+ f& k# }' W4 e& h; u# f0 P, VB. 正确
A: |( X3 q6 x 满分:4 分6 Q; H% P# n% c
4. 使用printf和scanf函数时,必须添加#include <stdio.h>命令。( ). x6 ], s" h8 R8 o8 y
A. 错误% E( P% x6 [# Y# g9 z
B. 正确) _; G3 v9 L2 a9 x, f
满分:4 分
e4 t* @% A1 `/ [5. C语言编译系统在给出逻辑运算结果时,以数值1代表真,以0代表假,但在判断一个量是否为“真”时,以0代表假,以非0代表真。( )
@' }1 h/ k K7 Y2 r& ?) xA. 错误
# e6 n$ B# Y7 F# u5 p" V# CB. 正确
! w+ a, F& a- D6 E) d$ y3 K! a 满分:4 分. j# G+ j2 d8 U# x( R
6. 调用函数只可得到一个返回值,而用宏可以设法得到几个结果。
0 l. w0 F& q& G# x$ @- wA. 错误! `5 h9 {5 p- \$ K
B. 正确 F" r0 R5 n2 I3 P* M; M
满分:4 分& o4 C, G* i+ S% d) W$ F
7. switch语句中,各个case和default的出现次序不影响执行结果。( )
% R: h0 X, R! BA. 错误
: D) n& U% I5 U" mB. 正确
+ x' j% E- P! T 满分:4 分
o2 m" K6 j. e9 T# p: e8. for(;;)语句相当于while(1)语句: b- X5 d( I# C$ a9 w
A. 错误7 p$ ?2 i2 M( ~
B. 正确3 W+ E3 E0 m4 Z1 U
满分:4 分1 g/ |5 m4 N) p' f. v0 H
9. 模运算符要求两侧均应为整型数据。( ). c9 U! |6 |4 v0 k" P0 {& d
A. 错误
) t. r" Z B( ~2 b7 WB. 正确- A7 [- l1 Y: n- B3 v- n' Y
满分:4 分
" S9 I0 q% [0 i+ u$ ~& X0 t* d10. 对于double类型数组,不可以直接用数组名对数组进行整体输入或输出。: U6 h+ U, {3 [2 G
A. 错误
6 e, @: r/ w! Q. b% U HB. 正确1 k6 t i/ b) p3 b% z
满分:4 分
. n B* J; G0 t; z' e
/ M) ^4 D1 Y0 F0 ?如果资料还未上传请加QQ:1306998094 谢谢 |
|