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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

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

1、二级 C 语言笔试-118 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:50,分数:60.00)1.程序中头文件 typelh 的内容是:#define N 5#define M1 N *3程序如下:#include“typelh”#define M2 N*2main()int i;i=M1+M2;Printf(“%d/n”,0;程序编译后运行的输出结果是:(分数:1.00)A.10B.20C.25D.302.以下选项中,与 k=n+完全等价的表达式是(分数:1.00)A.k=n,n=n+1B.n=n+1,k=nC.k=+nD.k+=n+13.利用 E-R 模型进

2、行数据库的概念设计,可以分成三步:首先设计局部 E-R 模型,然后把各个局部 E-R 模型综合成一个全局的模型,最后对全局 E-R 模型进行(),得到最终的 E-R 模型。(分数:1.00)A.简化B.结构化C.最小化D.优化4.以下程序中函数 sort 的功能是对 a 所指数组中的数据进行由大到小的排序void sort(int a,int n)int i,j,t;for(i=0;in-1;i+)for(j=i+1;jn;j+)if(aiaj) t=ai;ai=aj;aj=t;main()int aa10=1,2,3,4,5,6,7,8,9,10,i;sort(&aa3,5);for(i=0

3、;i10;i+)printf(“%d”,aa i);pfintf(“/n”);程序运行后的输出结果是(分数:1.00)A.1,2,3,4,5,6,7,8,9,10B.10,9,8:7,6,5,4,3,2,1C.1,2,3,8,7,6,5,4,9,10D.1,2,10,9,8,7,6,5,4,35.在面向对象中,一个对象请求另一个对象为其服务的方式是通过发送(分数:1.00)A.调用语句B.命令C.口令D.消息6.有以下程序main()int aa44=1,2,3,4,5,6,7,8,3,9,10,2,4,2,9,6;int i,s=0;for(i=0;i4;i+)s+=aai1;pdrintf

4、(“%d/n”,s);程序运行后的输出结果是(分数:1.00)A.11B.19C.13D.137.以下程序中函数 f 的功能是将 n 个字符串按由大到小的顺序进行排序。#includestringhvoid f(char p10,int n)char t20;int i,j;for(i=0;in-1;i+)for(j=i+1;jn;j+)if(strcmp(pi,pj0)strcpy(t,pi);strcpy(pi,pj);strcpy(pj,t);main()charp10=“abc”,“aabdfg”,“abbd”,“dcdbe”,”cd”;int i;f(p,5);printf(“%d/

5、n”,strlen(P0);程序运行后的输出结果是(分数:1.00)A.6B.4C.5D.38.有以下程序int fa(int x)return x*x;int fb(int x)return x*x*x;int f(int(*f1)(),int(*f2)(),int x)return f2(x)-f1(x);main()int i;i=f(fa,fb,2);pfintf(“%d/n”,i);程序运行后的输出结果是(分数:1.00)A.-4B.1C.4D.89.C 语言中,函数值类型的定义可以缺省,此时函数值的隐含类型是(分数:1.00)A.voidB.intC.floatD.double10

6、.以下叙述中正确的是(分数:1.00)A.构成 C 语言程序的基本单位是函数B.可以在一个函数中定义另一个函数C.main()函数必须放在其他函数之前D.所有被调用的函数一定要在调用之前进行定义11.已知 i、j、k 为 int 型变量,若从键盘输入:1,2,3回车,使 i 的值为 1、j 的值为 2、k 的值为3,以下选项中正确的输入语句是(分数:1.00)A.scanf(“%2d%2d%2d”,&i,&j,&k);B.scanf(“%d%d%d”,&i,&j,&k);C.scant(“%d,%d,%d”,&i,&j,&k);D.scanf(“i=%d,j=%d,k=%d”,&i,&j,&k

7、);12.已有定义:int x=3,y=4,z=5,则表达式!(x+y)+z-1&y+x/2 的值是(分数:1.00)A.6B.0C.2D.113.设有定义:long x=-123456L;,则以下能够正确输出变量 x 值的语句是(分数:1.00)A.printf(“x=%d/n”,x);B.printf(“x=%1d/n”,x);C.printf(“x=%8dL/n”,x);D.pfintf(“x=%LD/n”,x);14.在数据库设计的 4 个阶段;为关系模式选择存取方法应该在(分数:1.00)A.需求分析阶段B.概念设计阶段C.逻辑设计阶段D.物理设计阶段15.已知大写字母 A 的 AS

