ImageVerifierCode 换一换
格式:DOC , 页数:39 ,大小:119.50KB ,
资源ID:1326072      下载积分:5000 积分
快捷下载
登录下载
邮箱/手机:
温馨提示:
如需开发票,请勿充值!快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝扫码支付 微信扫码支付   
注意:如需开发票,请勿充值!
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【http://www.mydoc123.com/d-1326072.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(【计算机类职业资格】二级C语言笔试-270及答案解析.doc)为本站会员(lawfemale396)主动上传,麦多课文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知麦多课文库(发送邮件至master@mydoc123.com或直接QQ联系客服),我们立即给予删除!

【计算机类职业资格】二级C语言笔试-270及答案解析.doc

1、二级 C 语言笔试-270 及答案解析(总分:86.00,做题时间:90 分钟)一、选择题(总题数:50,分数:50.00)1.下列关于队列的叙述中正确的是( )。(分数:1.00)A.在队列中只能插入数据B.在队列小只能删除数据C.队列是先进先出的线性表D.队列是先进后出的线性表2.有定义语句:“int a=1,b=2,c=3,x;”,则以下选项中各程序段执行后,x 的值不为 3 的是( )。(分数:1.00)A.if(ca)x=1; else if (ba) x=2;else x=3;B.if(a3)x=3; else if (a2) x=2;else x=1;C.if(a3) x=3;

2、if (a2) x=2;if (a1) x=1;D.if(ab)x=b;if (bc) x=c;if (ca) x=a;3.有以下程序:main ()int i, s=0;for(i=1;i10;i+=2) s+=i+1;printf(“%d/n“, s);程序执行后的输出结果是( )。(分数:1.00)A.自然数 19 的累加和B.自然数 110 的累加和C.自然数 19 中奇数之和D.自然数 110 中偶数之和4.有以下程序:#include string .hvoid f(char *s, char *t)char k;k=*s; *s=*t; *t=k;s+; t- -;if(*s)

3、f(s, t);main()char str10=“abcdefg“,*p;p=str+strlen(str)/2+ 1;f(p,p-2);printf(“%s/n“, str);程序运行后的输出结果是( )。(分数:1.00)A.abcdcfgB.gfedcbaC.gbcdefaD.abedcfg5.数据库 DB、数据库系统 DBS、数据库管理系统 DBMS 之间的关系是( )。(分数:1.00)A.DB 包含 DBS 和 DBMSB.DBMS 包含 DB 和 DBSC.DBS 包含 DB 和 DBMSD.没有任何关系6.设 a 和 b 均为 double 型变量,且 a=5.5、b=2.5

4、,则表达式(int) a +b/b 的值是( )。(分数:1.00)A.6.500000B.6C.5.500000D.6.0000007.下列选项中正确的语句是( )。(分数:1.00)A.chars 8;s=“Beijing“;B.char*s:s=Bei jing“);C.chars 8: s=“Bei jing“;D.char*s:s=“Bei jing“;8.有以下程序:void sum(int *(分数:1.00)A.a0=a19.以下叙述中正确的是( )。(分数:1.00)A.C 语言的源程序不必通过编译就可以直接运行B.C 语言中的每条叫执行语句最终都将被转换成二进制的机器指令C

5、.C 源程序经编译形成的二进制代码可以直接运行D.C 语言中的函数不可以单独进行编译10.下列描述中正确的是( )。(分数:1.00)A.程序就是软件B.软件开发不受计算机系统的限制C.软件既是逻辑实体,又是物理实体D.软件是程序、数据与相关文档的集合11.有以下程序:main()int a=1,b;for(b=1 ;b=10;b+)if(a=8) break;if(a%2=1)a+=5; continue; a-=3;printf(“%d/n“, b);程序运行后的输出结果是 ( )。(分数:1.00)A.3B.4c) 5D) 612.有以下程序:void swap (char *x,cha

6、r *y)char t;t=*x,*x=*y;*y=t;main()char* s1=“abc“,*s2=“123“;swap(s1,s2); printf(“%s,%s/n“,s1,s2);程序执行后的输出结果是( )。(分数:1.00)A.123,abcB.abc,123C.1bc,a23D.321,cba13.有以下程序:main()int i, j, x=0;for(i=0; i2; i+)x+;for( j=0; j=3; j+)if(j%2) continue;x+;x+;printf(“x=%d/n“, x);程序执行后输出结果是( )。(分数:1.00)A.x=4B.x=8C.

