【计算机类职业资格】国家二级C语言机试(编译预处理和指针)模拟试卷10及答案解析.doc
《【计算机类职业资格】国家二级C语言机试(编译预处理和指针)模拟试卷10及答案解析.doc》由会员分享,可在线阅读,更多相关《【计算机类职业资格】国家二级C语言机试(编译预处理和指针)模拟试卷10及答案解析.doc(10页珍藏版)》请在麦多课文档分享上搜索。
1、国家二级 C语言机试(编译预处理和指针)模拟试卷 10及答案解析(总分:52.00,做题时间:90 分钟)一、选择题(总题数:26,分数:52.00)1.有以下程序 #include main() void fun(int*a,int*b) int x=3,y=5,*p=&x,*q=&y; int*c; fun(p,q);printf(“d,d,“,*p,*q); c=a;a=b;b=c; fun(&x,&y);printf(“d,dn“,*p,*q); 程序运行后的输出结果是(分数:2.00)A.75,5,3B.3,5,3,5C.5,3,3,5D.5,3,5,32.有下列程序: void f
2、)int b) int I; for(i=2;iA.1,2,3,4,5,6,7,8,9,10,B.1,2,3,4,10,12,14,16,9,10,C.1,2,6,8,10,12,7,8,9,10,D.1,2,6,8,10,12,14,16,9,10,3.有以下程序 #incltade int fun(char s) main() int n=0; char s10=6,1,*,4,*,9,*,0,*; while(*s=n0) printf(“dn“,fun(s); n=10*n+*s-0;s+; return(n); 程序的运行结果是(分数:2.00)A.61490B.61C.9D.54.
3、若有以下程序 #include void sp(int*a)int b=2; main()int k=3,*p=k; a=&b; sp(p); *a=*a*2; printf(“d,dn“,k,*p); printf(“d,“,*a); 则程序的输出结果是(分数:2.00)A.4,3,4B.4,3,3C.6,3,6D.6,6,65.若有以下程序 #include int k=7; void f(int*s)int*t=&k; *s=t: printf(“d,d,d,“,k,*t,*s); main()int i=3, *p=i,*r=&p; f(r);printf(“d,d,dn“,i,*p,
4、*r); 则程序的输出结果是(分数:2.00)A.3,7,7,7,7,7B.7,7,7,3,3,3C.3,3,3,7,7,7D.7,7,7,3,7,76.若有以下程序 #include int*f(int*s,int*t)int*k;if(*sA.3,5,5,3,5B.5,3,5,3,5C.5,3,3,5,5D.3,5,3,5,57.若有以下程序 #include main()int k=3: void sp(int*a)int b=2; sp(k); *a=*a*2;printf(“dn“,k); printf(“d,“,*a); a=&b: *a=*a*2; printf(“d,“,*a)
5、; 则程序的输出结果是(分数:2.00)A.6,4,6B.6,4,3C.6,12,12D.9,498.若有以下程序 #include int k=7,m=5; void f(int*s)int*t=&k; s=&t;*s=&m; printf(“d,d,d,“,k,*t,*s); main()int i=3,*p=&i,*r=&p; f(r); printf(“d,d,dn“,i,*p,*r); 则程序的输出结果是(分数:2.00)A.7,5,7,3,3,3,B.7,5,7,3,5,7,C.7,5,5,3,3,3,D.7,7,5,3,3,3,9.若有以下程序 #include int*f(in
6、t*s,int*t)int k; if(*sA.3,5,5,3,5B.3,5,3,5,5C.5,3,5,3,5D.5,3,3,5,510.有以下程序 #include int funa(int a,int b)return a+b;) int funb(int a,int b)return a-b; int SSS(int(*t)(),int x,int y)return(*t)(x,y); main()int x; x=sss(funa,9,3);x+=sss(funb,8,3); printf(“dn“,x); 程序运行后的输出结果是(分数:2.00)A.17B.23C.24D.2211.
7、有以下程序 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.4 3B.3 4C.7 1D.0 012.有以下程序 void fun(int*p,int*q)int t;t=*p;*p=*q;*q=t;*q=*p; main()int a=0,b=9; fun(&a,&b); printf(“ddn“,a,b); 程序的输出结果是(分数:2.00)A.0 0B.9 9C.9 0D.0 91
8、3.有以下程序 char fun(char*c)if(*c=A) *c-=A-a; return*c; main()char s81,*p=s; gets(s); while(*p) *p=fun(p); putchar(*p); p+; printf(“n“); 若运行时从键盘上输入 OPEN THE DOOR,程序的输出结果是(分数:2.00)A.oPEN tHE dOORB.open the doorC.OPEN THE DOORD.Open The Door14.有以下程序 void swap(char*x,char*y) main() char t; char*s1=“abc“,*s
9、2=“123“; t=*x;*x=*y;*y=t; swap(s1,s2);printf(“s,sn“,s1,s2); 程序执行后的输出结果是(分数:2.00)A.abc,123B.123,abcC.321,cbaD.1bc,a2315.有以下函数 int fun(char*x,char*y)int n=0; whi!e(*x=*y)&*x!=0) x+;y+;n+; return n; 函数的功能是(分数:2.00)A.查找 x和 y所指字符串中是否有0B.统计 x和 y所指字符串中最前面连续相同的字符个数C.将 y所指字符串赋给 x所指存储空间D.统计 x和 y所指字符串中相同的字符个数1
10、6.有以下函数 int fun(char*s)char*t=s;while(*t+);return(t-s);该函数的功能是(分数:2.00)A.比较两个字符串的大小B.计算 s所指字符串的长度C.计算 s所指字符串占用内存字节的个数D.将 s所指字符串复制到字符串 t中17.有以下程序(说明:字母 A的 ASCII码值是 65) void fun(char*s)while(*s) if(*s2) printf(“c“,*s);s+;) main()char a=“BYTE“; fun(a);printf(“n“);) 程序运行后的输出结果是(分数:2.00)A.BTB.YEC.YTD.BY1
11、8.有以下程序 #include void fun(char*p) +p;printf(“sn“,*p);) main() char*a=(“Morning“,“Afternoon“,“Evening“,“Night“); fun(a); 程序的运行结果是(分数:2.00)A.fternoonB.MorningC.orningD.Afternoon19.有以下程序 void fun1(char*p) main() char*q; char a=“Program“,*p; q=p; p=&a3;fun1(p);printf(“sn“,a); while(*q!=0) *q)+;q+; 程序执行后
12、的输出结果是(分数:2.00)A.PrphsbnB.ProhsbnC.ProgsbnD.Program20.有以下程序 #include main() void fun(char*a,char*b) char*s=“*a*b*“,t80; while(*a=*)a+; fun(s,t);puts(t); while(*b=*a)b+;a+; 程序的运行结果是(分数:2.00)A.a*bB.*a*bC.a*b*D.ab21.下列函数的功能是 void fun(char*a,char*b)while(*b=*a)!=0)a+;b+;(分数:2.00)A.使指针 b指向 a所指字符串B.将 a所指字
13、符串和 b所指字符串进行比较C.将 a所指字符串赋给 b所指空间D.检查 a和 b所指字符串中是否有022.有以下程序 #include #include void fun(char s10,int n) char t;int i,j; for(i=0;isj0)t=si0;si0=sj0;sj0=t; main() char ss510=“bcc“,“bbcc“,“xy“,“aaaacc“,“aabcc”; fun(ss,5);printf(“s,sn“,ss0,ss4); 程序的运行结果是(分数:2.00)A.aaaacc,xyB.bcc,aabccC.xy,aaaaccD.aabcc,b
14、cc23.有以下程序 #include main() void fun(char*t,char*s) char ss10=“acc“,aa10=“bbxxyy“; while(*t!=0)t+; fun(ss,aa);printf(“s,sn“,ss,aa); while(*t+:*s+)!=0); 程序的运行结果是(分数:2.00)A.ace,bbxxyyB.accxxyy,bbxxyyC.accbbxxyy,bbxxyyD.accxyy,bbxxyy24.有以下程序 #include #include void fun(char*w,int m) char s,*p1,*p2; p1=w;
15、p2=w+m-1; while(p1A.116611B.161616C.654321D.12345625.有以下程序: #include int b=2: int fun(int*k) b=*k+b;return(b); main() int a10:1,2,3,4,5,6,7,8),i; for(i=2;iA.8 10B.10 28C.10 12D.10 1626.有以下程序 #include #include void fun(int*p1,int*p2,int*s) s=(int*)calloc(1,sizeof(int); *s=*p1+*p2;free(s); main() int
16、a2=1,2,b2=40,50,*q=a; fun(a,b,q); printf(“dn“,*q); 程序运行后的输出结果是(分数:2.00)A.41B.42C.0D.1国家二级 C语言机试(编译预处理和指针)模拟试卷 10答案解析(总分:52.00,做题时间:90 分钟)一、选择题(总题数:26,分数:52.00)1.有以下程序 #include main() void fun(int*a,int*b) int x=3,y=5,*p=&x,*q=&y; int*c; fun(p,q);printf(“d,d,“,*p,*q); c=a;a=b;b=c; fun(&x,&y);printf(“
17、d,dn“,*p,*q); 程序运行后的输出结果是(分数:2.00)A.75,5,3B.3,5,3,5 C.5,3,3,5D.5,3,5,3解析:解析:本题考查函数的调用与指针。p 和 q分别为指向 x和 y的指针,函数 fun()的两个形参均为指针型,主要功能为交换两个指针的指向,当调用结束以后,该操作不能返回主函数。而主函数中,fun(p,q)、fun(&x,&y)的实参均为 x与 y的地址,因此,两者结果相同,并且两者指针指向的值不能变化。2.有下列程序: void f)int b) int I; for(i=2;iA.1,2,3,4,5,6,7,8,9,10,B.1,2,3,4,10,
18、12,14,16,9,10,C.1,2,6,8,10,12,7,8,9,10, D.1,2,6,8,10,12,14,16,9,10,解析:解析:函数 void f(int b)的功能是对数组 b中第 2个到第 5个元素的值逐个扩大 2倍。所以在 mainC、)函数中,fa)语句的作用是对数组 a10中从 a2到 a5的各个数字乘以 2,因而数组 a10的元素就变成了1,2,6,8,10,12,7,8,9,10。3.有以下程序 #incltade int fun(char s) main() int n=0; char s10=6,1,*,4,*,9,*,0,*; while(*s=n0) p
19、rintf(“dn“,fun(s); n=10*n+*s-0;s+; return(n); 程序的运行结果是(分数:2.00)A.61490B.61 C.9D.5解析:解析:在 fun函数中,while 循环的功能是逐个取字符数组 s的字符判断其是否是数字。若是则将这些数字组成一个数保存到变量 n中,并返回变量 n的值。所以在主函数中调用 fun(s)时,将把字符数组 s中的数字组成一个数输出。因为当指针 s指向数组的第 3位时,即字符*,循环条件不成立,循环结束,返回 n的值。所以输出 n的值为 61。4.若有以下程序 #include void sp(int*a)int b=2; main
20、()int k=3,*p=k; a=&b; sp(p); *a=*a*2; printf(“d,dn“,k,*p); printf(“d,“,*a); 则程序的输出结果是(分数:2.00)A.4,3,4B.4,3,3 C.6,3,6D.6,6,6解析:解析:主函数中定义指针变量 p指向 k,调用函数 sp(p),将 k的地址传递给形参指针 a,函数转到 sp运行,a 指向 b的地址,表达式*a=*a*2,相当于 b=b*2,得到*a 的数据 4输出。函数调用结束,此时 a和 b的空间撤销,而对实参 k和 p的值并没有改变,仍旧是 3。5.若有以下程序 #include int k=7; voi
21、d f(int*s)int*t=&k; *s=t: printf(“d,d,d,“,k,*t,*s); main()int i=3, *p=i,*r=&p; f(r);printf(“d,d,dn“,i,*p,*r); 则程序的输出结果是(分数:2.00)A.3,7,7,7,7,7B.7,7,7,3,3,3C.3,3,3,7,7,7D.7,7,7,3,7,7 解析:解析:本题考查了二级指针,二级指针可以保存一级指针的地址。主函数中 p指向 i,r 指向 p,函数调用后 s指向 p,在 f函数中 t指向全局变量 k=7,s 指向 t,同时 s保存了实参 p的地址,此时 p也指向 t,输出三个 7
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
5000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 职业资格 国家 二级 语言 编译 预处理 指针 模拟 试卷 10 答案 解析 DOC