8、CII 码值是 65,小写字母 a 的 ASCII 码是 97,则用八进制表示的字符常量/101是(分数:1.00)A.字符 AB.字符 aC.字符 eD.非法的常量16.有一函数 (分数:1.00)A.B.C.D.17.若有以下程序:main()int k=2,i=2,m;m=(k+=i*=k);printf(“%d,%d/n”,m,i);执行后的输出结果是(分数:1.00)A.8,6B.8,3C.6,4D.7,418.有以下程序#includestringhmain()char *p=“abcde、Ofghjik/0”;printf(“%d/n”,strlen(p);程序运行后的输出结果(

9、分数:1.00)A.12B.15C.6D.519.若有以下说明和定义typedef int*INTEGER;INTEGER p,*q;以下叙述正确的是(分数:1.00)A.p 是 int 型变量B.p 是基类型为 int 的指针变量C.q 是基类型为 int 的指针变量D.程序中可用 INTEGER 代替 int 类型名20.设有如下定义:struct skint a;float b;data;int *p;若要使 p 指向 data 中的 a 域,正确的赋值语句是(分数:1.00)A.p=&a;B.p=dataa;C.p=&dataa;D.*p=dataa;21.以下程序的功能是:按顺序读入

10、 10 名学生 4 门课程的成绩,计算出每位学生的平均分并输出,程序如下:main()int n,k;float score,sum,ave;sum=0.0;for(n=1;n10;n+)for(k=1;k4;k+)scanf(“%f”,&score);sum+=score;ave=sum/4.0;printf(“NO%d:%f/n”,n,ave);上述程序运行后结果不正确,调试中发现有一条语句出现在程序中的位置不正确。这条语句是(分数:1.00)A.sum=0.0;B.sum+=score;C.ave=sum/4.0;D.printf(“NO%d:%f/n”,n,ave);22.下列不属于数