7、x=6D.x=1214.若有定义:int x=0, *p=, 则语句 printf(“%d/n“,*p);的输出结果是 ( )。(分数:1.00)A.随机值B.0C.x 的地址D.p 的地址15.下列选项中不符合良好程序设计风格的是( )。(分数:1.00)A.源程序要文档化B.数据说明的次序要规范化C.避免滥用 goto 语句D.模块设计要保证高耦合、高内聚16.有以下程序:int *flint *x, int *y)if(*x*y)return x;elsereturn y;main()int a=7,b=8,*p,*q,*r;p= q=r=f(p, q);printf(“%d, %d,

8、%d/n“,*p,*q,*r);执行后输出结果是( )。(分数:1.00)A.7,8,8B.7,8,7C.8,7,7D.8,7,817.有以下程序:mare()int i,s=0,t=1,2,3,4,5,6,7,8,9;for(i=0;i9;i+=2) s+=* (t+ i);printf (“%d/n“,s);程序执行后的输出结果是( )。(分数:1.00)A.45B.20C.25D.3618.若以下定义:struct linkint data;struck link *next;a,b,c,*p,*q;且变量 a 和 b 之间已有下图所示的链表结构:(分数:1.00)A.next=c;c.

9、 next=b;B.next=q;q. next=p. next;C.p-next= q-next=pnext;D.(*p).next=q;(*q).next=for(j=0j4;j+)i=j;if(i2) i=3-j;s+=bij;return s;main()int a44= 1,2,3,4, 0,2,4,6,3,6,9,12 , 3,2,1,0 ;printf(“%d/n“, f((分数:1.00)A.);执20.若在定义语句:int a, b, c,*p=c;之后,接着执行以下选项中的语句,则能正确执行的语句是( )。(分数:1.00)A.scanf(“%d”a, b,c);B.sca

10、nf(“%d%d%d”,a, b,c);C.scanf(“%d”,P);D.scanf(“%d”,p);21.若要说明一个类型名 STP,使得定义语句 STP 轧等价于 char*s;,以下选项中正确的是( )。(分数:1.00)A.typedef STP char*s;B.typedef *char STP;C.typedef STP *char;D.typedef char* STP;22.设 fp 为指向某二进制文件的指针,且已读到此文件末尾,则函数 feof (fp)的返回值为( )。(分数:1.00)A.EOFB.非 0 值C.0D.NULL23.以下程序中函数 f 的功能是: 当

11、flag 为 1 时,进行由小到大排序;当 flag 为 0 时,进行由大到小排序。void f(int b, int n, int flag)int i, j, t;for (i=0; in-1; i+)for (j=i+1; jn; j+)if(flag ? b!j: bibj)t=bi; bi=bj; bj=t; main ()int a10=5,4,3,2,1,6,7,8,9,10, i;f(f(a, 5, 1),for (i=0; i10; i+)printf(“%d,“, ai);程序运行后输出结果是( )。(分数:1.00)A.1,2,3,4,5,6,7,8,9,10,B.3,4

12、,5,6,7,2,1,8,9,10,C.5,4,3,2,1,6,7,8,9,10,D.10,9,8,7,6,5,4,3,2,1,24.以下 4 组用户定义标识符中,全部合法的一组是( )。(分数:1.00)A._mainencludesinB.If -maxturboC.txtREAL3COMD.intK_2_00125.下列叙述中正确的是( )。(分数:1.00)A.接口复杂的模块,其耦合程度一定低B.耦合程度弱的模块,其内聚程度一定低C.耦合程度弱的模块,其内聚程度一定高D.上述 3 种说法都不对26.有以下函数:int fun(char *s)char *t = s;while (*t+

13、);return (t-s);该函数的功能是( )(分数:1.00)A.比较两个字符串的大小B.计算 s 所指字符串占用内存字节个数C.计算 s 所指字符串的长度D.将 s 所指字符串自制到字符串 t 中27.有以下程序段:struct stint x; int *y; *pt;int a=1,2, b=3,4;struct st c2=10,a,20,b;pt=c;以下选项中表达式的值为 11 的是( )。(分数:1.00)A.*pt-yB.pt-xC.+pt-xD.(pt+)-x28.下列叙述中正确的是( )。(分数:1.00)A.线性链表中的各元素在存储空间中的位置必须是连续的B.线性链

14、表中的表头元素一定存储在其他元素的前面C.线性链表中的各元素在存储空间中的位置不一定是连续的,但表头元素一定存储在其他元素的前面D.线性链表中的各元素在存储空间中的位置不一定是连续的,且各元素的存储顺序也是任意的29.按照 C 语言规定的用户标识符命名规则,不能出现在标识符中的是( )。(分数:1.00)A.大写字母B.连接符C.数字字符D.下划线30.有以下程序:main()union unsigned int n;unsigned char c;u1;u1.c=A;printf(“%c/n“,u1.n);执行后输出结果是 ( )。(分数:1.00)A.产生语法错B.随机值C.AD.6531

15、.若有定义:float x=1.5;int a=1,b=3,c=2;则正确的 switch 语句是( )。(分数:1.00)A.switch(x)case 1.0: printf(“*/n“);case 2.0: printf(“*/n“);B.switch(int)x);case 1: printf(“*/n“);case 2: printf(“*/n“);C.switch(a +b)case 1: printf(“*/n“);case 2+1: printf(“*/n“);D.switch(a+b)case 1: printf(“*/n“);case c: printf(“*/n“);32

16、.若 x 和 y 代表整型数,以下表达式中不能正确表示数学关系x-y10 的是( )。(分数:1.00)A.abs(x-y)10B.x-y-10p2+; 函数的功能是( )。(分数:1.00)A.将 p1 所指字符串复制到 p2 所指内存空间B.将 p1 所指字符串的地址赋给指针 p2C.对 p1 和 p2 两个指针所指字符串进行比较D.检查 p1 和 p2 两个指针所指字符串中是否有/0,35.若变景均已正确定义井赋值,以下合法的 C 语言赋值语句是( ),(分数:1.00)A.x=y=5;B.x=n%2.5;C.x+ n=i;D.x=5=4+1;36.有以下程序:main()int k=5

17、;while(-k) printf(“%d“, k-=3);printf(“/n“);执行后的输出结果是( )。(分数:1.00)A.1B.2C.4D.死循环37.以下选项中,与 k=n+完全等价的表达式是( )。(分数:1.00)A.k=n, n=n+1B.n=n+1,k=nC.k=+nD.k+=n+138.有以下程序:main()char *p=“3697“,“2584“;int i, j; long num=0;for(i=0;i2;i+)j=0;while(pij!=/0)if(pilj -0)%2) num=10*num+ pij -0;j+=2;printf(“%d/n“, num

18、);程序执行后的输出结果是 ( )。(分数:1.00)A.35B.37C.39D.397539.有以下程序:street STUchar num10; float score3; ;main()struct STU s3= “20021“,90,95,85,“20022“,95,80,75 ,“20023“,100, 95, 90 ,*p=s,int i; float sum=0;for(i=0;i3 ,i+)sum=sum+ p-scorei;printf(“%6.2f/n“,sum);程序运行后的输出结果是( )。(分数:1.00)A.260.00B.270.00C.280.00D.285

