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

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

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

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

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

    1、二级 C 语言笔试-79 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:70.00)1.下列叙述中正确的是_。(分数:2.00)A.程序设计就是编制程序B.程序的测试必须由程序员自己去完成C.程序经调试改错后还应进行再测试D.程序经调试改错后不必进行再测试2.执行以下程序后,test.txt 文件的内容是(若文件能正常打开)_。#includestdio.hmain()FILE*fp;char*s1=“Fortran“,*s2=“Basic“;if(fp=fopen(“test.txt“,“wb“)=NULL)printf(“Cant open test

    2、.txt file/n“);exit(1);fwrite(s1,7,1,fp);/*把从地址 s1 开始的 7 个字符写到 fp 所指文件中*/fseek(fp,0L,SEEK_SET);/*文件位置指针移到文件开头*/fwrite(s2,5,1,fp);fclose(fp);(分数:2.00)A.BasicanB.BasicFortranC.BasicD.FortranBasic3.以下叙述中错误的是_。(分数:2.00)A.C 语言程序中的#include 和#define 行均不是 C 语句B.除逗号运算符外,赋值运算符的优先级最低C.C 语言程序中,j+;是赋值语句D.C 语言程序中,

    3、+、-、*、/、%号是算术运算符,可用于整型和实型数的运算4.对于一个正常运行的 C 语言程序,以下叙述中正确的是_。(分数:2.00)A.程序的执行总是从 main 函数开始,在 main 函数结束B.程序的执行总是从程序的第一个函数开始,在 main 函数结束C.程序的执行总是从 main 函数开始,在程序的最后一个函数中结束D.程序的执行总是从程序的第一个函数开始,在程序的最后一个函数中结束5.以下四个程序中,完全正确的是_。(分数:2.00)A.#includestdio.hmain();/*programming*/printf(“programming! /n“);B.#inclu

    4、destdio.hmain()/*/programming/*/printf(“programming! /n“);C.#includestdio.hmain()/*/*programming*/*/printf(“programming! /n“);D.includestdio.hmain()/*programming*/printf(“programming! /n“);6.下列叙述中正确的是_。(分数:2.00)A.软件交付使用后还需要进行维护B.软件一旦交付使用就不需要再进行维护C.软件交付使用后其生命周期就结束D.软件维护是指修复程序中被破坏的指令7.以下选项中,不能作为合法常量的是

    5、_。(分数:2.00)A.1.234e04B.1.234e0.4C.1.234e+4D.1.234e08.已定义以下函数:int fun(int*p)return *p;)fun 函数返回值是_。(分数:2.00)A.不确定的值B.一个整数C.形参 p 中存放的值D.形参 p 的地址值9.以下不构成无限循环的语句或者语句组是_。(分数:2.00)A.n=0;do+n;while(n=0);B.n=0;while(1)n+;C.n=10;while(n);n-;D.for(n=0,i=1;;i+)n+=i;10.下列叙述中正确的是_。(分数:2.00)A.一个算法的空间复杂度大,则其时间复杂度也

    6、必定大B.一个算法的空间复杂度大,则其时间复杂度必定小C.一个算法的时间复杂度大,则其空间复杂度必定小D.上述三种说法都不对11.下列对队列的叙述正确的是_。(分数:1.00)A.队列属于非线性表B.队列按“先进后出”原则组织数据C.队列在队尾删除数据D.队列按“先进先出”原则组织数据12.有以下程序:int fun(int x,int n)static int sum=0,I;for(i=0;in;i+)sum+=xi;return sum;main()int a=1,2,3,4,5,b=6,7,8,9,s=0;s=fun(a,5)+fun(b,4);printf(“%d/n“,s);程序执

    7、行后的输出结果是_。(分数:1.00)A.45B.50C.60D.5513.下列叙述中,不符合良好程序设计风格要求的是_。(分数:1.00)A.程序的效率第一,清晰第二B.程序的可读性好C.程序中要有必要的注释D.输入数据前要有提示信息14.程序中若有如下说明和定义语句:char fun(char*);main()char*s=“one“,a5=0,(*f1)()=fun,ch;以下选项中对函数 fun 的正确凋用语句是_。(分数:1.00)A.(*f1)(a);B.*f1(*s);C.fun(a);D.ch=*f1(s);15.有以下程序:void fun1(char*p)char*q;q=

    8、p;while(*q!=/0)(*q)+;q+;main()char a=“Program“),*p;p=a3;fun1(p);printf(“%s/n“,(分数:1.00)A.;程16.有以下程序:void sum(int a)a0=a-1+a1;main()int a10=1,2,3,4,5,6,7,8,9,10);sum(a2);printf(“%d/n“,a2);程序运行后的输出结果是_。(分数:1.00)A.6B.7C.5D.817.若有定义:int a23;,以下选项中对 a 数组元素正确引用的是_。(分数:1.00)A.a2! 1B.a23C.a03D.a12! 118.在 E-

    9、R 图中,用来表示实体之间联系的图形是_。(分数:1.00)A.矩形B.椭圆形C.菱形D.平行四边形19.有以下程序段int j; float y; char name50;scanf(“%2d%f%s“,j,y,name);当执行上述程序段,从键盘上输入 55566 777abc 后,y 的值为_。(分数:1.00)A.55566.0B.566.0C.7777.0D.566777.020.当用户要求输入的字符串中含有空格时,应使用的输入函数是_。(分数:1.00)A.scanf()B.getchar()C.gets()D.getc()21.有以下程序:#includestdio.h#incl

    10、udestring.hvoid fun(char s10,int n)char t;int i,j;for(i=0;in-1;i+)for(j=i+1;jn;j+)/*比较字符串的首字符大小,并交换字符串的首字符*/if(si0sj0) t=si0;si0=sj0;sj0=t;main()char s510=“bcc“,“bbcc“,“xy“,“aaaacc“,“aabcc“;fun(ss,5);printf(“%s, %s/n“,ss0,ss4);程序的运行结果是_。(分数:2.00)A.xy,aaaaccB.aaaacc,xyC.xcc,aabccD.acc,xabcc22.设已有定义:f

    11、loat x;则以下对指针变量 p 进行定义且赋初值的语句中正确的是_。(分数:2.00)A.float*p=1024;B.int*p=(float)x;C.float p=x;D.float*p=x;23.有以下程序:main()int i=1,j=2,k=3;if(i+=1(+j=3|k+=3)printf(“%d%d%d/n“,i,j,k);程序运行后的输出结果是_。(分数:2.00)A.1 2 3B.2 3 4C.2 2 3D.2 3 324.有以下程序:main()int k=5,n=0;while(k0)switch(k)(default:break;case 1:n+=k;cas

    12、e 2:case 3:n+=k;k-;printf(“%d/n“,n);程序运行后的输出结果是_。(分数:2.00)A.0B.4C.6D.725.有以下程序:struct Sint n;int a20;);void f(int*a,int n)int i;for(i=0;in-1;i+)ai+=i;main()int i;struct S s(10,2,3,1,6,8,7,5,4,10,9;if(s.a,s.n);for(i=0;is.n;i+)printf(“%d“, s.ai);程序运行后的输出结果是_。(分数:2.00)A.2,4,39,12,12,11,11,18,9B.3,4,2,7

    13、,9,8,6,5,11,10C.2,3,1,6,8,7,5,4,10,9D.1,2,3,6,8,7,5,4,10,926.有以下程序:void f(int b)int i;for(i=2;i6;i+)bi*=2;main()int a10=1,2,3,4,5,6,7,8,9,10),i;f((分数:2.00)A.;for(i=0;i10;i+)printf(“%d,“,ai);程序运行后的输出结果27.当变量 c 的值不为 2、4、6 时,值也为“真”的表达式是_。(分数:2.00)A.(c=2)|(c=4)|(c=6)B.(c=2c=6)|(c!=3)|(c!=5)C.(c=2c=6)!(c

    14、%2)D.(c=2c=6)(c%2!=1)28.下列叙述中错误的是_。(分数:2.00)A.在数据库系统中,数据的物理结构必须与逻辑结构一致B.数据库技术的根木目标是要解决数据的共享问题C.数据库设计是指在已有数据库管理系统的基础上建立数据库D.数据库系统需要操作系统的支持29.以下与函数 fseek(fp,0L,SEEK_SET)有相同作用的是_。(分数:2.00)A.feef(fp)B.tell(fp)C.fgetc(fp)D.rewind(fp)30.数字字符 0 的 ASCII 值为 48,若有以下程序:main()char a=1,b=2;printf(“%c,“,b+);print

    15、f(“%d/n“,b-(分数:2.00)A.;31.以下叙述中正确的是_。(分数:2.00)A.预处理命令行必须位于源文件的开头B.在源文件的一行上可以有多条预处理命令C.宏名必须用大写字母表示D.宏替换不占用程序的运行时间32.以下不能正确计算代数式 (分数:2.00)A.B.C.D.33.有以下程序:#includestdio.hint f(int x)int y;if(x=0|x=1)return(3);y=x*x-f(x-2);return y;main()int z;z=f(3);printf(“%d/n“,z);程序的运行结果是_。(分数:2.00)A.0B.9C.6D.834.若

    16、要求从键盘读入含有空格字符的字符串,应使用函数_。(分数:2.00)A.getc()B.gets()C.getchar()D.scanf()35.对于长度为 n 的线性表,在最坏的情况下,下列各排序法所对应的比较次数中正确的是_。(分数:2.00)A.冒泡排序为 n/2B.冒泡排序为 nC.快速排序为 nD.快速排序为 n(n-1)/236.数据库设计的根本目标是要解决_。(分数:2.00)A.数据共享问题B.数据安全问题C.大量数据存储问题D.简化数据维护37.下列选项中不属于软件生命周期开发阶段任务的是_。(分数:2.00)A.软件测试B.概要设计C.软件维护D.详细设计38.有以下结构体

    17、说明和变量定义,如图所示,指针 p、q、r 分别指向此链表中的三个连续结点。struct nodeint data; struct node*next;)*p,*q,*r;现要将 q 所指结点从链表中删除,同时要保持链表的连续,(分数:2.00)A.B.C.D.39.有以下程序:main()char s=“159“,*p;p=s;printf(“%c“,*p+);printf(“%c“,*P+);程序运行后的输出结果是_。(分数:2.00)A.15B.16C.12D.5940.以下叙述中错误的是_。(分数:2.00)A.算法正确的程序最终一定会结束B.算法正确的程序可以有零个输出C.算法正确的

    18、程序可以有零个输入D.算法正确的程序对于相同的输入一定有相同的结果二、填空题(总题数:15,分数:30.00)41.深度为 5 的满二叉树有 1 个叶子结点。(分数:2.00)填空项 1:_42.数据结构分为线性数据结构和非线性数据结构,带链的队列属于 1。(分数:2.00)填空项 1:_43.软件测试分为白箱(盒)测试和黑箱(盒)测试,等价类划分法属于 1 测试。(分数:2.00)填空项 1:_44.数据管理技术发展过程经过人工管理、文件系统和数据库系统三个阶段,其中数据独立性最高的阶段是 1。(分数:2.00)填空项 1:_45.数据独立性分为逻辑独立性与物理独立性。当数据的存储结构改变时

    19、,其逻辑结构可以不变,因此,基于逻辑结构的应用程序不必修改,称为 1。(分数:2.00)填空项 1:_46.以下程序运行后的输出结果是_。main()int m=011,n=11;printf(“%d%d/n“,+m,n+);(分数:2.00)填空项 1:_47.已定义 char ch=“$“;int i=1,j;执行 j=!chi+以后,i 的值为 1。(分数:2.00)填空项 1:_48.以下程序用于判断 a、b、c 能否构成三角形,若能,输出 YES,否则输出 NO。当给 a、b、c 输入三角形三条边长时,确定 a、b、c 能构成三角形的条件是需同时满足三个条件:a+bc,a+cb,b+

    20、ca。请填空。main()float a,b,c;scanf(“%f%f%f“,a,b,c);if(_)printf(“YES/n“);/*a、b、c 能构成三角形*/else printf(“NO/n“);/*a、b、c 不能构成三角形*/(分数:2.00)填空项 1:_49.以下程序的功能是:输出 100 以内(不含 100)能被 3 整除且个位数为 6 的所有整数,请填空。main()(int i,j;for(i=0;i10;i+)j=i*10+6;if(_)continue;printf(“%d“,j);(分数:2.00)填空项 1:_50.已知字符 A 的 ASCII 代码值为 65

    21、,以下程序运行时若从键盘输入:B33回车. 则输出结果是_。#includemain()char a,b;a=getchar();scanf(“%d“,b);a=a-A+0;b=b*2;printf(“%c%c/n“,a,b);(分数:2.00)填空项 1:_51.已有定义:double*p;,请写出完整的语句,利用 malloc 函数使 p 指向一个双精度型的动态存储单元 1。(分数:2.00)填空项 1:_52.以下程序中,fun 函数的功能是求 3 行 4 列二维数组每行元素中的最大值,请填空。void fun(int,int,int(*)4,int*);main()int a34=12

    22、,41,36,28,19,33,15,27),3,27,19,1,b3,i;fun(3,4,a,b);for(i=0;i3;i+)printf(“%4d“,bi);printf(“/n“);void fun(int m,int n,int ar4,int*bar)int i,j,x;for(i=0;im;i+)x=ari0;for(j=0;jn;j+)if(xarij)x=arij;_=x;(分数:2.00)填空项 1:_53.以下程序运行后的输出结果是_。#includestring.hvoid fun(char*s,int p,int k)int i;for(i=p;ik-1;i+)si=

    23、si+2;main()char s=“abcdefg“;fun(s,3,strlen(s);puts(s);(分数:2.00)填空项 1:_54.以下程序运行后的输出结果是_。fun(int a)int b=0;static int c=3;b+;c+;return(a+b+c);main()int i,a=5;for(i=0;i3;i+)printf(“%d%d“,i,fun(a);printf(“/n“);(分数:2.00)填空项 1:_55.设有定义:FILE*fw;,请将以下打开文件的语句补充完整,以便可以向文本文件 read me.txt 的最后续写内容。fw=fopen(“read

    24、me.txt“,“_“)(分数:2.00)填空项 1:_二级 C 语言笔试-79 答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:70.00)1.下列叙述中正确的是_。(分数:2.00)A.程序设计就是编制程序B.程序的测试必须由程序员自己去完成C.程序经调试改错后还应进行再测试 D.程序经调试改错后不必进行再测试解析:解析 软件设计的基本目标是用比较抽象概括的方式确定目标系统如何完成预定的任务,软件设计是确定系统的物理模型。软件测试即使用人工或自动手段来运行或测定某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。软件调

    25、试后要进行回归测试,防止引进新的错误。2.执行以下程序后,test.txt 文件的内容是(若文件能正常打开)_。#includestdio.hmain()FILE*fp;char*s1=“Fortran“,*s2=“Basic“;if(fp=fopen(“test.txt“,“wb“)=NULL)printf(“Cant open test.txt file/n“);exit(1);fwrite(s1,7,1,fp);/*把从地址 s1 开始的 7 个字符写到 fp 所指文件中*/fseek(fp,0L,SEEK_SET);/*文件位置指针移到文件开头*/fwrite(s2,5,1,fp);f

    26、close(fp);(分数:2.00)A.Basican B.BasicFortranC.BasicD.FortranBasic解析:解析 fseek 函数用来移动文件位置指针到指定位置,接着的读或写操作将从此位置开始,函数的调用形式为 fseek(pf,offset,origin),pf 为文件指针,offset 是以字节为单位的位移量,origin是起始点,SEEK_SET 表示文件开始。故第二次写操作 fwrite(s2,5,1,fp)将覆盖 fortran 的前 5 个字符。3.以下叙述中错误的是_。(分数:2.00)A.C 语言程序中的#include 和#define 行均不是 C

    27、 语句B.除逗号运算符外,赋值运算符的优先级最低C.C 语言程序中,j+;是赋值语句D.C 语言程序中,+、-、*、/、%号是算术运算符,可用于整型和实型数的运算 解析:解析 在 C 程序中,以#开头的行都称为“编译预处理”行,它不是 C 语言本身的组成成分,不能对它们进行直接编译;在运算符优先级表中,逗号运算符的优先级最低,赋值运算符其次;自加运算表达式 j+等价于赋值语句 j=j+1;求余运算符%仅用于整型变量。故选项 D 错误。4.对于一个正常运行的 C 语言程序,以下叙述中正确的是_。(分数:2.00)A.程序的执行总是从 main 函数开始,在 main 函数结束 B.程序的执行总是

    28、从程序的第一个函数开始,在 main 函数结束C.程序的执行总是从 main 函数开始,在程序的最后一个函数中结束D.程序的执行总是从程序的第一个函数开始,在程序的最后一个函数中结束解析:解析 在 C 语言中,所有函数的定义,包括主函数 main 在内,都是平行的。也就是说,在一个函数的函数体内,不能再定义另一个函数,即不能嵌套定义。但是函数之间允许互相调用,也允许嵌套调用,习惯上把调用者称为主函数。调用函数还可以调用自己,称为递归调用。main 函数是主函数,它可以调用其他函数,而不允许被其他函数调用。因此,C 程序的执行总是从 main 函数开始,完成对其他函数的调用后返回到 main 函

    29、数,最后由 main 函数结束整个程序。一个 C 源程序必须有且只能有一个 main 函数。5.以下四个程序中,完全正确的是_。(分数:2.00)A.#includestdio.hmain();/*programming*/printf(“programming! /n“);B.#includestdio.hmain()/*/programming/*/printf(“programming! /n“); C.#includestdio.hmain()/*/*programming*/*/printf(“programming! /n“);D.includestdio.hmain()/*pro

    30、gramming*/printf(“programming! /n“);解析:解析 选项 A 中的 main()后而不能直接用分号。选项 C 中的注释符使且不正确,编译器会把从第一个“/*到第一个*/”之间的当作注释,最后一个“*/”会被作为程序代码去编译。选项 D 中的 include前要加上#表示是预定义语句。6.下列叙述中正确的是_。(分数:2.00)A.软件交付使用后还需要进行维护 B.软件一旦交付使用就不需要再进行维护C.软件交付使用后其生命周期就结束D.软件维护是指修复程序中被破坏的指令解析:解析 软件生命周期分为软件定义、软件开发及软件运行维护三个阶段,软件交付使用后还需要进行维

    31、护。软件运行维护阶段:软件投入运行,并在使用中不断地维护,进行必要的扩充和删改。7.以下选项中,不能作为合法常量的是_。(分数:2.00)A.1.234e04B.1.234e0.4 C.1.234e+4D.1.234e0解析:解析 C 语言实数常数的科学表示法规定格式为:“实数 e 整数”或“实数 E 整数”,其中幂是整数,不能写成实数。选项 A、C、D 都是合法的常数。选项 B 的实数常数中幂为 0.4,不是整数,因此是不合法的常数。8.已定义以下函数:int fun(int*p)return *p;)fun 函数返回值是_。(分数:2.00)A.不确定的值B.一个整数 C.形参 p 中存放

    32、的值D.形参 p 的地址值解析:解析 p 中存放的是地址值,但是*p 间接引用了 p 指向的整数值。因此返回一个整数。9.以下不构成无限循环的语句或者语句组是_。(分数:2.00)A.n=0;do+n;while(n=0); B.n=0;while(1)n+;C.n=10;while(n);n-;D.for(n=0,i=1;;i+)n+=i;解析:解析 本题主要考查各种循环语句的掌握情况。选项 A 中为 do-while 循环语句,首先执行 do 后面的语句+n;得 n=1,while 条件表达式为假,退出循环。选项 B 中,while 条件表达式的值始终为 1,条件为真,构成无限循环。选项

    33、C 中 while(n);语句循环体为空,n 的值在循环中一直保持不变,构成无限循环。选项 D 中,i=1,for 语句中条件判断语句为空,永远为真,构成无限循环。10.下列叙述中正确的是_。(分数:2.00)A.一个算法的空间复杂度大,则其时间复杂度也必定大B.一个算法的空间复杂度大,则其时间复杂度必定小C.一个算法的时间复杂度大,则其空间复杂度必定小D.上述三种说法都不对 解析:解析 算法的复杂度主要包括算法的时间复杂度和算法的空间复杂度。所谓算法的时间复杂度是指执行算法所需要的计算工作量;算法的空间复杂度一般是指执行这个算法所需要的内存空间。算法的时间复杂度和空间复杂度没有直接关系。11

    34、.下列对队列的叙述正确的是_。(分数:1.00)A.队列属于非线性表B.队列按“先进后出”原则组织数据C.队列在队尾删除数据D.队列按“先进先出”原则组织数据 解析:解析 队列是“先进先出”的数据结构,栈是“先进后出”的数据结构,它们都是特殊的线性表。队列在队头删除数据。12.有以下程序:int fun(int x,int n)static int sum=0,I;for(i=0;in;i+)sum+=xi;return sum;main()int a=1,2,3,4,5,b=6,7,8,9,s=0;s=fun(a,5)+fun(b,4);printf(“%d/n“,s);程序执行后的输出结果

    35、是_。(分数:1.00)A.45B.50C.60 D.55解析:解析 fun 函数中用 static 声明的局部变量 sum 的值在函数调用结束后不消失而保留原值,即占用的存储单元不释放,在下一次调用该函数时,该变量已有值,就是上一次函数调用结束时的值。13.下列叙述中,不符合良好程序设计风格要求的是_。(分数:1.00)A.程序的效率第一,清晰第二 B.程序的可读性好C.程序中要有必要的注释D.输入数据前要有提示信息解析:解析 程序设计的风格主要强调:清晰第一,效率第二。14.程序中若有如下说明和定义语句:char fun(char*);main()char*s=“one“,a5=0,(*f

    36、1)()=fun,ch;以下选项中对函数 fun 的正确凋用语句是_。(分数:1.00)A.(*f1)(a); B.*f1(*s);C.fun(a);D.ch=*f1(s);解析:解析 本题的考点是 C 语言的指向函数的指针。函数指针 f1 指向了函数 fun,fun 的形参类型是字符指针。调用语句:“f1(s);f1(a);f1(ch);”或“(*f1)(s);(*f1)(a);(*f1)(ch)”都是正确的。因此正确选项是 A。其余选项的调用都是错误的。15.有以下程序:void fun1(char*p)char*q;q=p;while(*q!=/0)(*q)+;q+;main()char

    37、 a=“Program“),*p;p=a3;fun1(p);printf(“%s/n“,(分数:1.00)A.;程 解析:解析 函数 fun1()实现的功能为将实参 p 所指的字符串顺序按位加 1,而实参 p 通过“p=a3;”指向字符串数组 a中的 gram,故输出结果为 Prohsbn。16.有以下程序:void sum(int a)a0=a-1+a1;main()int a10=1,2,3,4,5,6,7,8,9,10);sum(a2);printf(“%d/n“,a2);程序运行后的输出结果是_。(分数:1.00)A.6 B.7C.5D.8解析:解析 在主函数 main()中,语句“s

    38、um(a2);”把数组元素 a0的地址传递给了 sun 函数的形参 a,使得 sum 函数中的“(a+0)”为主函数中 a2的地址,所以 a-1的值为主函数中 a1的值;a1的值为主函数中 a3的值,故函数 sum 中 a0=2+4=6,由于此函数中的 a 是指向主函数中的 a2,所以a2的值为 6。17.若有定义:int a23;,以下选项中对 a 数组元素正确引用的是_。(分数:1.00)A.a2! 1B.a23C.a03D.a12! 1 解析:解析 a 是一个 2 行 3 列的二维数组,行下标和列下标都是从 0 开始的,数组中的元素为 a00、a01、a02、a10、a11、a12,行下

    39、标最大值为 1,列下标最大值为 2,冈此选项A、B、C 都是错误的引用。计算选项 D 中数组元素的下标后得 a00,为正确的引用。18.在 E-R 图中,用来表示实体之间联系的图形是_。(分数:1.00)A.矩形B.椭圆形C.菱形 D.平行四边形解析:解析 E-R 模型的图示法:用矩形表示实体集;用椭圆形表示属性;用菱形表示联系。19.有以下程序段int j; float y; char name50;scanf(“%2d%f%s“,j,y,name);当执行上述程序段,从键盘上输入 55566 777abc 后,y 的值为_。(分数:1.00)A.55566.0B.566.0 C.7777.

    40、0D.566777.0解析:解析 本题考查的重点是 scanf 函数的用法。程序中第一个格式化字符串“%2d”表示读入一个两位的整数,因此就将键盘输入的前两位数赋到第一个变量 j 中,即 j 的值为 55;后一个格式化字符串为“%f”,再将后续读入的数字赋给浮点变量 y,因此 y 的值为 566.0,即到读到空格时结束。20.当用户要求输入的字符串中含有空格时,应使用的输入函数是_。(分数:1.00)A.scanf()B.getchar()C.gets() D.getc()解析:解析 本题考查的重点是输入函数的异同。scanf()的作用是格式化输入,getchar()的作用是从键盘读字符,等待

    41、回车,getc()是从输入流中返回当前文件位置的下一个字符。而要求输入的字符串中含有空格时,应当使用 gets(),因此,选项 C 是正确的。21.有以下程序:#includestdio.h#includestring.hvoid fun(char s10,int n)char t;int i,j;for(i=0;in-1;i+)for(j=i+1;jn;j+)/*比较字符串的首字符大小,并交换字符串的首字符*/if(si0sj0) t=si0;si0=sj0;sj0=t;main()char s510=“bcc“,“bbcc“,“xy“,“aaaacc“,“aabcc“;fun(ss,5);

    42、printf(“%s, %s/n“,ss0,ss4);程序的运行结果是_。(分数:2.00)A.xy,aaaaccB.aaaacc,xyC.xcc,aabccD.acc,xabcc 解析:解析 本题考查的重点是二维数组的存储。函数 fun()只是对 5 个字符串的首字母进行排序,排序后为“acc“, “abcc“, “by“, “baaacc“, “xabcc“),因此,输出为第 1 个和第 5 个字符串,选项 D 是正确的。22.设已有定义:float x;则以下对指针变量 p 进行定义且赋初值的语句中正确的是_。(分数:2.00)A.float*p=1024;B.int*p=(float)

    43、x;C.float p=x;D.float*p=x; 解析:解析 指针指向的是变量的地址而不是常量,所以选项 A 是错误的;选项 B 同样是将 float 类型变量的值赋给指针而不是地址,所以选项 B 也是错误的。定义指针变量前面必须有星号(*),如果省略了就变成了把 p 定义为实型变量,所以选项 C 不正确。23.有以下程序:main()int i=1,j=2,k=3;if(i+=1(+j=3|k+=3)printf(“%d%d%d/n“,i,j,k);程序运行后的输出结果是_。(分数:2.00)A.1 2 3B.2 3 4C.2 2 3D.2 3 3 解析:解析 本题的考点是关于 C 语言

    44、的逻辑表达式的计算规则。对于逻辑表达式“i+=1(+j=3|k+=3)”,首先判断“i+=1”,由于 i 初值为 1,“i+=1”为真,同时 i 加1 值为 2。由于第一项为真,对于“”运算符,结果取决于后一项“(+j=3|k+=3)”。而逻辑表达式“(+j=3|k+=3)”计算时,首先判断“+j=3”,由于 j 初值为 2,+j 后 j 值为3,“+j=3”为真,对于“|”运算符不需要判断后一项表达式的结果就可以断定此逻辑表达式结果为真,因此“k+=3”并没有进行判断,k+也未执行,k 仍是初值 3,输出结果应该是 2 3 3。正确选项是D。24.有以下程序:main()int k=5,n=

    45、0;while(k0)switch(k)(default:break;case 1:n+=k;case 2:case 3:n+=k;k-;printf(“%d/n“,n);程序运行后的输出结果是_。(分数:2.00)A.0B.4C.6D.7 解析:解析 在 switch 语句中,若 case 语句后没有 break 语句,则执行完本层 case 后会继续执行后面case 中的操作。k 的初值为 5,while 条件成立,进入 switch(5),执行 default 语句,退出 switch,执行 k-后得 4,再进入 whik 循环,执行 switch(4),退出 switch,再执行 k-

    46、后得 3,继续 while 循环,执行 switch(3),n=n+k=3,再执行 k-后得 2,进入 whik 循环,执行 case 2,再执行 n=n+k=5,然后执行 k-后得 1,最后一次进入 while 循环,执行 case 1,n=n+k=6,然后继续执行 case 2 和 case 3 后的语句,n=n+k=7,且执行 k-后得 0,此时 while 条件不满足,退出循环,输出 n 的值为 7。25.有以下程序:struct Sint n;int a20;);void f(int*a,int n)int i;for(i=0;in-1;i+)ai+=i;main()int i;struct S s(10,2,3,1,6,8,7,5


    注意事项

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




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

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

    收起
    展开