欢迎来到麦多课文档分享! | 帮助中心 海量文档,免费浏览,给你所需,享你所想!
麦多课文档分享
全部分类
  • 标准规范>
  • 教学课件>
  • 考试资料>
  • 办公文档>
  • 学术论文>
  • 行业资料>
  • 易语言源码>
  • ImageVerifierCode 换一换
    首页 麦多课文档分享 > 资源分类 > DOC文档下载
    分享到微信 分享到微博 分享到QQ空间

    【计算机类职业资格】国家二级C语言机试(编译预处理和指针)模拟试卷13及答案解析.doc

    • 资源ID:1332371       资源大小:59.50KB        全文页数:10页
    • 资源格式: DOC        下载积分:5000积分
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    二维码
    微信扫一扫登录
    下载资源需要5000积分(如需开发票,请勿充值!)
    邮箱/手机:
    温馨提示:
    如需开发票,请勿充值!快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如需开发票,请勿充值!如填写123,账号就是123,密码也是123。
    支付方式: 支付宝扫码支付    微信扫码支付   
    验证码:   换一换

    加入VIP,交流精品资源
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    【计算机类职业资格】国家二级C语言机试(编译预处理和指针)模拟试卷13及答案解析.doc

    1、国家二级 C语言机试(编译预处理和指针)模拟试卷 13及答案解析(总分: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.3,5,5,3B.3,5,3,5C.5,3,3,5D.5,3,5,32.有下列程序: void

    2、flint 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.有以下程序 #inclllde int fun(char s) main() int n=0; char s10=6,1,*,4,*,9,*,0,*; while(*s=0) 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,*

    4、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,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,“

    5、,*a); 则程序的输出结果是(分数:2.00)A.6,4,6B.6,4,3C.6,12,12D.9,4,98.若有以下程序 #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 in

    6、t*f(int*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.1 7B.23C.24D

    7、.2211.有以下程序 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

    8、0D.0 913.有以下程序 char fun(char*c)if(*c=A) *c-=A-a; return*c; main()char s81,*p=s; gets(s); while(*p)( *p=fun(*); 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=

    9、“abc“,*s2=“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*xchar*y)int n=0; while(*x=*y)&*x!=0) x+;y+;n+; return n; 函数的功能是(分数:2.00)A.查找 x和 y所指字符串中是否有0B.统计 x和 y所指字符串中最前面连续相同的字符个数C.将 y所指字符串赋给 x所指存储空间D.统计 x和 y所指字符串中相

    10、同的字符个数16.有以下函数 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.YT

    11、D.BY18.有以下程序 #include void fun(char*p) +p;printf(“sn“,*p); main() char*a=(“Morning“,“Afternoon“,“Evening“,“Night“); fhn(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.

    13、将 a所指字符串和 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.a

    14、abcc,bcc23.有以下程序 #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.acc,bbxxyyB.accxxyy,bbxxyyC.accbbxxyy,bbxxyyD.accxyy,bbxxyy24.有以下程序 #include #include void fun(char*w,int m) char s,*p1,*p2;

    15、 p1=w;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()

    16、 int a2=1,2,b2=40,50,*q=a; fun(a,b,q); pfintf(“dn“,*q); 程序运行后的输出结果是(分数:2.00)A.41B.42C.0D.1国家二级 C语言机试(编译预处理和指针)模拟试卷 13答案解析(总分: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);pri

    17、ntf(“d,dn“,*p,*q); 程序运行后的输出结果是(分数:2.00)A.3,5,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 flint b) int I; for(i=2;iA.1,2,3,4,5,6,7,8,9,10,B.1,2,3

    18、,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,解析:解析:函数 void f(int b)的功能是对数组 b中第 2个到第 5个元素的值逐个扩大 2倍。所以在 main()函数中,f(a)语句的作用是对数组 a10中从 a2到 a5的各个数字乘以 2,因而数组 a10的元素就变成了1,2,6,8,10,12,7,8,9,10。3.有以下程序 #inclllde int fun(char s) main() int n=0; char s10=6,1,*,4,*,9,*,0,*; while(*s

    19、=0) printf(“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=

    20、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,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

    21、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,*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也指向

    22、 t,输出三个 7,流程转到主函数,i 的值为 3,p 以及 r的值为 7。6.若有以下程序 #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,5 解析:解析:本题考查了返回值为指针的函数,函数 f的主要功能为第一个参数小于第二个参数,那么交换指针的指向,这对于实参指向的数据时没有影响的。最后返回比较大的元素的地址。主函数中 p指向i,q 指向 i,调用 r=fp,q),返回 q的地址,因此*p=3,*q=5,*r=5。7.若有以下程序 #include main()int k=3;

    23、 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); 则程序的输出结果是(分数:2.00)A.6,4,6 B.6,4,3C.6,12,12D.9,4,9解析:解析:本题考查了指针作为函数的参数,可以接收实参变量的地址,改变实参的值。主函数调用sp(&k),执行 sp函数 a指向向 k,执行语句*a=*a*2 后 a指向空间的值 k的值为 6,改变 a的指向以后,此时 a指向 b,则执行*a=*a*2 以后,a 指向空间 b的值为 4。调用

    24、结束返回主函数,输出 k的值为 6。8.若有以下程序 #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,解析:解析:本题考查二级指针作为函数的参数,可以通过函数调用来改变主函数中一级指针的指向。主函数中指针变量 p

    25、指向 i,r 指向 p,调用 f函数,形参指针 s指向 p,流程转到 f函数执行,指针变量 t指向 k,s 指向 t,此时更改了 s的指向,s 指向了 t,更改了 s指向的地址空间内容为 m的地址,同时 t也指向变量 m,因此*s 的值为 m的值,*t 为 m的值,k 为 7。流程返回到主函数,没有对主函数空间的数据和指向作出更改,因此全部为 3。9.若有以下程序 #include int*f(int*s,int*t)int k; if(*sA.3,5,5,3,5B.3,5,3,5,5C.5,3,5,3,5 D.5,3,3,5,5解析:解析:函数 f为返回值为指针的函数,主要功能是返回 s和

    26、t指向空间值大的数据的地址,同时如何 s指向空间数据大于 t指向空间的数据,那么交换。主函数 p和 q指向 i和 j,值为 3和 5i 的值人于 i的值,因此调用函数 f以后,返回 j的地址,r 指向 j,同时 i和j 的值交换,i=5,j=3,p 和 q的指向不变,p 指向 i,q 指向 j。10.有以下程序 #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(fu

    27、na,9,3);x+=sss(funb,8,3); printf(“dn“,x); 程序运行后的输出结果是(分数:2.00)A.1 7 B.23C.24D.22解析:解析:函数 funa的功能计算两个数据的和,funb 的功能计算两个数据的差,函数 sss中利用指向函数的指针作为函数的参数,可以在调用的时候,根据接收的函数地址来决定调用那一个函数。主函数中调用 x=sss(funa,9,3),将 funa函数的地址传递给 t,因此 sss函数成为求两个数据的和 12,继续将funb函数地址传给 t,求两个数据差为 5,和 s累加后结果为 17。11.有以下程序 void fun(int x,i

    28、nt 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 1 D.0 0解析:解析:函数 fun有四个形参,功能是利用参数的地址传递来计算前两个参数的和与差。主函数中调用 fun函数 c计算 4+3,d 计算 4-3值为 1。12.有以下程序 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);

    29、printf(“ddn“,a,b); 程序的输出结果是(分数:2.00)A.0 0B.9 9 C.9 0D.0 9解析:解析:函数 fun的主要功能是交换 p和 q指向的地址空间的数据,然后更改 p的指向的地址空间数据,使之和 q指向的数据相同。主函数调用 fun后,p 指向 a,q 指向 b,因此 a和 b的数据全部为 9。13.有以下程序 char fun(char*c)if(*c=A) *c-=A-a; return*c; main()char s81,*p=s; gets(s); while(*p)( *p=fun(*); putchar(*p); p+; printf(“n“); 若

    30、运行时从键盘上输入 OPEN THE DOOR,程序的输出结果是(分数:2.00)A.oPEN tHE dOORB.open the door C.OPEN THE DOORD.Open The Door解析:解析:函数 fun的主要功能是判断字符是否为大写字符,如果是则转换为小写字符,主函数读入大写字符串,转换成小写。14.有以下程序 void swap(char*x,char*y) main() char t; char*s1=“abc“,*s2=“123“; t=*x;*x=*y;*y=t; swap(s1,s2);printf(“s,sn“,s1,s2); 程序执行后的输出结果是(分数

    31、:2.00)A.abc,123B.123,abcC.321,cbaD.1bc,a23 解析:解析:函数 void swap(char*x,char*y)的功能是交换两个字符*x 和*y 中的内容。在主函数中字符指针 s1指向字符串abc,s2 指向字符串123。所以函数 swap(s1,s2)的执行结果就是字符a和1相互交换。15.有以下函数 int fun(char*xchar*y)int n=0; while(*x=*y)&*x!=0) x+;y+;n+; return n; 函数的功能是(分数:2.00)A.查找 x和 y所指字符串中是否有0B.统计 x和 y所指字符串中最前面连续相同的

    32、字符个数 C.将 y所指字符串赋给 x所指存储空间D.统计 x和 y所指字符串中相同的字符个数解析:解析:在 while循环中的判断表达式为(*x=*y)&*x!=0,所以只要字符串 x与 y的当前字符不相等时,循环就结束。16.有以下函数 int fun(char*s)char*t=s;while(*t+);return(t-s);该函数的功能是(分数:2.00)A.比较两个字符串的大小B.计算 s所指字符串的长度C.计算 s所指字符串占用内存字节的个数 D.将 s所指字符串复制到字符串 t中解析:解析:在函数 fun(char*s)中,首先用字符指针变量 t指向 s,而循环语句 while

    33、(*t+);的功能是使指针变量 t指向字符串变量 s的末尾,这时退出循环,因而语句 return(t-s);返回的就是字符串 s所指字符串的长度。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.YE C.YTD.BY解析:解析:程序只输出字母 ASCII值为奇数的字母,根据字母 B,Y,T,E 的 ASCII值的奇偶性相应输出。18.有以下程序

    34、 #include void fun(char*p) +p;printf(“sn“,*p); main() char*a=(“Morning“,“Afternoon“,“Evening“,“Night“); fhn(a); 程序的运行结果是(分数:2.00)A.fternoonB.MorningC.orningD.Afternoon 解析:解析:在程序中,指针的指针变量 a和 p都是指向字符串的指针。执行 fun(a)语句时,p 指向的是字符串数组 a的第一个字符串“Morning”,p 自加 1之后,*p 指向了字符串数组 a的第 2个字符串“Afternoon”。19.有以下程序 void

    35、 fun1(char*p) main() char*q; char a=“Program“),*p; q=p; p=&a3;fun1(p);printf(“sn“,a); while(*q!=0) (*q)+;q+; 程序执行后的输出结果是(分数:2.00)A.PrphsbnB.Prohsbn C.ProgsbnD.Program解析:解析:在函数 void funl(char*p)中,语句(*q)+的功能是 q所指的字符加 1,变成其后面的字符;q+就是指针 q指向下一个字符的位置。所以在主函数中,语句 p=&a3的作用是使指针 p指向字符数组a中的第四个字符的位置,即 p指向字符g;然后调

    36、用函数:fun1(p)后,字符g变成h,字符r变成s,字符a变成b,字符m变成n,因而字符数组 a中的内容就成“Prohsbn”。20.有以下程序 #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.ab解析:解析:主函数 main()定义了指向字符串的指针和一个字符数组,接着调用 fun(s,t)函数,进行实参向形参传递,函数 fun()第一个 wh

    37、ile语句判断*a 中的值为“*”时继续扫描,当遇到不是“*”时结束,接着第二个 while循环语句,将*a 中从“a”开始的后续所有字符都赋予*b,也就是 t80中的内容为“a*b*”。21.下列函数的功能是 void fun(char*a,char*b)while(*b=*a)!=0)a+;b+;(分数:2.00)A.使指针 b指向 a所指字符串B.将 a所指字符串和 b所指字符串进行比较C.将 a所指字符串赋给 b所指空间 D.检查 a和 b所指字符串中是否有0解析:解析:在 while语句的条件中是把字符*a 的值赋给字符*b,然后再判断字符*b 的值是否等于字符串的结束字符(0),当

    38、不等于结束字符(0)时,把字符指针变量 a,b 分别加 1,指它们的下一个字符,直到字符串 a的结束。这样程序执行的结果就是把字符串 a赋给了 b所指的存储空间。22.有以下程序 #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

    39、.bcc,aabccC.xy,aaaacc D.aabcc,bcc解析:解析:函数 fun(char s10,int n)通过两重 for循环语句,比较二维字符数组 s10的每个字符串的首字符大小,如果前一个字符串首字符大于后一个字符串的首字符,则交换这两个字符串的首字符。在主函数中,语句 fun(ss,5)的作用是对二维字符数组 ss510的 5个字符串的首字符进行从小到大的排序,不影响各个字符串另外的字符。所以排序结束后,5 个字符串的第一个字符依次变为a、a、b、b 和 x;最后输出第 1个和第 4个字符串。23.有以下程序 #include main() void fun(char*t

    40、,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.acc,bbxxyyB.accxxyy,bbxxyyC.accbbxxyy,bbxxyy D.accxyy,bbxxyy解析:解析:fun 函数中,第 1个 while循环语句使指针 t指向字符串的末尾,第 2个 while循环语句实现了字符串 t和 s的连接。主函数中语句 fun(ss,aa)的功能是将字符串 aa连接到字符串 ss的末尾。

    41、24.有以下程序 #include #include void fun(char*w,int m) char s,*p1,*p2; p1=w;p2=w+m-1; while(p1A.116611B.161616C.654321 D.123456解析:解析:函数。fun 的功能是将字符串 w中的元素从大到小进行排列,所以在主函数中调用函数 fun后,字符串 a的元素从大到小进行了排列。25.有以下程序: #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

    42、 10B.10 28 C.10 12D.10 16解析:解析:i=2 时,fun(&a2)返回值是 b=b+a1=2+3=5,b=b+b=5+5=10;i=3 时,fun(&a3)返回值是 b=b+a3=10+4=14,b=b+b=14+14=28。26.有以下程序 #include #include void fun(int*p1,int*p2,int*s) s=(int*)calloc(1,sizeof(int); *s=*p1+*p2;free(s); main() int a2=1,2,b2=40,50,*q=a; fun(a,b,q); pfintf(“dn“,*q); 程序运行后的输出结果是(分数:2.00)A.41 B.42C.0D.1解析:解析:主函数定义数组 a,b,q 指向数组 a,调用 tun函数以后形参接收实参的数据,p1 和 p2指向数组 a和 b,同时 s指向数组 a,在 fun函数中改变了 s的指向和赋值,但是在程序调用结束之间形参空间全部释放,因此对于 s的指向改动不会对主函数参数构成影响。因此主函数中数去*q 的值仍然为 1。


    注意事项

    本文(【计算机类职业资格】国家二级C语言机试(编译预处理和指针)模拟试卷13及答案解析.doc)为本站会员(sofeeling205)主动上传,麦多课文档分享仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知麦多课文档分享(点击联系客服),我们立即给予删除!




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
    备案/许可证编号:苏ICP备17064731号-1 

    收起
    展开