19、.0040.下列选项中不属于软件生命周期开发阶段任务的是( )。(分数:1.00)A.软件测试B.概要设计C.软件维护D.详细设计41.下列叙述中正确的是( )。(分数:1.00)A.黑箱(盒)测试方法完全不考虑程序的内部结构和内部特征B.黑箱(盒)测试方法主要考虑程序的内部结构和内部特征C.白箱(盒)测试不考虑程序内部的逻辑结构D.上述 3 种说法都不对42.有以下程序:main ()int x=102,y=012;printf(“%2d,%2d/n”,x,y);执行后输出结果是( )。(分数:1.00)A.10,01B.02,12C.102,10D.02,1043.程序中头文件 type1

20、.h 的内容是#define N 5#define M1 N*3程序如下:#define “type1.h“#define M2 N*2main ()int i;i=M1+M2;printf(“%d/n“, i);)程序编译后运行的输出结果是( )。(分数:1.00)A.10B.20C.25D.3044.以下叙述中正确的是( )。(分数:1.00)A.周部变量说明为 static 存储类,其生存期将碍到延长B.全局变量说明为 static 存储类,其作用域将被扩大C.任何存储类的变量在未赋初值时,其值都是不确定的D.形参可以使用的存储类说明符与局部变量完全相同45.若函数调用时的实参为变量时,