11、据库管理系统提供的数据语言的是(分数:1.00)A.数据定义语言B.数据查询语言C.数据操纵语言D.数据控制语言23.设 a 和 b 均为 double 型变量,且 a=5.5、b=2.5,则表达式(int)a+b/b 的值是(分数:1.00)A.6.500000B.6C.5.500000D.6.00000024.有以下程序main()char a=a,b,c,d,e,f,g,h,/0;int i,j;i=sized((分数:1.00)A.;j=stden(a);25.有以下程序void fun(char *c,int d)*c=*c+1;d=d+1;printf(“%c,%c”,*c,d);

12、main()char a=A,b=a;fun(&b,(分数:1.00)A.;printf(“%c,%c/n”,a,B.;程26.有以下程序#includestdiohmain()FILE*fp;int i=20,j=30,k,n;fp=fopen(“d1dat”,“w”);fprintf(fp,“%d/n”,i);fprintf(fp,“%d/n”,j);fclose(fp);fp=fopen(“d1.dat”,“r”);fscanf(fp,“%d%d”,&k,&n);printf(“%d%d/n”,k,n);fclose(fp);程序运行后的输出结果是(分数:1.00)A.20 30B.20

13、 50C.30 50D.30 2027.以下选项中合法的用户标识符是(分数:1.00)A.longB._2TestC.3DmaxD.dat28.有以下程序int a=3;main()int s=0;int a=5;s+=a+;8+=a+;printf(“%d/n”,s);程序运行后的输出结果是(分数:1.00)_29.以下叙述中错误的是(分数:1.00)A.二进制文件打开后可以先读文件的末尾,而顺序文件不可以B.在程序结束时,应当用 fclose 函数关闭已打开的文件C.在利用 fread 函数从二进制文件中读数据时,可以用数组名给数组中所有元素读入数据D.不可以用 FILE 定义指向二进制文

14、件的文件指针30.软件调试的目的是(分数:1.00)A.发现错误B.改正错误C.改善软件的性能D.挖掘软件的潜能31.设有下列二叉树:(分数:1.00)A.B.C.D.32.有以下程序main()unsigned char,a,b,c;a=0x3;b=a|0x8;c=b1;printf(“%d%d/n”,b,c);程序运行后的输出结果是(分数:1.00)A.-11 12B.-6 -13C.12 24D.11 2233.有以下程序#includestringhmain(int arge,char *argv)int i,len=0;for(i=1;iarge;i+)len+=strlen(arg

15、vi);printf(“%d/n”,len);程序编译连接后生成的可执行文件是 exlexe,若运行时输入带参数的命令行是:exl abcd efg 10回车则运行的结果是(分数:1.00)A.22B.17C.12D.934.有以下程序struct STUchar num10;float score3;main()stmct 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);程

16、序运行后的输出结果是(分数:1.00)_35.有以下程序main()int a=15,b=21,m=0;switch(a%3)casc 0:m+;break;case 1:m+;switch(b%2)default:m+;case 0:m+;break;printf(“%d/n”,m);程序运行后的输出结果是(分数:1.00)A.1B.2C.3D.436.与数学式子 (分数:1.00)A.B.C.D.37.有以下程序#includestdlibhmain()char*p,*q;p=(char *)malloc(sizeof(char)*20);q=p;scanf(“%s%s”,p,q);pri

17、ntf(“%s%s/n”,p,q);若从键盘输入:abc def回车,则输出结果是(分数:1.00)A.def defB.abc defC.abc dD.d d38.有以下程序#includestdlibhstruct NODEint num;stmct NODE*next;main()struct NODE*p,*q,*r;p=(struct NODE*)malloc(sizeof(struct NODE);q=(struct NODE*)malloc(sizeof(struct NODE);r=(struct NODE*)malloc(sizeof(struct NODE);p-num=1

18、0;q-num=20;r-num=30;p-next=q;q-next=r;printf(“%d/n”,p-num+q-next-num);程序运行后的输出结果是(分数:1.00)A.10B.20C.30D.4039.有以下程序段:int n=0,p;doscanf(“%d”,&p);n+;while(p!=12345&n3);此处 do-while 循环的结束条件是(分数:1.00)A.p 的值不等于 12345 并且 n 的值小于 3B.p 的值等于 12345 并且 n 的值大于等于 3C.p 的值不等于 12345 或者 n 的值小于 3D.p 的值等于 12345 或者 n 的值大于

19、等于 340.若有说明:int n=2,*p=&n,*q=p;,则以下非法的赋值语句是(分数:1.00)A.p=q;B.*p=*q;C.n=*q;D.p=n;41.以下非法的赋值语句是(分数:2.00)A.n=(i=2,+i);B.j+;C.+(i+1);D.x=j0;42.以下程序中函数 reverse 的功能是将 a 所指数组中的内容进行逆置。void reverse(int a,int n)int i,t;for(i=0;in/2;i+)t=ai;ai=an-1-i;an-1-i=t;main()int b10=1,2,3,4,5,6,7,8,9,10;int i,s=0;reverse

20、(b,8);for(i=6;i10;i+)s+=bi;printf(“%d/n”,s);程序运行后的输出结果是(分数:2.00)A.22B.10C.34D.3043.有以下程序int f(int n)if(n=1)return 1;else return f(n-1)+1;main()int i,j=0;for(i=1;i3;i+)j+=f(i);printf(“%d/n”,j);程序运行后的输出结果是(分数:2.00)A.4B.3C.2D.144.下列不属于软件工程三要素的是(分数:2.00)A.工具B.过程C.方法D.环境45.以下选项中合法的实型常数是(分数:2.00)A.5E2.0B.

21、E-3C.2E0D.1.3E46.源程序中应包含一些内部文档,以帮助阅读和理解程序,源程序的内部文档通常包括选择合适的标识符、注释和(分数:2.00)A.程序的视觉组织B.尽量不用或少用 GOTO 语句C.检查输入数据的有效性D.设计良好的输出报表47.有以下程序float fun(int x,int y)return(x+y);main()int a=2,b=5,c=8;printf(“%3Of/n”,fun(int)fun(a+c,b),a-c);程序运行后的输出结果是(分数:2.00)A.编译出错B.9C.21D.9.048.下列叙述中,正确的是(分数:2.00)A.线性表是线性结构B.

22、栈和队列是非线性结构C.线性链表是非线性结构D.二叉树是线性结构49.有以下程序void ss(char *s,char t)while(*s)if(*s=t)*s=t-a+A;s+;main()char strl100=“abcddfefdbd”,c=d;ss(strl,c);printf(“%s/n”,strl);程序运行后的输出结果是(分数:2.00)A.ABCDDEFEDBDB.abeDDfefDbDC.abcAMefAbAD.Abcddfefdbd50.下列不属于算法特性的是(分数:2.00)A.确定性B.可行性C.有输出D.无穷性二、填空题(总题数:17,分数:40.00)51.算

23、法执行过程中,所需要的基本运算次数称为算法的 【1】 。(分数:2.00)填空项 1:_52.在一棵二叉树上第 6 层的结点个数最多是 【2】 。(分数:2.00)填空项 1:_53.软件是程序、数据和 【3】 的集合。(分数:2.00)填空项 1:_54.实体联系模型是一种常用的高级概念数据模型,而 【4】 是实体 模型中的核心。(分数:2.00)填空项 1:_55.在数据库理论中,数据库总体逻辑结构的改变,如修改数据模式、增加新的数据类型、改变数据间联系等,不需要修改相应的应用程序,称为 【5】 。(分数:2.00)填空项 1:_56.设有定义:int n,*k=&n;以下语句将利用指针变

24、量 k 读写变量 n 中的内容,请将语句补充完整。scanf(“%d”, 【6】 );printf(“%d/n”, 【7】 );(分数:4.00)填空项 1:_57.以下程序运行后的输出结果是 【8】 。main()int x=10,y=20,t=0;if(x=y)t=x;x=Y;Y=t;printf(“%d,%d/n”,x,y);(分数:2.00)填空项 1:_58.以下程序运行后的输出结果是 【9】 。main()int x=15;while(x10&x50)x+;if(x/3)x+;break;else continue;printf(“%d/n”,x);(分数:2.00)填空项 1:_

25、59.有以下程序:#includestcliohmain()char c;while(c=getchar()!=?)putchar(-c);程序运行时,如果从键盘输入:Y?N?回车,则输出结果为 【10】 。(分数:2.00)填空项 1:_60.以下程序运行后的输出结果是 【11】 。void fun(int x,int y)x=x+y;Y=x-y;x=x-y;printf(“%d,%d”,x,y);main()int x=2,y=3;fun(x,y);printf(“%d,%d/n”,x,y);(分数:2.00)填空项 1:_61.以下函数的功能是计算 (分数:2.00)填空项 1:_62.

26、fun 函数的功能是:首先对 a 所指的 N 行 N 列的矩阵,找出各行中的最大的数,再求这 N 个最大值中的最小的那个数作为函数值返回。请填空。#includestdioh#define N 100int fun(int(*a)N)int row,col,max,min;for(row=0;rowN;row+)for(max=arow0,col=1;colN;col+)if( 【13】 )max=arowcol;if(row=0)min=max;else if( 【14】 )min=max;return min;(分数:4.00)填空项 1:_63.函数 sstrcmp()的功能是对两个字符

27、串进行比较。当 s 所指字符串和 t 所指字符串相等时,返回值为0;当 s 所指字符串大于 t 所指字符串时,返回值大于 0;当 s 所指字符串小于 t 所指字符串时,返回值小于 0 (功能等同于库函数 strcmp()。请填空。#includestdiohint sstrcmp(char *s,char *t)while(*s&*t&*s= 【15】 )s+;t+;return 【16】 ;(分数:4.00)填空项 1:_64.下面程序的运行结果是: 【17】 。#define N 10#define s(x)x*x#define f(x)(x*x)main()int i1,i2;i1=10

28、00/s(N);i2=1000/f(N);printf(“%d%d/n”,i1,i2);(分数:2.00)填空项 1:_65.下面程序的运行结果是: 【18】 。void swap(int *a,int*b)int *t;t=a;a=b;b=t;main()intx=3,y=5,*p=&x,*q=&y;swap(p,q);printf(“%d%d/n”,*p,*q);(分数:2.00)填空项 1:_66.下面程序的运行结果是: 【19】 。typedef union studentchar name10;long sno;char sex;float score4;STU;main()STU

29、a5;Printf(“%d/n”,sizeof(a);(分数:2.00)填空项 1:_67.若 fp 已正确定义为一个文件指针,d1dat 为二进制文件,请填空,以便为“读”而打开此文件:fp=fopen( 【20】 );(分数:2.00)填空项 1:_二级 C 语言笔试-118 答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:50,分数:60.00)1.程序中头文件 typelh 的内容是:#define N 5#define M1 N *3程序如下:#include“typelh”#define M2 N*2main()int i;i=M1+M2;Printf(“%

30、d/n”,0;程序编译后运行的输出结果是:(分数:1.00)A.10B.20C.25 D.30解析:解析编译预处理时,用“typel.h”中的内容替代命令#include“typelh”。表达式“i=M1+M2”经过宏替换为“i=5*3+5*2”即 i=25,所以最后输出的 i 的值为 25。2.以下选项中,与 k=n+完全等价的表达式是(分数:1.00)A.k=n,n=n+1 B.n=n+1,k=nC.k=+nD.k+=n+1解析:解析在本题中 k=n+,为后缀运算。根据其运算规则,首先 n 的值赋给 k 值,然后 n 的值再加1,即 k 的值没有改变。选项 A 中先给 k 赋值为 n,然后

31、 n 再加 1,k 值没有变化,所以这个表达式和本题中表达式等价;选项 B 中先 n 加 1,然后将 n 加 1 后的值赋给 k,k 变化了比原来的值大 1,所以这个表达式和本题中表达式不等价;选项 C 中先计算表达式左边的表达式+n 的值,执行 4+n 后,左边的表达式的值为 n 的值加 1,然后将 n+1 后的值赋给 k,所以这个表达式和本题中的表达式不等价;选项 D 中表达式展开为 k=k+(n+1)”,k 的值发生了变化,所以这个表达式和本题中的表达式不等价。3.利用 E-R 模型进行数据库的概念设计,可以分成三步:首先设计局部 E-R 模型,然后把各个局部 E-R 模型综合成一个全局

32、的模型,最后对全局 E-R 模型进行(),得到最终的 E-R 模型。(分数:1.00)A.简化B.结构化C.最小化D.优化 解析:解析在概念设计中按照模块的划分画出各个模块的 E-R 图,然后把这些图合成一张 E-R 图作为全局模型,最后应该对全局 E-R 图进行优化,看看是否有重复和不合理的地方。不能只进行简单的合并。4.以下程序中函数 sort 的功能是对 a 所指数组中的数据进行由大到小的排序void sort(int a,int n)int i,j,t;for(i=0;in-1;i+)for(j=i+1;jn;j+)if(aiaj) t=ai;ai=aj;aj=t;main()int

33、aa10=1,2,3,4,5,6,7,8,9,10,i;sort(&aa3,5);for(i=0;i10;i+)printf(“%d”,aa i);pfintf(“/n”);程序运行后的输出结果是(分数:1.00)A.1,2,3,4,5,6,7,8,9,10B.10,9,8:7,6,5,4,3,2,1C.1,2,3,8,7,6,5,4,9,10 D.1,2,10,9,8,7,6,5,4,3解析:解析本题中首先定义一个长度为 10 的一个整型数组,并初始化为“l,2, 3,4,5,6,7,8,9,10”,然后调用排序函数 sort(),通过分析不难看出,sort()函数是对具有 n 个元素的 a

34、 数组进行从大到小排序。由于函数的第一个参数是数组名,其对应的实参可以是函数名或地址。本题在调用该函数时,实参是&aa3的地址,即把 aa3的地址传给了形参数组名 a,函数也就是对 aa3开始的 5 个元素进行从大到小的排序,aa0、aa 1、aa2、aa8、aa9并没有变化。sort()执行完毕后,接着执行后面的 for 语句输出数组 aa 中各个元素的值,由于函数 sort()只是对 aa3开始的 5 个元素进行从大到小的排序,aa0、aa1、aa2、aa8、aa9并没有变化,所以输出为“1,2,3,8,7,6,5,4,9, 10”。5.在面向对象中,一个对象请求另一个对象为其服务的方式是

35、通过发送(分数:1.00)A.调用语句B.命令C.口令D.消息 解析:解析面向对象的世界是通过对象与对象间彼此的相互合作来推动的,一个对象与另一个对象通过发送消息彼此交换信息,请求对方执行某一处理或回答某一要求6.有以下程序main()int aa44=1,2,3,4,5,6,7,8,3,9,10,2,4,2,9,6;int i,s=0;for(i=0;i4;i+)s+=aai1;pdrintf(“%d/n”,s);程序运行后的输出结果是(分数:1.00)A.11B.19 C.13D.13解析:解析C 语言规定,数组元素的下标是从零开始的。本题首先定义了一个二维数组 aa 并按行赋初值,定义了

36、一个变量 s 用于求和。for 循环执行了 4 次分别把数组元素 aa01、aa11、aa21和 aa31的值(2,6,9,2)加到变量 s 中,s 的值为 19,所以最后输出的 s 的值为 19。7.以下程序中函数 f 的功能是将 n 个字符串按由大到小的顺序进行排序。#includestringhvoid f(char p10,int n)char t20;int i,j;for(i=0;in-1;i+)for(j=i+1;jn;j+)if(strcmp(pi,pj0)strcpy(t,pi);strcpy(pi,pj);strcpy(pj,t);main()charp10=“abc”,“

37、aabdfg”,“abbd”,“dcdbe”,”cd”;int i;f(p,5);printf(“%d/n”,strlen(P0);程序运行后的输出结果是(分数:1.00)A.6B.4C.5 D.3解析:解析函数 stremp(字符串 1,字符串 2)作用是将“字符串 1”和“字符串 2”进行比较,如果“字符串 1”“字符串 2”,返回一个大于 0 的整数值;如果“字符串 1”“字符串 2”,返回一个小于 0 的整数值;如果“字符串 1”=“字符串 2”,返回 0。函数 strepy(字符串数组名,字符串,整型表达式),整型表达式的作用是将“字符串”的前“整型表达式”个字符存入到指定的“字符数

38、组”中,若省略“整型表达式”,则将整个“字符串”存入“字符数组”中。函数 f()的功能是利用选择法把一个具有 n 行的二维数组中按行存放的 n 个字符串由大到小排序。在主函数中定义了一个二维字符数组 p 并给它按行赋初值,然后调用 f()函数,把它按行从大到小排列。字符串比较大小的标准是从第一个字符开始依次向右比较,遇到某一个字符大,该字符所在的字符串就是较大的字符串。由此可知最大的字符串为“dcdbe”,排序后存放在第一行,其首地址为 P0,在输出语句输出的 P0指向的字符串长度是 5。8.有以下程序int fa(int x)return x*x;int fb(int x)return x*

39、x*x;int f(int(*f1)(),int(*f2)(),int x)return f2(x)-f1(x);main()int i;i=f(fa,fb,2);pfintf(“%d/n”,i);程序运行后的输出结果是(分数:1.00)A.-4B.1C.4 D.8解析:解析函数 f()有 3 个形式参数 f1、f2 和 x,其中 f1、f2 是指向函数的指针变量。在 main()函数中执行了函数调用“f(fa,fb,2)”,从而使 f()的形式参数 f1 指向了 fa,形式参数 f2 指向了 fb,把实参 2 传给了形参变量 x。函数 f()中的 return 语句相当于“fb (2)-fa

40、(2)”(fb(2)的返回值为2*2*2=8,fa(2)返回值为 2*2=4)即(8-4),值为 4。函数 f()执行后把返回值 4 赋给了 i,输出 i 的值是4。9.C 语言中,函数值类型的定义可以缺省,此时函数值的隐含类型是(分数:1.00)A.voidB.int C.floatD.double解析:解析C 语言规定,在定义函数时,若其返回值类型为 int,则可以缺省。10.以下叙述中正确的是(分数:1.00)A.构成 C 语言程序的基本单位是函数 B.可以在一个函数中定义另一个函数C.main()函数必须放在其他函数之前D.所有被调用的函数一定要在调用之前进行定义解析:解析根据函数的定

41、义语法规定,在 C 语言程序中,不能嵌套定义,即不能在函数中再定义函数;main()函数在 C 语言程序中是必须的,但函数可以放在程序中的任意位置;当在所有函数的外部、被调用之前说明函数时,在函数说明后面的任何位置上都可以对函数进行调用。函数说明也可以放在调用函数的说明部分,如在 main 函数内部进行说明,则只能在 main 函数内部才能识别函数。11.已知 i、j、k 为 int 型变量,若从键盘输入:1,2,3回车,使 i 的值为 1、j 的值为 2、k 的值为3,以下选项中正确的输入语句是(分数:1.00)A.scanf(“%2d%2d%2d”,&i,&j,&k);B.scanf(“%

42、d%d%d”,&i,&j,&k);C.scant(“%d,%d,%d”,&i,&j,&k); D.scanf(“i=%d,j=%d,k=%d”,&i,&j,&k);解析:解析输入函数 scanf 使用该语句时,要求除格式控制符以外的字符都要原样输入,“,”为非格式符,要原样输入。选项 A,输入格式描述为“%2d%2d%2d”,输入要用空格隔开,不满足键盘输入1,2,3 的条件;选项 B 中,输入格式描述符为“%d %。 d %d”,输入也要用空格隔开;选项 D 中,输入格式描述符为“i=%d,j=%d,k=%d”,应该从键盘输入 i=1,j=2,k=3,才能使得 i,j,k 的值为1,2,3。

43、12.已有定义:int x=3,y=4,z=5,则表达式!(x+y)+z-1&y+x/2 的值是(分数:1.00)A.6B.0C.2D.1 解析:解析本题中,&左边的表达式!(x+y)为!(3+7),结果为假,即为 0。再加上 z,然后减 1,相当于 0+5-1。左边等于 4,&右边的表达式 y+z/2 相当于 4+5/2 为 6,所以整个表达式相当于 4&6 为真,即为 1。13.设有定义:long x=-123456L;,则以下能够正确输出变量 x 值的语句是(分数:1.00)A.printf(“x=%d/n”,x);B.printf(“x=%1d/n”,x); C.printf(“x=%

44、8dL/n”,x);D.pfintf(“x=%LD/n”,x);解析:解析x 为一个长整型的变量,而且是一个十进制的数,它的输出控制符是“%1d”;由于 C 语言中是区分大小写的,“1d”中的“d”不能为大写。14.在数据库设计的 4 个阶段;为关系模式选择存取方法应该在(分数:1.00)A.需求分析阶段B.概念设计阶段C.逻辑设计阶段D.物理设计阶段 解析:解析需求分析阶段是分析用户的需求,显然不屑于这个阶段。概念设计是将需求分析得到的用户需求抽象为信息结构及概念模型的过程,涉及不到数据的存取。逻辑设计是在概念设计的基础上将 E-R 图转换成数据库管理系统的逻辑数据模型表示的逻辑模式,也不涉

45、及存取问题。15.已知大写字母 A 的 ASCII 码值是 65,小写字母 a 的 ASCII 码是 97,则用八进制表示的字符常量/101是(分数:1.00)A.字符 A B.字符 aC.字符 eD.非法的常量解析:解析题目中的关键是八进制 101 的十进制是多少。八进制的 101 转换为十进制为 65,也就是字符 A 的 ASCII 码。16.有一函数 (分数:1.00)A.B.C. D.解析:解析首先检查 if 与 else 的配对,然后再分析各分支实现的功能。选项 A 描述的意思是:在x=0 情况下,则 y 为 1,否则,在 x=0 时,y 为 0,剩下的 x0 时,y 为 -1,满足

46、本题中函数的要求;选项 B 描述的意思时:初始化 y 的值为 0,在 x0 时,给 y 重新赋值为 1,否则,在 x0 时,给 y 重新赋值为-1,满足本题中函数的要求;选项 C 描述的意思是:在 x=0 情况下,如果 x0,则 y 为 1,否则即“x=0”时,y 为-1;剩下的 x0 时,y 为 0。可见答案 C 实现的结果不是给定的表达式。选项 D 中描述的意思是:在 x= 0 的情况下,如果 x=0,就给 y 赋值为 1,否则就给 y 赋值为 0,在不是 x=0 的其他情况下,就给 y 赋值为-1,满足本题中函数的要求。17.若有以下程序:main()int k=2,i=2,m;m=(k+=i*=k);printf(“%d,%d/n”,m,i);执行后的输出结果是(分数:1.00)A.8,6B.8,3C.6,4 D.7,4解析:解析在复合赋值语句中,应该由右向左依次赋值,在表达式中,右端由 i* =k 得 i=2*2 为4,k=k+i,即 k 值为 6,m=k 故 m=6。18.有以下程序#includestringhmain()char *p=“abcde、Ofghjik/0”;printf(“%d/n”,strlen(p);程序运行后的输出结果(分数:1.00)A.12B.15C.6D.5 解析:

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