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

    【计算机类职业资格】二级C语言真题(1)及答案解析.doc

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

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

    【计算机类职业资格】二级C语言真题(1)及答案解析.doc

    1、二级 C 语言真题(1)及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:40.00)1.下列叙述中正确的是_。(分数:1.00)A.程序执行的效率与数据的存储结构密切相关B.程序执行的效率只取决于程序的控制结构C.程序执行的效率只取决于所处理的数据量D.以上说法均错误2.下列与队列结构有关联的是_。(分数:1.00)A.函数的递归调用B.数组元素的引用C.多重循环的执行D.先到先服务的作业调度3.对下列二叉树 (分数:1.00)A.DYBEAFCZXB.YDEBFZXCAC.ABDYECFXZD.ABCDEFXYZ4.一个栈的初始状态为空,现将元素 1,2

    2、,3,A,B,C 依次入栈,然后再依次出栈,则元素出栈的顺序是_。(分数:1.00)A.1,2,3,A,B,CB.C,B,A,1,2,3C.C,B,A,3,2,1D.1,2,3,C,B,A5.下面属于白盒测试方法的是_。(分数:1.00)A.等价类划分法B.逻辑覆盖C.边界值分析法D.错误推测法6.下面对对象概念描述正确的是_。(分数:1.00)A.对象间的通信靠消息传递B.对象是名字和方法的封装体C.任何对象必须有继承性D.对象的多态性是指一个对象有多个操作7.软件设计中模块划分应遵循的准则是_。(分数:1.00)A.低内聚低耦合B.高耦合高内聚C.高内聚低耦合D.以上说法均错误8.下面描述

    3、中不属于数据库系统特点的是_。(分数:1.00)A.数据共享B.数据完整性C.数据冗余度高D.数据独立性高9.数据库设计过程不包括_。(分数:1.00)A.概念设计B.逻辑设计C.物理设计D.算法设计10.有三个关系 R、S 和 T 如下: R A B C a 1 2 b 2 1 c 3 1 S A D c 4 a 5 T A B C D c 3 1 4 a 1 2 5 则由关系 R 和 S 得到关系 T 的操作是_。(分数:1.00)A.自然连接B.交C.投影D.并11.以下叙述中正确的是_。(分数:1.00)A.程序必须包含所有三种基本结构才能称为一种算法B.我们所写的每条 C 语句,经过

    4、编译最终都将转换成二进制的机器指令C.如果算法非常复杂,则需要使用三种基本结构之外的语句结构才能准确表达D.只有简单算法才能在有限的操作步骤之后结束12.以下叙述中正确的是_。(分数:1.00)A.在算法设计时,可以把复杂任务分解成一些简单的子任务B.在 C 语言程序设计中,所有函数必须保存在一个源文件中C.只要包含了三种基本结构的算法就是结构化程序D.结构化程序必须包含所有的三种基本结构,缺一不可13.以下叙述中正确的是_。(分数:1.00)A.只能在函数体内定义变量,其他地方不允许定义变量B.常量的类型不能从字面形式上区分,需要根据类型名来确定C.预定义的标识符是 C 语言关键字的一种,不

    5、能另作它用D.整型常量和实型常量都是数值型常量14.以下叙述中正确的是_。(分数:1.00)A.在 C 程序中的八进制和十六进制可以是浮点数B.整型变量可以分为 int 型、short 型、long 型和 unsigned 型四种C.八进制数的开头要使用英文字母 o,否则不能与十进制区分开D.英文大写字母 X 和英文小写字母 x 都可以作为二进制数字的开头字符15.以下叙述中正确的是_。(分数:1.00)A.在 scanf 函数中的格式控制字符串是为了输入数据用的,不会输出到屏幕上B.在使用 scanf 函数输入整数或实数时,输入数据之间只能用空格来分隔C.在 printf 函数中,各个输出项

    6、只能是变量D.使用 printf 函数无法输出百分号“%”16.以下叙述中正确的是_。(分数:1.00)A.在 scanf 函数的格式串中,必须有与输入项一一对应的格式转换说明符B.只能在 printf 函数中指定输入数据的宽度,而不能在 scanf 函数中指定输入数据的宽度C.scanf 函数中的字符串,是提示程序员的,输入数据时不必管它D.复合语句也被称为语句块,它至少要包含两条语句17.以下叙述中正确的是_。(分数:1.00)A.逻辑“或”(即运算符“|”)的运算级别比算术运算符要高B.C 语言的关系表达式:0x10 完全等价于:(0x) 则以下叙述中正确的是_。(分数:1.00)A.语

    7、句 a=是非法的B.表达式 a+1 是非法的C.三个表达式 a1、*(a+1)、* for(i=0;i4;i+) ai=*p+; printf(“%d/n“,a2); 程序的输出结果是_。(分数:1.00)A.2B.8C.4D.628.以下叙述中正确的是_。(分数:1.00)A.语句“int a43=1,2,4,5;”是错误的初始化形式B.语句“int a43=1,2,4,5;”是错误的初始化形式C.语句“int a3=1,2,4,5;”是错误的初始化形式D.在逻辑上,可以把二维数组看成是一个具有行和列的表格或矩阵29.以下叙述中正确的是_。(分数:1.00)A.字符串常量“Hello”会被隐

    8、含处理成一个无名字符型数组,它有 5 个元素B.不能用字符串常量对字符数组名进行整体赋值操作C.char str7=“string!“; 在语法上是合法的,运行也是安全的D.char *str; str=“Hello“;与 char str; str=“Hello“;效果是一样的30.以下叙述中正确的是_。(分数:1.00)A.在语句“char str=“string!“;“中,数组 str 的大小等于字符串的长度B.语句“char str10=“string!“;“和“char str10=“string!“;”并不等价C.对于一维字符数组,不能使用字符串常量来赋初值D.对于字符串常量“st

    9、ring!”,系统已自动在最后加入了“/0“字符,表示串结尾31.设有定义 char str=“Hello“; 则语句 printf(“%d%d“, sizeof(str), strlen(str); 的输出结果是_。(分数:1.00)A.5 5B.6 6C.6 5D.5 632.在 32 位编译器上,设有定义 char *str1=“Hello“, str2=“Hello“;, 则以下语句 printf(“%d%d“, sizeof(str1), sizeof(str2); 的输出结果是_。(分数:1.00)A.5 6B.5 5C.6 6D.4 633.以下叙述中正确的是_。(分数:1.00

    10、)A.任何情况下都不能用函数名作为实参B.函数既可以直接调用自己,也可以间接调用自己C.函数的递归调用不需要额外开销,所以效率很高D.简单递归不需要明确的结束递归的条件34.以下叙述中正确的是_。(分数:1.00)A.函数的形式参数不属于局部变量B.对于变量而言,“定义”和“说明”这两个词实际上是同一个意思C.在复合语句中不能定义变量D.全局变量的存储类别可以是静态类35.以下叙述中正确的是_。(分数:1.00)A.在一个程序中,允许使用任意数量的#include 命令行B.在包含文件中,不得再包含其他文件C.#include 命令行不能出现在程序文件的中间D.虽然包含文件被修改了,包含该文件

    11、的源程序也可以不重新进行编译和连接36.以下叙述中正确的是_。(分数:1.00)A.函数的返回值不能是结构体类型B.在调用函数时,可以将结构体变量作为实参传给函数C.函数的返回值不能是结构体指针类型D.结构体数组不能作为参数传给函数37.以下叙述中正确的是_。(分数:1.00)A.结构体数组名不能作为实参传给函数B.结构体变量的地址不能作为实参传给函数C.结构体中可以含有指向本结构体的指针成员D.即使是同类型的结构体变量,也不能进行整体赋值38.设有如下的说明和定义: struct int a; char *s; x, *p= x.a=4; x.s=“hello“; 则以下叙述中正确的是_。(

    12、分数:1.00)A.(p+)-a 与 p+-a 都是合语法的表达式,但二者不等价B.语句“+p-a;”的效果是使 p 增 1C.语句“+p-a;”的效果是使成员 a 增 1D.语句“*p-s+;”等价于“(*p)-s+ +;”39.下面关于位运算符的叙述,正确的是_。(分数:1.00)A.|表示“按位或”的运算B.#表示“按位异或”的运算C. void ReadText(FILE *); main( ) FILE * fp; if(fp=fopen(”myiile4.txt“,“w“)=NULL) printf(“open fail!/n“);exit(0); WriteText(fp); f

    13、close(fp); if(fp=fopen(“myfile4.txt“,“r“)=NULL) printf(“open fail!/n“);exit(0); ReadText(fp); fclose(fp); /* * * * * * * * * *found* * * * * * * * * */ void WriteText(FILE 1) char str81; printf(“/nEnter string with-1 to end :/n“); gets(str); while(strcmp(str,“-1“)!=0) /* * * * * * * * * *found* * *

    14、* * * * * * */ fputs( 2,fw);fputs(“/n“,fw); gets(str); void ReadText(FILE *fr) char str81; printf(“/nRead file and output to screen:/n“); fgets(str,81,fr); while(!feof(fr) /* * * * * * * * * *found* * * * * * * * * */ printf(“%s“, 3); fgets(str,81,fr); (分数:18.00)三、程序修改题(总题数:1,分数:18.00)42.下列给定程序中,函数

    15、fun 的功能是:从低位开始依次取出长整型变量 s 中奇数位上的数,构成一个新数存放在 t 中。高位仍在高位,低位仍在低位。 例如,当 s 中的数为 7654321 时,t 中的数为 7531。 请改正程序中的错误,使它能得出正确的结果。 注意:部分源程序在文件 MODI1.C 中,不得增行或删行,也不得更改程序的结构! #include stdio.h /* * * * * * * * * * found* * * * * * * * * * / void fun(long s, long t) longsl=10; *t=s% 10; while(s0) s = s/100; *t = s

    16、%10 * sl + *t; /* * * * * * * * * * found* * * * * * * * * * / sl=sl*100; main( ) long s, t; printf(“ /nPlease enter s:“); scanf(“%ld“, fun(s, printf(“The result is: %ld/n“, t); (分数:18.00)四、程序设计题(总题数:1,分数:24.00)43.学生记录由学号和成绩组成,N 名学生的数据已放入主函数中的结构体数组中,请编写函数 fun,其功能是:把分数最低的学生数据放入 b 所指的数组中。注意:分数最低的学生可能不

    17、止一个,函数返回分数最低的学生人数。 注意:部分源程序在文件 PROG1.C 中。 请勿改动主函数 main 和其他函数中的任何内容,仅在函数 fun 的花括号中填入你编写的若干语句。 #include stdio.h #deftne N 16 typedef struct char num10; int s; STREC; mt fun( STREC * a, STREC * b ) main( ) STREC sN = “GA05“ ,85 , “GA03“ ,76, “GA02“,69, “GA04“,85, “GA01“,91,“GA07“,72,“GA08“,64,“GA06“,87

    18、, “GA015“,85, “GA013“,91,“GA012“,64, “ GA014“,91/, “GA011“,91, “GA017“,64,“GA018“,64,“GA016“,72t; STREC hN; int i,n; FILE * out; n=fun(s,h); printf(“The % d lowest score :/n“,n); for(i=0;in; i+ +) printf(“% s %4d/n“, hi. num,hi.s); printf(“ /n“); out=fopen(“out.dat“,“w“); fprintf(out,“% d/n“,n); for

    19、(i=0;in;i+ +) fprintf(out,“%4d/n“,hi.s); fclose (out); (分数:24.00)_二级 C 语言真题(1)答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:40.00)1.下列叙述中正确的是_。(分数:1.00)A.程序执行的效率与数据的存储结构密切相关 B.程序执行的效率只取决于程序的控制结构C.程序执行的效率只取决于所处理的数据量D.以上说法均错误解析:解析 程序执行的效率与数据的存储结构、数据的逻辑结构、程序的控制结构、所处理的数据量等有关。2.下列与队列结构有关联的是_。(分数:1.00)A.函数的递归

    20、调用B.数组元素的引用C.多重循环的执行D.先到先服务的作业调度 解析:解析 队列的修改是依照“先进先出”的原则进行的,故 D 正确。3.对下列二叉树 (分数:1.00)A.DYBEAFCZXB.YDEBFZXCAC.ABDYECFXZ D.ABCDEFXYZ解析:解析 前序遍历是指在访问根节点、遍历左子树与遍历右子树这三者中,首先访问根节点,然后遍历左子树,最后遍历右子树;并且在遍历左、右子树时,仍然先访问根节点,然后遍历左子树,最后遍历右子树。因此,前序遍历可描述为:若二叉树为空,则执行空操作。否则:访问根节点;前序遍历左子树;前序遍历右子树。所以 C 正确。4.一个栈的初始状态为空,现将

    21、元素 1,2,3,A,B,C 依次入栈,然后再依次出栈,则元素出栈的顺序是_。(分数:1.00)A.1,2,3,A,B,CB.C,B,A,1,2,3C.C,B,A,3,2,1 D.1,2,3,C,B,A解析:解析 栈的修改是按照“后进先出”的原则进行的,所以顺序应与入栈顺序相反,故选 C。5.下面属于白盒测试方法的是_。(分数:1.00)A.等价类划分法B.逻辑覆盖 C.边界值分析法D.错误推测法解析:解析 白盒测试法主要有逻辑覆盖、基本路径测试等。逻辑覆盖测试包括语句覆盖、路径覆盖、判定覆盖、条件覆盖、判断一条件覆盖,故选择 B。其余为黑盒测试法。6.下面对对象概念描述正确的是_。(分数:1

    22、.00)A.对象间的通信靠消息传递 B.对象是名字和方法的封装体C.任何对象必须有继承性D.对象的多态性是指一个对象有多个操作解析:解析 对象之间进行通信的结构叫做消息,故 A 正确。封装性是指从外面看只能看到对象的外部特征,而不知道也无须知道数据的具体结构以及实现操作,不能简单地说成是名字和方法,故 B 错误。对象不一定必须有继承性,故 C 错误,多态性是指同一个操作可以是不同对象的行为,故 D 错误。7.软件设计中模块划分应遵循的准则是_。(分数:1.00)A.低内聚低耦合B.高耦合高内聚C.高内聚低耦合 D.以上说法均错误解析:解析 根据软件设计原理提出如下优化准则:划分模块时,尽量傲到

    23、高内聚、低耦合,保持模块相对独立性,并以此原则优化初始的软件结构;一个模块的作用范围应在其控制范围之内,且判定所在的模块应与受其影响的模块在层次上尽量靠近;软件结构的深度、宽度、扇入、扇出应适当;模块的大小要适中。故 C 正确。8.下面描述中不属于数据库系统特点的是_。(分数:1.00)A.数据共享B.数据完整性C.数据冗余度高 D.数据独立性高解析:解析 数据库系统的特点为高共享、低冗余、独立性高、具有完整性等。故 C 错误。9.数据库设计过程不包括_。(分数:1.00)A.概念设计B.逻辑设计C.物理设计D.算法设计 解析:解析 数据库设计过程主要包括:需求分析、概念结构设计、逻辑结构分析

    24、、数据库物理设计、数据库实施、数据库运行和维护阶段。故答案为 D。10.有三个关系 R、S 和 T 如下: R A B C a 1 2 b 2 1 c 3 1 S A D c 4 a 5 T A B C D c 3 1 4 a 1 2 5 则由关系 R 和 S 得到关系 T 的操作是_。(分数:1.00)A.自然连接 B.交C.投影D.并解析:解析 关系 R 和关系 S 有公共域,关系 T 是通过公共域的等值进行连接的结果,符合自然连接,故选 A。11.以下叙述中正确的是_。(分数:1.00)A.程序必须包含所有三种基本结构才能称为一种算法B.我们所写的每条 C 语句,经过编译最终都将转换成二

    25、进制的机器指令 C.如果算法非常复杂,则需要使用三种基本结构之外的语句结构才能准确表达D.只有简单算法才能在有限的操作步骤之后结束解析:解析 C 语言程序可以不包含三种基本结构,也可以包含其中的一种或多种,所以 A 错误。三种基本结构可以表示任何复杂的算法,所以 C 错误。正确的算法,不管是简单算法还是复杂算法,都可以在有限的操作步骤之后结束,这是算法的有穷性,所以 D 错误。12.以下叙述中正确的是_。(分数:1.00)A.在算法设计时,可以把复杂任务分解成一些简单的子任务 B.在 C 语言程序设计中,所有函数必须保存在一个源文件中C.只要包含了三种基本结构的算法就是结构化程序D.结构化程序

    26、必须包含所有的三种基本结构,缺一不可解析:解析 C 语言的程序中,函数不一定都放在同一个源文件中,可以分别放在不同的源文件中,通过#include 命令来引用,所以 B 错误。结构化程序可以包含三种基本结构中的一种或几种,所以 C、D 错误。13.以下叙述中正确的是_。(分数:1.00)A.只能在函数体内定义变量,其他地方不允许定义变量B.常量的类型不能从字面形式上区分,需要根据类型名来确定C.预定义的标识符是 C 语言关键字的一种,不能另作它用D.整型常量和实型常量都是数值型常量 解析:解析 变量可以定义在函数体外,也可以定义在函数体内,所以 A 错误。常量的类型可以从字面形式上区分,比如

    27、1 为整型常量,1.0 为实型常量,a 为字符型常量,所以 B 错误。预定义的标识符不是C 语言的关键字,所以 C 错误。14.以下叙述中正确的是_。(分数:1.00)A.在 C 程序中的八进制和十六进制可以是浮点数B.整型变量可以分为 int 型、short 型、long 型和 unsigned 型四种 C.八进制数的开头要使用英文字母 o,否则不能与十进制区分开D.英文大写字母 X 和英文小写字母 x 都可以作为二进制数字的开头字符解析:解析 在 C 语言中,浮点数只采用十进制,它有两种表示形式:十进制数形式和指数形式,所以A 错误。八进制数以数字 0 开头,所以 C 错误。C 语言中二进

    28、制数用 0 和 1 表示,所以 D 错误。15.以下叙述中正确的是_。(分数:1.00)A.在 scanf 函数中的格式控制字符串是为了输入数据用的,不会输出到屏幕上 B.在使用 scanf 函数输入整数或实数时,输入数据之间只能用空格来分隔C.在 printf 函数中,各个输出项只能是变量D.使用 printf 函数无法输出百分号“%”解析:解析 scanf 函数中的格式控制字符串是为了输入数据用的,无论其中有什么字符,也不会输出到屏幕上,所以 A 正确。scanf 函数的格式控制串可以使用其他非空白字符,如逗号,但在输入时必须输入这些字符,以保证匹配就可以,所以 B 错误。printf 函

    29、数可以输出常量,也可以输出变量,所以 C 错误。printf 函数可以用“/%”来输出百分号“%”,所以 D 错误。16.以下叙述中正确的是_。(分数:1.00)A.在 scanf 函数的格式串中,必须有与输入项一一对应的格式转换说明符 B.只能在 printf 函数中指定输入数据的宽度,而不能在 scanf 函数中指定输入数据的宽度C.scanf 函数中的字符串,是提示程序员的,输入数据时不必管它D.复合语句也被称为语句块,它至少要包含两条语句解析:解析 在 printf 和 scanf 函数中都可以指定数据的宽度,所以 B 错误。scanf 函数的格式控制串可以使用其他非空白字符,如逗号,

    30、但在输入时必须输入这些字符,以保证匹配,所以 C 错误。复合语句可以由任意多条语句构成,也可以一条都没有,所以 D 错误。17.以下叙述中正确的是_。(分数:1.00)A.逻辑“或”(即运算符“|”)的运算级别比算术运算符要高B.C 语言的关系表达式:0x10 完全等价于:(0x) 则以下叙述中正确的是_。(分数:1.00)A.语句 a=是非法的 B.表达式 a+1 是非法的C.三个表达式 a1、*(a+1)、*D 选项中,* for(i=0;i4;i+) ai=*p+; printf(“%d/n“,a2); 程序的输出结果是_。(分数:1.00)A.2B.8C.4D.6 解析:解析 本题通过

    31、语句“*p=a”将一维数组 a 的首地址的值赋值给变量 p,即 p 的值为 2。执行 for循环,ai=*p+,指将 p 的值赋给 ai后,再进行自增操作,因此 4 次循环后 a2的值为 6。因此 D 选项正确。28.以下叙述中正确的是_。(分数:1.00)A.语句“int a43=1,2,4,5;”是错误的初始化形式B.语句“int a43=1,2,4,5;”是错误的初始化形式C.语句“int a3=1,2,4,5;”是错误的初始化形式D.在逻辑上,可以把二维数组看成是一个具有行和列的表格或矩阵 解析:解析 二维数组在初始化时,可以省略第 1 维,但是不可以省略第 2 维。可以为部分数组元素

    32、初始化。A 选项、B 选项和 C 选项内的初始化都没有错误。因此 D 选项正确。29.以下叙述中正确的是_。(分数:1.00)A.字符串常量“Hello”会被隐含处理成一个无名字符型数组,它有 5 个元素B.不能用字符串常量对字符数组名进行整体赋值操作 C.char str7=“string!“; 在语法上是合法的,运行也是安全的D.char *str; str=“Hello“;与 char str; str=“Hello“;效果是一样的解析:解析 字符串中的字符依次存储在内存中一块连续的区域内,并且把空字符“/0“自动附加到字符串的尾部作为字符串的结束标志。故字符个数为 n 的字符串在内存中

    33、应占(n+1)个字节。选项 A 中有 6 个元素,其中包含结尾字符。C 选项中字符串常量包含 8 个字符,所以不能赋值在 str7中。D 选项中,后者赋值错误。30.以下叙述中正确的是_。(分数:1.00)A.在语句“char str=“string!“;“中,数组 str 的大小等于字符串的长度B.语句“char str10=“string!“;“和“char str10=“string!“;”并不等价C.对于一维字符数组,不能使用字符串常量来赋初值D.对于字符串常量“string!”,系统已自动在最后加入了“/0“字符,表示串结尾 解析:解析 字符串中的字符依次存储在内存中一块连续的区域内

    34、,并且把空字符“/0“自动附加到字符串的尾部作为字符串的结束标志。故字符个数为 n 的字符串在内存中应占(n+1)个字节。A 选项中数组长度比字符串长度小一个字节,因为字符串中包含隐含的结尾符。B 选项中两者等价。C 选项中,可以使用字符串常量来给一维字符数组赋值,就像 B 选项中一样。31.设有定义 char str=“Hello“; 则语句 printf(“%d%d“, sizeof(str), strlen(str); 的输出结果是_。(分数:1.00)A.5 5B.6 6C.6 5 D.5 6解析:解析 本题考查 sizeof 和 strlen 函数对字符串处理的不同之处。sizeof

    35、 求出字符串的字符个数,包括结尾符。strlen 求出字符串的实际字符,不包括结尾符。所以答案为 C 选项。32.在 32 位编译器上,设有定义 char *str1=“Hello“, str2=“Hello“;, 则以下语句 printf(“%d%d“, sizeof(str1), sizeof(str2); 的输出结果是_。(分数:1.00)A.5 6B.5 5C.6 6D.4 6 解析:解析 本题主要考查指向字符串的指针和字符数组。str1 为一个字符指针,所以 sizeof 为4;str2 为字符数组,其中包含 6 个字符,所以答案为 D 选项。33.以下叙述中正确的是_。(分数:1.

    36、00)A.任何情况下都不能用函数名作为实参B.函数既可以直接调用自己,也可以间接调用自己 C.函数的递归调用不需要额外开销,所以效率很高D.简单递归不需要明确的结束递归的条件解析:解析 在某些情况下,函数名可以作为实参传递,所以 A 选项错误。函数递归调用使用栈区来递归,需要额外开销,并且效率不高,所以 C 选项错误。递归调用需要明确指出递归结束条件,否则就陷入死循环了,所以 D 选项错误。34.以下叙述中正确的是_。(分数:1.00)A.函数的形式参数不属于局部变量B.对于变量而言,“定义”和“说明”这两个词实际上是同一个意思C.在复合语句中不能定义变量D.全局变量的存储类别可以是静态类 解

    37、析:解析 函数的形参属于局部变量,所以 A 选项错误。声明变量不分配空间,定义变量要分配空间,所以 B 选项错误。复合语句中可以定义变量,所以 C 选项错误。35.以下叙述中正确的是_。(分数:1.00)A.在一个程序中,允许使用任意数量的#include 命令行 B.在包含文件中,不得再包含其他文件C.#include 命令行不能出现在程序文件的中间D.虽然包含文件被修改了,包含该文件的源程序也可以不重新进行编译和连接解析:解析 本题考查预处理中文件包含的概念。包含文件中可以包含其他文件,故 B 选项错误;#include 可以出现在程序文件的中间,故 C 选项错误;包含文件被修改了,包含该

    38、文件的源程序必须重新进行编译和连接,故 D 选项错误。36.以下叙述中正确的是_。(分数:1.00)A.函数的返回值不能是结构体类型B.在调用函数时,可以将结构体变量作为实参传给函数 C.函数的返回值不能是结构体指针类型D.结构体数组不能作为参数传给函数解析:解析 本题考查结构体变量作为函数参数。函数返回可以是结构体类型,也可以是结构体类型的指针。结构体数组可以作为参数传给函数。37.以下叙述中正确的是_。(分数:1.00)A.结构体数组名不能作为实参传给函数B.结构体变量的地址不能作为实参传给函数C.结构体中可以含有指向本结构体的指针成员 D.即使是同类型的结构体变量,也不能进行整体赋值解析

    39、:解析 本题考查结构体变量作为函数参数。结构体变量的地址可以作为参数传给函数,故 A 错误;结构体数组名就是一个地址,可以传给函数,故 B 错误;如果是同类型的结构体变量,可以整体赋值,故D 错误。38.设有如下的说明和定义: struct int a; char *s; x, *p= x.a=4; x.s=“hello“; 则以下叙述中正确的是_。(分数:1.00)A.(p+)-a 与 p+-a 都是合语法的表达式,但二者不等价B.语句“+p-a;”的效果是使 p 增 1C.语句“+p-a;”的效果是使成员 a 增 1 D.语句“*p-s+;”等价于“(*p)-s+ +;”解析:解析 本题考

    40、查结构体变量的引用。+p-a 的效果是使成员 a 增 1;p+-a 不合法;*p-s+为字符 e,与(*p)-s+不等价。39.下面关于位运算符的叙述,正确的是_。(分数:1.00)A.|表示“按位或”的运算B.#表示“按位异或”的运算C. void ReadText(FILE *); main( ) FILE * fp; if(fp=fopen(”myiile4.txt“,“w“)=NULL) printf(“open fail!/n“);exit(0); WriteText(fp); fclose(fp); if(fp=fopen(“myfile4.txt“,“r“)=NULL) prin

    41、tf(“open fail!/n“);exit(0); ReadText(fp); fclose(fp); /* * * * * * * * * *found* * * * * * * * * */ void WriteText(FILE 1) char str81; printf(“/nEnter string with-1 to end :/n“); gets(str); while(strcmp(str,“-1“)!=0) /* * * * * * * * * *found* * * * * * * * * */ fputs( 2,fw);fputs(“/n“,fw); gets(str

    42、); void ReadText(FILE *fr) char str81; printf(“/nRead file and output to screen:/n“); fgets(str,81,fr); while(!feof(fr) /* * * * * * * * * *found* * * * * * * * * */ printf(“%s“, 3); fgets(str,81,fr); (分数:18.00)解析:*fw str str 解析 本题考查:函数定义以及文件指针;fputs 函数的功能是向指定的文件写入一个字符串,其调用形式为:fputs(字符串,文件指针)。 填空 1:

    43、定义函数,函数的形参是一个文件类型的指针。 填空 2:此处考查 fputs 函数的形式,应填入 str。 填空 3:依据 printf 函数的格式,输出字符串内容,即 printf(“%s“,str);。三、程序修改题(总题数:1,分数:18.00)42.下列给定程序中,函数 fun 的功能是:从低位开始依次取出长整型变量 s 中奇数位上的数,构成一个新数存放在 t 中。高位仍在高位,低位仍在低位。 例如,当 s 中的数为 7654321 时,t 中的数为 7531。 请改正程序中的错误,使它能得出正确的结果。 注意:部分源程序在文件 MODI1.C 中,不得增行或删行,也不得更改程序的结构!

    44、 #include stdio.h /* * * * * * * * * * found* * * * * * * * * * / void fun(long s, long t) longsl=10; *t=s% 10; while(s0) s = s/100; *t = s%10 * sl + *t; /* * * * * * * * * * found* * * * * * * * * * / sl=sl*100; main( ) long s, t; printf(“ /nPlease enter s:“); scanf(“%ld“, fun(s, printf(“The result

    45、 is: %ld/n“, t); (分数:18.00)解析:void fun(long s, long *t) sl=s1*10 解析 本题考查:函数定义,指针型变量;数值 n 和其各个位如何表示。 (1)主函数中调用函数的参数为地址,因此函数 fun 的形式参数应为指针类型。 (2)重新组合一个数,从个位开始,然后十位,依次类推,因此每增加一位数,原数值需乘以 10,即s1=s1*10;。四、程序设计题(总题数:1,分数:24.00)43.学生记录由学号和成绩组成,N 名学生的数据已放入主函数中的结构体数组中,请编写函数 fun,其功能是:把分数最低的学生数据放入 b 所指的数组中。注意:分

    46、数最低的学生可能不止一个,函数返回分数最低的学生人数。 注意:部分源程序在文件 PROG1.C 中。 请勿改动主函数 main 和其他函数中的任何内容,仅在函数 fun 的花括号中填入你编写的若干语句。 #include stdio.h #deftne N 16 typedef struct char num10; int s; STREC; mt fun( STREC * a, STREC * b ) main( ) STREC sN = “GA05“ ,85 , “GA03“ ,76, “GA02“,69, “GA04“,85, “GA01“,91,“GA07“,72,“GA08“,64,

    47、“GA06“,87, “GA015“,85, “GA013“,91,“GA012“,64, “ GA014“,91/, “GA011“,91, “GA017“,64,“GA018“,64,“GA016“,72t; STREC hN; int i,n; FILE * out; n=fun(s,h); printf(“The % d lowest score :/n“,n); for(i=0;in; i+ +) printf(“% s %4d/n“, hi. num,hi.s); printf(“ /n“); out=fopen(“out.dat“,“w“); fprintf(out,“% d/n“,n); for(i=0;in;i+ +) fprintf(out,“%4d/n“,hi


    注意事项

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




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

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

    收起
    展开