21、以下关于函数形参和实参的叙述中正确的是( )。(分数:1.00)A.函数的实参和其对应的形参共占同一存储单元B.形参只是形式上的存在,不占用具体存储单元C.同名的实参和形参占同一存储单元D.函数的形参和实参分别占用不同的存储单元46.有如下程序:#include stdio. hmain ()FILE *fp1;fp1=fopen (“fl.txt“, “w“);fprintf(fp1,“abc“);fclose (fp1);若文本文件 f1.txt 中原有内容为:good,则运行以上程序后文件 f1txt 中的内容为( )。(分数:1.00)A.goodabcB.abedC.abcD.abc

22、good47.以下程序的输出的结果是( )。int x=3;main()int i;for(i=1;ix;i+)incre();incre()staic int x=1;x*=x+1;printf(“ %d“, x);(分数:1.00)A.33B.22C.26D.2548.以下程序中函数 f 的功能是将 n 个字符串按由大到小的顺序进行排序。#include string. hvoid f(char p10,int n)chart20;int i,j;for(i=0;in-1;i+)for(j=i+1;jn; j+)if(strcmp(pi,pj0)strcpy(t, pi); strcpy(

23、pi,pj);strcpy(pj,t);main()char p10=“abc“, “aabdfg“, “abbd“, “dcdbe“, “cd“; int i;f(p,5); printf(“%d/n“, strlen(p0);程序运行后的输出结果是( )。(分数:1.00)A.6B.4C.5D.349.以下不合法的用户标识符是( )。(分数:1.00)A.j2_KEYB.DoubleC.4dD._8_50.用树形结构来表示实体之间联系的模型称为( )。(分数:1.00)A.关系模型B.层次模型C.网状模型D.数据模型二、填空题(总题数:18,分数:36.00)51.在一个容量为 25 的循

24、环队列中,若头指针 front=16,尾指针 rear=9,则该循环队列中共有上 【1】 个元素。(分数:2.00)填空项 1:_52.在面向对象方法中,类之间共享属性和操作的机制称为 【2】 。(分数:2.00)填空项 1:_53.在数据库系统中,实现各种数据管理功能的核心软件称为 【3】 。(分数:2.00)填空项 1:_54.在数据库的概念结构设计中,常用的描述工具是 【4】 。(分数:2.00)填空项 1:_55.在 E-R 图中,矩形表示 【5】 。(分数:2.00)填空项 1:_56.设有定义:int n,*k=n;以下语句将利用指针变量 k 读写变量 n 中的内容,请将语句补充家

25、整。seanf(“%d“, 【6】 );printf(“%d/n“, 【7】 );(分数:2.00)填空项 1:_57.以下程序的运行结果是 【8】 。int k=0;void fun (int m)m+=k; k+=m;printf(“m=%d k=%d“,m,k+)main()int i=4;fun(i+);printf(“i=%d k=%d/n“,i,k);(分数:2.00)填空项 1:_58.有以下程序,若运行时从键盘输入:18,11回车,则程序的输出结果是 【9】 。main ()int a, b;printf(“Enter a, b:“); scanf(“%d, %d“,while

26、(a!=b)while(ab)a-b;while(ba)b-a;printf(“%3d%3d/n“,a,b);(分数:2.00)填空项 1:_59.以下程序运行后的输出结果是 【10】 。main()char c1,c2;for(c1=0,c2=9;c1c2;c1+,c2-)printf(“%c%c“,c1,c2);printf(“/n“);(分数:2.00)填空项 1:_60.以下程序的输出结果是 【11】 。main()int s,i;for(s=0,i=1;13;i+,s+=i);printf(“%d/n“,s);(分数:2.00)填空项 1:_61.若有以下程序:int f (int

27、x,int y)return(y-x)*x; main()int a=3,b=4,c=5,d;d=f(3,4),f(3,5);printf(“%d/n“,d);执行后输出结果是 【12】 。(分数:2.00)填空项 1:_62.fun 函数的功能是:首先对 a 所指的 N 行 N 列的矩阵,找出各行中的最大的数,再求这 N 个最大值中的最小的那个数作为函数值返回。请填空。#include stdio. h#define N 100int fun(int(*a)N)int row, col, max, min;for(row=0;rowN;row+for(max=arow0,col=1;colN

28、;col+)if( 【13】 )max=arowcol;if (row=0)min=max;else if ( 【14】 )min=max;return min;(分数:2.00)填空项 1:_63.以下程序运行后的输出结果是 【15】 。int f (int a,int n)if(n=1)return f(a,n-1)+an-1;elsereturn 0;main()int aa5=1,2,3,4,5,s;s=f(aa,5);printf(“%d/n“, s);(分数:2.00)填空项 1:_64.以下程序用来统计文件中字符个数。请填空。#include “stdio. h“main()FI

29、LE *fp;long num=OL;if(fp=fopen(“fname.dat“,“r“)=NULL)Pirntf(“Open error/n“); exit(0);while( 【16】 )fgetc(fp);num+; printf(“num=%1d/n“,num-1);fclose(fp);(分数:2.00)填空项 1:_65.以下程序运行后的输出结果是 【17】 。struct NODEint k;struct NODE *link;;main()struct NODE m5,*p=m,*p=m,*q=m+4;int i=0;while(p!=q)p-k=+i; p+q-k=i+;

30、 q-;q-k=i;for(i=0;i5;i+)printf(“%d“,mi.k);ptintf(“/n“);(分数:2.00)填空项 1:_66.下面程序由两个源程序文件:t4.h 和 t4.c 组成,程序编译运行的结果是: 【18】 。t4h 的源程序为:#define N 10#denne f2(x) (x*N)t4c 的源程序为:#include stdio. h#define M 8#define f(x) (x)*M)#include “t4.h“#main()int i, j;i=f(1+1); j=f2(1+1);printf(%d%d/n“,i, j);(分数:2.00)填空

31、项 1:_67.以下程序的输出结果是 【19】 。#include stdio.h#define M 5#define N M+Mmain()int k;k;N*N*5; printf(“%d/n“k);(分数:2.00)填空项 1:_68.若 fp 已下确定义为一个文件指针,d1.dat 为二进制文件,请填空,以便为“读”而打开此文件:fp= fopen( 【20】 );。(分数:2.00)填空项 1:_二级 C 语言笔试-270 答案解析(总分:86.00,做题时间:90 分钟)一、选择题(总题数:50,分数:50.00)1.下列关于队列的叙述中正确的是( )。(分数:1.00)A.在队列

32、中只能插入数据B.在队列小只能删除数据C.队列是先进先出的线性表 D.队列是先进后出的线性表解析:解析 队列是指允许在一端进行插入、而在另一端进行删除的线性表,允许插入的一端称为队尾,允许删除的一端称为队头,选项 A 和选项 B 错误。在队列中,最先插入的元素将最先能够被删除,反之,最后插入的元素将最后才能被删除,所以,队列又称为“先进先出”或“后进后出”的线性表,它体现了“先来先服务”的原则,选项 C 正确,选项 D 错误。2.有定义语句:“int a=1,b=2,c=3,x;”,则以下选项中各程序段执行后,x 的值不为 3 的是( )。(分数:1.00)A.if(ca)x=1; else

33、if (ba) x=2;else x=3;B.if(a3)x=3; else if (a2) x=2;else x=1;C.if(a3) x=3; if (a2) x=2;if (a1) x=1; D.if(ab)x=b;if (bc) x=c;if (ca) x=a;解析:解析 选项 A 首先判断 if 语句条件中表达式的值“31”为假,然后执行最近的 else 后面的语句,该 else 后面又为 if-else 语句,在这个 if-else 语句中首先判断该 if 语句条件中表达式的值“21”为假,程序执行其最近的 else 后面的语句,将 3 赋值给 x。选项 B 中首先判断 if 语句

34、条件中表达式的值“13”为真,然后执行最近的 else 后面的语句“x=3”,后面的 else 不再执行,最后 x 的值为 3。选项 C 中,首先选执行第一条 if 语句,由于“13”为真,执行此 if 后面的语句“x=3”,接着执行第二条 if 语句,由于“12”为真,执行此 if 后面的语句“x=2”,接着执行第三条 if 语句,由于“11”为假,后面的语句不执行,所以最后的 x 值为 2 不为 3。选项 D 中,首先选执行第一条 if 语句,由于“ab”为真,执行此 if 后面的语句“x=b”;接着执行第二条 if 语句,由于“bc”,为真,执行此 if 后面的语句“x=c”,接着执行第

35、三条 if 语句,由于“ca”为假,后面的语句不执行,所以最后的 x 值为 c 即为 3。所以,4 个选项中选项 C 符合题意。3.有以下程序:main ()int i, s=0;for(i=1;i10;i+=2) s+=i+1;printf(“%d/n“, s);程序执行后的输出结果是( )。(分数:1.00)A.自然数 19 的累加和B.自然数 110 的累加和C.自然数 19 中奇数之和D.自然数 110 中偶数之和 解析:解析 本题中,i 赋初值为 1,并对其每次进行加 2 操作,即 i 每次均为 110 之间的奇数, s+=i+ l,即 s=s+i+1,相当于 s 等于原来的 s 每

36、次加上 110 之间的偶数,直到 i10 不成立。当 i=1时,s=0+1+1+=2;当 i=3 时,s=2+3+1=2+4;当 i=5 时,s=2+4+5+1=2+4+6;当 i=7 时,s=2+4+6+7+1=2+4+6+8:当 i=9 时,s=2+4+6+8+9+1=2+4+6+8+10; 当 i=11 时,i10 不成立,结束循环。所以,4 个选项中选项 D 符合题意。4.有以下程序:#include string .hvoid f(char *s, char *t)char k;k=*s; *s=*t; *t=k;s+; t- -;if(*s) f(s, t);main()char

37、str10=“abcdefg“,*p;p=str+strlen(str)/2+ 1;f(p,p-2);printf(“%s/n“, str);程序运行后的输出结果是( )。(分数:1.00)A.abcdcfgB.gfedcba C.gbcdefaD.abedcfg解析:解析 本题定义的函数 f()是一个递归函数。它先交换两个字符指针所指的内容,然后将第 1 个指针往后移动位,第 2 个指针往前移动一位,如果第 1 个指针所指内容不是字符串结束标志,则递归调用自身。主函数中首先定义了个字符数组 sir10=“ahcdeft”然后定义了一个字符指针 p=str+ strlen(str)/2+1,即

38、让 p 指向 str+4(或D.char*s:s=“Bei jing“; 解析:解析 宁符数组初始化可以有两种方式:方式一,按单个字符的方式赋初值。方式二,把一个字符串作为初值赋给字符数组。比如:char ch5=“abc“),选项 A 属于这种情况,但是选项 A 定义的字符数组长度为 8,由于最后还要加一个“/0”做结束标志,所以赋给他的字符串长度应小于等于 7,所以选项 A 不正确;在给字符数组赋初值的时候,应该用花括号 “”和“”将字符串括起来,故选项 C 不正确。将字符型指针变量指向字符串也有两种方法,一是在定义指针变量时就给其赋初值,比如:char*p=“student“二是给指针变

39、量赋值,比如:p=“student“;(p 已经被定义为字符型指针变量:),故选项 D 正确,而选项 C 中的花括号是多余的,应该去掉,所以,4 个选项中选项 D 符合题意。8.有以下程序:void sum(int *(分数:1.00)A.a0=a1 解析:解析 本题中函数 sum(int *a)的作用是:将形参 a 所指的数组中的第二个元素的值 a1赋给第一个元素 a0主函数中定义一个长度为 10 的整型数组并赋初值,接着执行一个 for 循环,该循环共执行了 3 次。当 i=2 时,调用函数 sum(for(b=1 ;b=10;b+)if(a=8) break;if(a%2=1)a+=5;

40、 continue; a-=3;printf(“%d/n“, b);程序运行后的输出结果是 ( )。(分数:1.00)A.3B.4c) 5D) 6 解析:解析 本题中 a 的初始值为 1,在循环体中首先判断 a,如果=8 就用 break 跳出循环,接下来的判断语句 a%2=1,是判断 a 除以 2 的余数是否为 1,即 a 是否为奇数,是的话给 a 累加一个 5,然后用continue 开始下次循环。若两个条件都不满足就让 a 自减一个 3。因此第 1 次循环开始 a 为 1 不大于8,且是奇数,所以 a 被累加 5 开始下次循环;第 2 次循环开始 a 为 6 不大于 8,不是奇数,所以

41、a 被减去 3:第 3 次循环开始 a 为 3 不大于 8,是奇数,所以 a 被加上一个 5;第 4 次开始 a 为 8,满足第一个条件跳出循环。b 在第 1 次循环时等于 1,以后每次累加 1,所以最后输出为 4,选项 B 正确。12.有以下程序:void swap (char *x,char *y)char t;t=*x,*x=*y;*y=t;main()char* s1=“abc“,*s2=“123“;swap(s1,s2); printf(“%s,%s/n“,s1,s2);程序执行后的输出结果是( )。(分数:1.00)A.123,abcB.abc,123C.1bc,a23 D.321

42、,cba解析:解析 首先看 swap()函数,函数中定义了一个临时字符变量 t,然后将形参指针 x 所指内容存入t,再将形参指针 y 所指内容存入到 x 所指内容中,最后将临时变量 t 的内容存入到 y 所指内容中。所以该函数实现的是:交换两个字符指针所指向的内容。在主函数中,首先定义了两个字符指针 s1 和 s2,同时用字符串“abc“和“123”来初始化它们,此时它们指向的是两个字符串的第 1 个字符。所以,在调用完swap()函数后,彼此交换了两个字符串的第 1 个字符,最后输出结果为 1bc,a23。故应该选择 C。13.有以下程序:main()int i, j, x=0;for(i=

43、0; i2; i+)x+;for( j=0; j=3; j+)if(j%2) continue;x+;x+;printf(“x=%d/n“, x);程序执行后输出结果是( )。(分数:1.00)A.x=4B.x=8 C.x=6D.x=12解析:解析 外循环的循环变量 i 从 0 递增到 1 会循环 2 次,内循环的循环变量 j 从 0 递增到 3 会循环4 次。但是内循环中有一条 if 语句,每当 j%2 为真,即 j 为奇数时会跳过下面的 x+;语句,所以 4 次内循环只有 2 次执行到 x+;语句,再加上外循环中包含的 2 条 x+语句,所以每次外循环会使 x 自增 4 次,2 次外循环下

44、来 x 的值为 8。故应该选择 B。14.若有定义:int x=0, *p=, 则语句 printf(“%d/n“,*p);的输出结果是 ( )。(分数:1.00)A.随机值B.0 C.x 的地址D.p 的地址解析:解析 语句 int x=0,*p=elsereturn y;main()int a=7,b=8,*p,*q,*r;p= q=r=f(p, q);printf(“%d, %d, %d/n“,*p,*q,*r);执行后输出结果是( )。(分数:1.00)A.7,8,8B.7,8,7 C.8,7,7D.8,7,8解析:解析 本题定义了一个返回值为指针的函数 f(),此函数有两个指针型的形

45、参 x 和 y,该函数的功能,是返回 x 和 y 指向的变量中值较小的那个指针变量。主函数中定义了两个指针变量 p 和 q,并让它们指向了变量 a 和 b,调用函数 f(),返回指向的变量值较小的指针变量,r 的值为指针变量 p 的值(变量 a的地址),因此最后输出的*p、*q 和*r 的值是 7,8 和 7。所以,B 选项为所选。17.有以下程序:mare()int i,s=0,t=1,2,3,4,5,6,7,8,9;for(i=0;i9;i+=2) s+=* (t+ i);printf (“%d/n“,s);程序执行后的输出结果是( )。(分数:1.00)A.45B.20C.25 D.36

46、解析:解析 要获得数组 t 的第 i 个元素的内容,既可以使用常规的 ti表达式,也可以将数组名 t 看作一个指针常量,使用表达式*(t+ i)来获取数组 t 的第 i 个元素的内容。在本题中,for 循环会循环 5次,循环变量 i 从。开始,每次加 2。所以,循环结束后,s 中的值为 t0+t2+t4+t6+t6+t8=1+3+ 5+7+9=25。故应该选择 C。18.若以下定义:struct linkint data;struck link *next;a,b,c,*p,*q;且变量 a 和 b 之间已有下图所示的链表结构:(分数:1.00)A.next=c;c. next=b;B.nex

47、t=q;q. next=p. next;C.p-next= q-next=pnext;D.(*p).next=q;(*q).next=for(j=0j4;j+)i=j;if(i2) i=3-j;s+=bij;return s;main()int a44= 1,2,3,4, 0,2,4,6,3,6,9,12 , 3,2,1,0 ;printf(“%d/n“, f((分数:1.00)A.);执解析:解析 分析程序可知,函数 f()中的 for 循环作用,是将数组前三行中的对角线上的元素,即 b00、b11、b22和第一行的第四列元素即 b03累加到变量 s 中,然后将 s 的值返回。在主函数中首先定义了一个 4 行 4 列的二维数组,接着通过输出语句输出函数 f(a)的返回值。调用 f(a)的返回值为 a00+a11+a22+a03=1+2+9+4=16。所以,4 个选项中选项 D 符合题意。20.若在定义语句:int a, b, c,*p=c;之后,接着执行以下选项中的语句,则能正确执行的语句是( )。(分数:1.00)A

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