[计算机类试卷]国家二级C语言机试(编译预处理和指针)模拟试卷3及答案与解析.doc
《[计算机类试卷]国家二级C语言机试(编译预处理和指针)模拟试卷3及答案与解析.doc》由会员分享,可在线阅读,更多相关《[计算机类试卷]国家二级C语言机试(编译预处理和指针)模拟试卷3及答案与解析.doc(26页珍藏版)》请在麦多课文档分享上搜索。
1、国家二级 C语言机试(编译预处理和指针)模拟试卷 3及答案与解析 一、选择题 1 以下叙述中正确的是 ( A)在 C语言中,预处理命令行都以 #开头 ( B)预处理命令行必须位于 C源程序的起始位置 ( C) #inc1ude必须放在 C程序的开头 ( D) C语言的预处理不能实现宏定义和条件编译的功能 2 以下关于宏的叙述中正确的是 ( A)宏定义必须位于源程序中所有语句之前 ( B)宏名必须用大写字 *表示 ( C)宏调用比函数调用耗费时间 ( D)宏替换没有数据类型限制 3 设有宏定义: #defineIsDIV(k, n)(k n=1)?1: 0)且变量 m已正确定义并赋值,则宏调用:
2、 IsDIV(m, 5) IsDIV(m, 7)为真时所要表达的是 ( A)判断 m是否能被 5和 7整除 ( B)判断 m被 5或者 7整除是否余 l ( C)判断 m被 5和 7整除是否都余 1 ( D)判断 m是否能被 5或者 7整除 4 以下程序 #include stdio h #definefix)x*x*x main( ) inta=3, S, t; s=f(a+1); t=f(a+1); printf( d, dn, S, t); 程序运行后的输出结果是 ( A) 10, 10 ( B) 10, 64 ( C) 64, 10 ( D) 64, 64 5 以下叙述中错误的是 (
3、A)预处理命令行的最后不能以分号表示结束 ( B) C程序对预处理命令行的处理是在程序执行的过程中进行的 ( C) #defineMAx是合法的宏定义命令行 ( D)在程序中凡是以 #开始的语句行都是预处理命令行 6 若有以下程序 #defineS(x)x*x #defineT(x)S(x)*S(x) main( ) intk=5, j=2; printf( d, dn, S(k+j), T(k+j); 则程序的输出结果是 ( A) 17, 37 ( B) 49, 2401 ( C) 17, 289 ( D) 49289 7 有以下程序 #include stdio h #defineSUB(
4、x, Y)(x+1)*Y main( ) inta=3, b=4; printf( dn; SUB(a+, b+); ) 程序运行后的输出结果是 ( A) 20 ( B) 12 ( C) 16 ( D) 25 8 有以下程序 #include stdio h #defineSQR(x)x*x main( ) inta=10, k=2, m=1; a/=SQR(k+m)/SQR(k+m); printf( dn, a); )程序的输出结果是 ( A) 0 ( B) 1 ( C) 9 ( D) 10412文件包含 9 有以下程序 #include stdio h #include stdlib h
5、 main( ) int*a, *b, *c; a=b=c=(int*)malloc(sizeof(int); *a=l; *b=2, *c=3; a=b: printf( d, d, dn, *a, *b, *c); 程序运行后的输出结果是 ( A) 2,2, 3 ( B) 3, 3, 3 ( C) 1, 2, 3 ( D) 1, 1, 3 10 有以下程序段 int*p; p=_malloc(sizeof(int);若要求使 P指向一个 int型的动态存储单元,在横线处应填入的是 ( A) (int*) ( B) int ( C) int* ( D) (*int) 11 设有定义语句 in
6、t(*f)(int);则以下叙述正确的是 ( A) f是基类型为 int的指针变量 ( B) f是指向 int类型一维数组的指针变量 ( C) f是指向函数的指针变量,该函数具有一个 int类型的形参 ( D) f是函数名,该函数的返回值是基类型为 int类型的地址 12 以下叙述中正确的是 ( A)函数的类型不能是指针类型 ( B)函数的形参类型不能是指针类型 ( C)基类型不同的指针变量可以相互混用 ( D)设有指针变量为 double*p,则 p+1将指针 P移动 8个字节 13 以下叙述中错误的是 ( A)函数可以返回地址值 ( B)改变函数形参的值,不会改变对应实参的值 ( C)当在
7、程序的开头包含头文件 stdio h时,可以给指针变量赋 NULL ( D)可以给指针变量赋一个整数作为地址值 14 有以下程序 main( ) intm=1, n=2, *p= m, *q= n, *r; r-p, p=q, q=r; printf( d, d, d, dn, m, n, *p, *q); ) 程序运行后的输出结果是 ( A) 1,2, 1, 2 ( B) 1,2, 2, 1 ( C) 2, 1, 2, 1 ( D) 2, 1, 1, 2 15 设有定义 doublea10,: *cs=a;以下能够代表数组 元素 a3的是 ( A) (*s)3 ( B) *s3 ( C) *
8、s+3 ( D) *(s+3) 16 若有定义语句: inta23, *p3;则以下语句中正确的是 ( A) p0= a12; ( B) p0=a; ( C) p=a; ( D) p1= a; 17 有以下程序 main( ) inta5=2, 4, 6, 8, 10), *P, *k; P=a: k= p; printf( d, *(p+); printf( dn, *k); 程 序运行后的输出结果是 ( A) 44 ( B) 24 ( C) 22 ( D) 46 18 有以下程序 (注:字符 a的 ASC 码值为 97) main( ) char*S=abc); do printf( d,
9、 *s 10); +s; while(*S); 程序运行后的输出结果是 ( A) abc ( B) 7890 ( C) 979899 ( D) 789 19 若有定义语句: doublea, *p= a;以下叙述中错误的是 ( A)定义语句中的 *号是一个说明符 ( B)定义语句中的 P只能 存放 double类型变量的地址 ( C)定义语句中 *p= a把变量 a的地址作为初值赋给指针变量 P ( D)定义语句中的, *号是一个间址运算符 20 有以下程序 intfun1(doublea)returna*=a; intfun2(doublex, doubley) doublea=0, b=0
10、; a=fun1(x); b=fun1(y); return(int)(a+b); main( ) doublew; w=fun2(1 1, 2 0); ) 程序执行后输出结果是 ( A) 5 00 ( B) 5 ( C) 5 2l ( D) 0 04 7函数之间的地址值的传递 21 有以下程序 yoidfun(intn, int*S) intf; if(n=1)*s=n+l; elsefun(n-1, f); *S=f; main( ) intx=0: fun(4, x); printf( dn, x); 程序运行后的输出结果是 ( A) 1 ( B) 3 ( C) 4 ( D) 2 22
11、有以下程序 #include stdio h #defineN4 yoidfun(intaN, intb) inti; for(i=0; i N; i+)bi=aii; main( ) intxN=1, 2, 3), 4), 5,6, 7, 8), 9, 10, yN, i; fun(x, y); for(i=0; i N; i+)printf( d, , yi); printf(n); 程序的运行结果是 ( A) 1,2, 3, 4, ( B) 1,4, 5, 9, ( C) 1,0, 7, 0, ( D) 3,4, 8, 10 23 有以下程序 #include stdio h yoidf
12、un(char*c, intd) *c=*c+l; d=d+1; printfl c, c, , *c, d); main( ) charb=a, a=A; fun( b, a); printf( c, cn, b, a); 程序运行后的输出结果是 ( A) b, B, b, A ( B) b, B, B, A ( C) a, B, B, a ( D) a, B, a, B 24 有以下程序: #include stdio h yoidfun(char*c) while(*c) if(*c =aa *c =z)*c=*c=*(*a-A); C+; yoidmain( ) chars81; ge
13、ts(s); fun(s); puts(s); 当执行程序时从键盘上输入 HelloBeijing回车,则程序的输出结果是 ( A) HELLOBEIJING ( B) HelloBeijing ( C) helloBeijing ( D) hELLOBeijing 25 有以下程序 #include stdio h yoidfun(int*a, int*1) int*c; c=a; a=b; b=c; main( ) intx=3, y=5, *p= x, *q= y; fun(p, q); printfl d, d, , *p, *q); fun( x, y); printfl” d, d
14、n”, *p, *q); 程序运行后的输出结果是 ( A) 3, 5, 5, 3 ( B) 3, 5, 3, 5 ( C) 5, 3, 3, 5 ( D) 5, 3, 5, 3 26 有以下程序 #include stdio h intfun(charS) intn=0; while(*s =9 *s =0)n=10*n+*S-0; s+; ) return(n); main( ) chars10=6, 1, *, 4,*,9,*,0, *); printf( dn, fun(s); 程序的运行结果是 ( A) 61490 ( B) 61 ( C) 9 ( D) 5 27 若有以下程序 #in
15、clude stdio h intk=7: yoidflint料 s) int*t= k: *S=t: printf( d, d, d, , k, *t, *s); main( ) inti=3, *p= i, *r= p; f(r); printf( d, d, dn”, i, *P, *r); ) 则程序的输出结果是 ( A) 3,7, 7, 7, 7, 7 ( B) 7, 7, 7, 3, 3, 3 ( C) 3,3, 3, 7, 7, 7 ( D) 7,7, 7, 3, 7, 7 28 若有以下程序 jinclude stdio h yoidsp(int*a) intb=2; *a=*
16、a*2: printf( d, , *a); a= b: *a=*a*2: printf( d, , *a); ) main( ) intk=3: sp( k); printf( dn, k); 则程序的输出结果是 ( A) 6, 4, 6 ( B) 6,4, 3 ( C) 6, 12, 12 ( D) 9, 4, 9 29 若有以下程序 #include stdio h int*flint*S, int*t) intk; if(*S *t) k=*s; *s=*t; *t=k; retums; main( ) inti=3, j: 5, *p= i, *q= j, *r; r=f(p, q)
17、; pfintf( d, d, d, d, dn, i, j, *P, *q, *r); 则程序的输出结果是 ( A) 3,5, 5, 3, 5 ( B) 3, 5, 3, 5, 5 ( C) 5,3, 5, 3, 5 ( D) 5, 3, 3, 5, 5 30 有以下程序 yoidfun(intx, inty, int*c, int*d) *c x+y; *d=x y; ) main( ) inta=4, b=3, c=0, d=0; fun(a, b, c, d); printf( d dkn, C, d); ) 程序的输出结果是 ( A) 43 ( B) 34 ( C) 71 ( D)
18、0 31 有以下程序 charfun(char*c) if(*c =Z *c =A) *c A a; return*c; main( ) chars81, *p=s; gets(S); while(*P) *P=fun(P); putchar(*P); p+; ) printf(n); ) 若运行时从键盘上输入 OPENTHEDOOR,程序的输出结果是 ( A) oPENtHEdOOR ( B) openthedoor ( C) OPENTHEDOOR ( D) OpenTheDoor 32 有以下函数 intfun(char*x, char*Y) intn=0; while(*x=*Y) *
19、x!=0) x+; y+; n+; retumn; ) 函数的功能是 ( A)查找 x和 y所指字符串中是否有 0 ( B)统计 x和 Y所指字符串中最前面连续相同的字符个数 ( C)将 y所指字符串赋给 x所指存储空间 ( D)统计 x和 y所指字符串中相同的字符个数 33 有 以下程序 (说明:字 *A的 ASC 码值是 65) yoidfun(char*S) while(*S) if(*s 2) printf( c, *s); s+; main( ) chara BYTE; fun(a); printf(n”); 程序运行后的输出结果是 ( A) BT ( B) YE ( C) YT (
20、 D) BY 34 有以下程序 yoidfunl(char*p) char*q; q*p; while(*q!=0) (*q)+; q+; main( ) chara=“Program”), *p; p= a3; funl(p); printf(“ sn”, a); 程序执行后的输出结果是 ( A) Prphsbn ( B) Prohsbn ( C) Progsbn ( D) Program 35 下列函数的功能是 voidfun(char*a,char*b)while(*b *a)!=0)a+; b+; ( A)使指针 b指向 a所指字符串 ( B)将 a所指字符串和 b所指字符串进行比较
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
2000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 试卷 国家 二级 语言 编译 预处理 指针 模拟 答案 解析 DOC
