【计算机类职业资格】国家二级C语言机试(翻译预处理和指针)模拟试卷12及答案解析.doc
《【计算机类职业资格】国家二级C语言机试(翻译预处理和指针)模拟试卷12及答案解析.doc》由会员分享,可在线阅读,更多相关《【计算机类职业资格】国家二级C语言机试(翻译预处理和指针)模拟试卷12及答案解析.doc(9页珍藏版)》请在麦多课文档分享上搜索。
1、国家二级 C语言机试(翻译预处理和指针)模拟试卷 12及答案解析(总分:50.00,做题时间:90 分钟)一、选择题(总题数:25,分数:50.00)1.以下程序的输出结果是( )。#define PT 35;#define S(x)PT*x*x;main()int a=1,b=2;printf(41fn,S(a+b);(分数:2.00)A.140B.75C.程序有错无输出结果D.3152.以下程序的输出结果是( )。 #include #define S(x)4*(x)*x+1 void main() int k=5,j=2; printf(dn,S(k+j); (分数:2.00)A.33B
2、.143C.28D.1973.以下程序的输出结果是( )。 #include #define SUB(A)(A)(A) main()int a=2,b=3,c=5,d; d=SUB(a+b)*c; printf(dn,d);(分数:2.00)A.0B.10C.一 12D.一 204.以下程序的输出结果是( )。 #include #define N 5 #define M N+1 #define f(x)(x*M) main() int i1,i2; il=f(2); i2=f(1+1); printf(ddn,il,i2);(分数:2.00)A.12 12B.12 7C.12 11D.11
3、75.关于#define N 100 的叙述中正确的是( )。(分数:2.00)A.宏定义行中定义了标识符 N的值为整数 100B.上述宏定义行实现将 100赋给标识符 NC.在运行时用 100替换标识符 ND.在编译程序对 C源程序进行预处理时用 100替换标识符 N6.以下程序的输出结果是( )。#includestdioh#define N 2#define M N+1#define NUM(M+1)*M2main()printf(dn,NUM);(分数:2.00)A.9B.8C.7D.67.以下程序的输出结果是( )。 #include #include int fun(int n)
4、main() int *P; int a; p=(int *)malloc(sizeof(int); a=fun(10); *p=n;return *p; printf(dn,a+fun(10); (分数:2.00)A.21B.20C.10D.118.关于 int(*f)(int);的叙述中正确的是( )。(分数:2.00)A.f是基类型为 int的指针变量B.f是指向 int类型一维数组的指针变量C.f是指向函数的指针变量,该函数具有一个 int类型的形参D.f是函数名,该函数的返回值是基类型为 int类型的地址9.关于函数参数的叙述中正确的是( )。(分数:2.00)A.函数的形参类型不能
5、是指针类型B.函数的类型不能是指针类型C.基类型不同的指针变量可以相互混用D.设有指针变量为“double *p”,则“p+1”将指针 p移动 8个字节10.设 int x=0,*p;下列赋值语句正确的是( )。(分数:2.00)A.*p=x;B.p=NULL;C.p=x;D.*p=NULL;11.22设 float x;则以下对指针变量 P进行定义且赋初值的语句中正确的是( )。(分数:2.00)A.float *p=1;B.float *p=&x;C.float p=&x;D.int *p=(float)x;12.没有编译错误的程序段是( )。(分数:2.00)A.char*sp,s10;
6、sp=Hello;B.char*sp:s10;s=Hello;C.char strl10=computer,str210;str2=str1:D.char mark;mark=PROGRAM;13.以下程序的输出结果是( )。 main() int a=I,b=3,c=5; int *pl=&a,*p2=&b,*p=&c; *p=*p1*(*p2);printf(dn,c);(分数:2.00)A.4B.3C.2D.114.若 int year=一 2009,*p=&year;以下不能使变量 year中的值增至 2010的语句是( )。(分数:2.00)A.(*p)+;B.+(*P);C.*p+
7、;D.*p+=1;15.若 int x10,*pt=x;则对 x数组元素的正确引用是( )。(分数:2.00)A.*(x+3)B.*&x10C.*(pt+10)D.pt+316.以下程序的输出结果是( )。void fun(char *s)char a10; main()char *p=PROGRAM;strcpy(a,STRING); fun(p);s=a; printf(sn,p);(分数:2.00)A.STRING?B.PROGRAMC.STRING?D.STRING?17.以下程序的输出结果是( )。 #include int fun(char*s)char*p=s; while(*p
8、!=0)p+; return(pS); main()printf(dn,fun(goodbey!);(分数:2.00)A.7B.8C.9D.018.以下程序的输出结果是( )。void f(int*q) main()int i=0; int a5=1,2,3,4,5,i;for(;i5;i+)(*q)+; f(a);for(i=0;i5;i+) printf(d,ai);(分数:2.00)A.2,2,3,4,5,B.6,2,3,4,5,C.1,2,3,4,5,D.2,3,4,5,6,19.以下程序的输出结果是( )。 #include int*f(int*s,int*t)int k; if(*
9、s*t) k=*s;*s=*t;*t=k; return s; main()int i=3,j=5,*p=&i,*q=&j,*r; r=f(p,q); printf(d,d,d,d,dn,i,j,*P,*q,*r);(分数:2.00)A.3,5,5,3,5B.3,5,3,5,5C.5,3,5,3,5D.5,3,3,5,520.以下程序的输出结果是( )。void fun(int x,int y,int *c,int *d)*c=x+y;*d=x 一 y;main()int a=4,b=3,c=0,d=0;fun(a,b,&c,&d);printf(ddn,c,d);(分数:2.00)A.0 0
10、B.3 4C.7 1D.4 321.若运行时从键盘上输入 OPEN THE DOOR,以下程序的输出结果是( )。char fun(char*C)if(*e=Z&*c=A)*c 一=A一a:return*c;main()char s81,*p=s;gets(s);while(*P)*p=fun(p);putchar(*P);p+;prinnf(n);(分数:2.00)A.OPEN THE DOORB.open the doorC.oPEN tHE dOORD.Open The Door22.以下函数的功能是( )。int fun(char*x,char*y)int n=0;while(*x=*
11、y)&*x!=0)x+;y+;n+;return n;(分数:2.00)A.统计 x和 y所指字符串中相同的字符个数B.统计 x和 y所指字符串中最前面连续相同的字符个数C.将 y所指字符串赋给 x所指存储空间D.查找 x和 y所指字符串中是否有023.以下程序的输出结果是( )。(说明:字母 A的 ASC码值是 65)void fun(char*s)while(*s)if(*s2)printf(c,s);s+;main()char a=BYTE;fun(a);printf(n);(分数:2.00)A.YTB.YEC.BTD.BY24.以下程序的输出结果是( )。void funl(char*
12、p) main()char*q; char a=Program,*p;q=p; p=&a3;funl(p);printf(sn,a);while(*q!=0)(*q)+;q+;(分数:2.00)A.ProgramB.ProhsbnC.ProgsbnD.Prphsbn25.以下函数的功能是( )。void fun(char*a,char*b)while(*b=*a)!=0)a+;b+;(分数:2.00)A.使指针 a指向 b所指字符串B.检查 a和 b所指字符串中是否有0C.将 a所指字符串赋给 b所指空间D.将 a所指字符串和 b所指字符串进行比较国家二级 C语言机试(翻译预处理和指针)模拟试
13、卷 12答案解析(总分:50.00,做题时间:90 分钟)一、选择题(总题数:25,分数:50.00)1.以下程序的输出结果是( )。#define PT 35;#define S(x)PT*x*x;main()int a=1,b=2;printf(41fn,S(a+b);(分数:2.00)A.140B.75C.程序有错无输出结果 D.315解析:解析:C 语言规定预处理语句后面不能加分号,因此程序有错。如果没加分号的话 S(a+b)=PT*a+b*a+b=35*1+2*1+2=75。2.以下程序的输出结果是( )。 #include #define S(x)4*(x)*x+1 void ma
14、in() int k=5,j=2; printf(dn,S(k+j); (分数:2.00)A.33B.143 C.28D.197解析:解析:本题考查带参数的宏的定义和替换点。在程序中定义了带参数的宏 S(x),当在主函数中用参数 k+i调用宏 S时,根据宏替换的原则,则 S(k+j)=S(5+2)=4*7*5+2+1=143。3.以下程序的输出结果是( )。 #include #define SUB(A)(A)(A) main()int a=2,b=3,c=5,d; d=SUB(a+b)*c; printf(dn,d);(分数:2.00)A.0B.10C.一 12D.一 20 解析:解析:本题
15、主要考查的是宏替换,在程序中执行 d=SUB(a+b)*c这条语句时,首先要进行宏替换,依据宏 SUB(A)的定义可知,上面这条语句替换为 d=(a+b)一(a+b)*c,因为乘法的优先级比减法的优先级高,所以先进行乘法运算,即 d=55*5=一 20,可以看出,出现了运算错误。4.以下程序的输出结果是( )。 #include #define N 5 #define M N+1 #define f(x)(x*M) main() int i1,i2; il=f(2); i2=f(1+1); printf(ddn,il,i2);(分数:2.00)A.12 12B.12 7C.12 11D.11
16、7 解析:解析:本题考查了宏的嵌套定义定义了 3个宏定义语句,分别是:#defineN 5、#defineM N+1 和#definef(x)(x*M),所以根据 C语言的宏交替规则,我们可知,f(2)=2*N+1 2*5+1=11,f(1+1)=1+1*N+1=1+1*5+1=7。5.关于#define N 100 的叙述中正确的是( )。(分数:2.00)A.宏定义行中定义了标识符 N的值为整数 100B.上述宏定义行实现将 100赋给标识符 NC.在运行时用 100替换标识符 ND.在编译程序对 C源程序进行预处理时用 100替换标识符 N 解析:解析:在 C语言中,凡是以“#”开头的行
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
5000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 职业资格 国家 二级 语言 翻译 预处理 指针 模拟 试卷 12 答案 解析 DOC
