2016整理版北邮面向对象C 试题(房鸣)
- 格式:pdf
- 大小:667.61 KB
- 文档页数:17
C++面向对象技术复习题汇总(含答案)面向对象程序设计C++复习资料与答案第一、二、六、七章习题一、选择题1、系统约定C++源程序文件名的缺省的扩展名为()A、bccB、c++C、cppD、vcc2、面向对象的程序设计将数据与()放在一起,作为一个相互依存、不可分割的整体来处理。
A、对数据的操作B、信息C、数据隐藏D、数据抽象3、当一个函数无返回值时,函数的类型应定义为()A、voidB、任意C、intD、无4、对于C++的函数,正确的叙述是:A、函数的定义不能嵌套,但函数的调用可以嵌套B、函数的定义不能嵌套,但函数的调用不能嵌套C、函数的定义和调用都不能嵌套D、函数的定义和调用都可以嵌套5、下列语句中错误的是()A、int *p=new int(10);B、int *p=new int[10]C、int *p=new int;D、int *p=new int[40](0);6、假设已经有定义:const char *const name=”chen”;,下面的语句中正确的是:()A、name[3]=’a’; B、name=”lin”;C、name=new char[5]; D、cout<<name[3];< bdsfid="94" p=""></name[3];<>7、假设已经定义:char *const name=”chen”;, 下面的语句中正确的是:()A、name[3]=’q’; B、name=”lin”;C、name=new char[5]; D、name=new char(‘q’);8、假设已经定义:const char *name=”chen”;, 下面的语句中错误的是:()A、name[3]=’q’; B、name=”lin”;C、name=new char[5]; D、name=new char(‘q’);9、下面的类型声明中正确的是:( )A、int &a[4];B、int &*p;C、int &&qD、int i,*p=&i;10、假设定义了函数模板()templateT max(T x,T y){ return(x>y)?x:y;}并定义了int i;char c;错误的调用语句是:()A、max(i,i)B、max(c,c)C、max((int)c,i);D、max(i,c)11、模板的使用是为了()A、提高代码的可重用性B、提高代码的运行效率C、加强类的封装性D、实现多态性12、设有二个语句:int x[‘a’];cin>>x;则编译器认为()A、说明语句int x[‘a’]错B、二个语句都错C、语句cin>>x 错D、二个语句正确,没有语法错13、设有语句:void f(int a[10],int &x);int y[10],*py=y,n;则对函数f的正确调用语句是( )A、f(py[10],n);B、f(py,n)C、f(*py,&n)D、f(py,&n)14、在C++中实现封装是借助于()A、枚举B、类C、数组D、函数15、对于下面几个函数:(1) void f(int x,float y) {…… }(2) int f(int a,float b){…… }(3) int f(int i,int j){…… }(4) float k(int x){…… }是重载函数。
一、 填空题1. 软件工程是指导(计算机软件)开发和维护的(工程学科) 。
2. 应用软件工程方法开发软件系统的根本目的是为了改善以下四项软件品质因素:提高所开发的软件系统的 (效率);降低所开发的软件系统的(成本);改善所开发的软件系统的(性能)发的软件系统的(周期)。
3. 抽象的对象模型由(属性)和(方法)两个部分构成。
4. 一个消息必须具备的两个要素是(接收消息的对象标识)和(接收消息的对象的方法标识) 。
5. 一个对象拥有另一个对象的(部分)或(全部)的属性和方法的关系则称为(继承)关系。
6. 失去(制造对象)能力的类成为抽象类。
7. 一个类的属性不能出现对象拷贝则成为(类属性) 。
8. 面向对象技术的三大特征是(继承)、(封装)、(多态)。
9. 共生包容关系中的被包容类对象与包容类对象是(同时连带)生成的。
10. 同时出现在两个具有关联关系的对象内的相同属性被称为(连接属性) 。
11. 一个用例模型的设计要有三类人参与,他们分别是(主要参与者) 、(次要参与者)和()12. 边界类中涉及到的三个接口是(用户接口) 、(设备接口)和(系统接口)。
13. 一个用例中的各个类之间存在的最普遍的关系是(关联)关系。
14. 在面向对象技术中,使用多态技术手段大大(延长)了软件的使用寿命、降低了软件产品的开发(成本) 的泛化技术手段还可以极大的提高软件产品的(可移植)性。
15. 试选择以下词组代号填入恰当的括号内:类属性和类方法对应于面向对象语言中的(①)和(④) ①静态成员函数 ②成员数据 ③成员函数 ④静态成员函数 16. 对象间存在聚合(包容)、继承(派生)和关联三种关系。
17. 一个用例内至少要有一个(①)和一个(④)①边界类 ②抽象类 ③实体类 ④控制类18. 一个继承了抽象类且可以制造对象的派生类所生成的对象内存在一个其继承得到的抽象类对象的(③) ①属性函数 ②作用域 ③方法成员 ④声明19.软件的生存周期是一个软件产品从(定义) 、(开发)(废弃)的时间的总合。
总复习一.基本要求与非基本要求·掌握软件工程的基本分析方法;·掌握UML有关对象系统的分析与构建方法;·理解RUP的分析工作流程与迭代式开发的方法;·掌握C++语言的面向对象技术基本程序设计方法;·了解C++语言的非面向对象技术的程序设计手段;二.考题的结构⒈填空题(20%)考查学生对面向对象技术的最基本概念的掌握情况。
绝大多数是有关软件工程和面向对象技术的概念定义。
⒉是非判断题(20%)考查学生对面向对象技术的各种概念的理解深度和广度。
⒊单项选择题(16%)考查学生对UML和RUP的基本概念和术语的综合掌握水平。
⒋分析题(30%)考查学生对面向对象技术的建模方法有关的知识点的综合掌握水平。
该题目由六个小题组成。
⒌C++语言综合题(14%)给定一段C++程序,分析题目所体现和反应的面向对象技术的基本概念,考查学生逻辑分析的能力。
三.练习⒈填空题①软件的生存周期是一个软件产品从(定义)、(开发)、(使用)到(废弃)的时间的总合。
②失去定义对象能力的类被称为(抽象类)。
③C++语言中的静态成员函数是(类方法)的具体实现。
④连接属性是(关联/连接)关系的两个对象内的属性。
⑤边界类与(Actor(角色))对呈一一对应关系。
⒉是非判断题①只有属性的类也具有封装性。
(×)②在面向对象技术系统分析中,问题陈述是获取对象的重要来源。
(√)③在面向对象技术系统分析中不使用数据流图。
(×)④一个对象的方法只能改变本对象的属性值。
(×)⑤一个对象内存在另一个对象的关系称为包容关系。
(×)(原因:有可能是派生)⑥含有定性的属性的类就是抽象类。
(×)⑦当使用一个类方法时,消息是传向一个类的。
(√)⑧一个对象所呈现的不同状态称为多态。
(×)⑨静态链接是在面向对象技术语言编译时建立的对象关系。
(√)⑩RUP的开发周期由三个阶段所构成。
2016年c自考试题及答案一、单项选择题(每题1分,共10分)1. 以下哪项是C语言中合法的变量名?A. 2variableB. variable2C. _variableD. variable_2答案:C2. C语言中,用于定义一个整型变量的关键字是?A. intB. floatC. charD. double答案:A3. 在C语言中,以下哪个运算符用于比较两个值是否相等?A. ==B. =C. !=D. <=答案:A4. 下列哪个选项是C语言中的逻辑运算符?A. %B. &&C. /D. +5. C语言中,哪个函数用于将字符串转换成浮点数?A. atoiB. atofC. itoaD. sprintf答案:B6. C语言中,数组的索引是从哪个数字开始的?A. 0B. 1C. -1D. 任意数字答案:A7. 在C语言中,以下哪个关键字用于定义一个函数?A. classB. functionC. voidD. int答案:C8. C语言中,哪个库函数用于计算数组中元素的总和?A. sumB. totalC. sumArrayD. arraySum答案:C9. 下列哪个选项是C语言中的循环结构?B. whileC. do-whileD. 以上都是答案:D10. C语言中,哪个关键字用于定义一个结构体?A. structB. unionC. enumD. typedef答案:A二、填空题(每题2分,共20分)1. 在C语言中,定义一个字符型变量的关键字是________。
答案:char2. C语言中,用于定义一个浮点型变量的关键字是________。
答案:float3. C语言中,用于定义一个双精度型变量的关键字是________。
答案:double4. C语言中,用于定义一个布尔型变量的关键字是________。
答案:_Bool 或 bool(取决于编译器)5. C语言中,用于定义一个无返回值函数的关键字是________。
北邮c试题及答案试题1:以下哪个选项是C语言中合法的变量名?A. 2variableB. variable2C. variable!D. variable_2答案:B试题2:在C语言中,以下哪个关键字用于定义一个结构体?A. structB. unionC. enumD. class答案:A试题3:若变量a和b的值分别为5和10,以下哪个表达式的结果为15?A. a + bB. a * bC. a - bD. a / b答案:A试题4:C语言中,以下哪个函数用于计算字符串的长度?A. strlen()B. strlength()C. length()D. strleng()答案:A试题5:在C语言中,以下哪个选项是正确的注释方式?A. // 这是一个注释B. /* 这是一个注释 */C. //这是一个注释D. /*这是一个注释 */答案:A试题6:以下哪个选项是C语言中合法的数组声明?A. int arr[5] = {1, 2, 3, 4, 5};B. int arr[] = {1, 2, 3, 4, 5};C. int arr[5] = {1, 2, 3};D. int arr[] = {1, 2, 3, 4, 5, 6};答案:A试题7:在C语言中,以下哪个选项是正确的函数声明?A. int myFunction(int a, int b);B. int myFunction(int a, int b) {}C. int myFunction(int a, int b) = 0;D. int myFunction(int a, int b) = {0};答案:A试题8:以下哪个选项是C语言中合法的指针声明?A. int *ptr;B. int ptr*;C. int *ptr = 0;D. int ptr = 0;答案:A试题9:在C语言中,以下哪个选项是正确的文件包含指令?A. #include "stdio.h"B. #include <stdio.h>C. #include "stdio.h"D. #include <stdio.h>答案:B试题10:以下哪个选项是C语言中合法的循环语句?A. for (int i = 0; i < 10; i++)B. for (int i = 0; i <= 10; i--)C. for (int i = 0; i < 10; i++)D. for (int i = 0; i < 10; i++, i--)答案:A。
一、单选题1. C++源程序文件的缺省扩展名为( A )。
A. cppB. exeC. objD. lik2. 由C++源程序文件编译而成的目标文件的缺省扩展名为( C )。
A. cppB. exeC. objD. lik3. 由C++目标文件连接而成的可执行文件的缺省扩展名为( B )。
A. cppB. exeC. objD. lik4. 编写C++程序一般需经过的几个步骤依次是( )。
A. 编译、编辑、连接、调试B. 编辑、编译、连接、调试C. 编译、调试、编辑、连接D. 编辑、调试、编辑、连接5. 以下标识符中不全是保留字的是()。
A. case for intB. default then whileC. bool class longD. goto return char6. 能作为C++程序的基本单位是( )。
A. 字符B. 语句C. 函数D. 源程序文件7. 程序中主函数的名字为()。
A. mainB. MAINC. MainD. 任意标识符8. C++程序的基本模块为()。
A. 表达式B. 标识符C. 语句D. 函数9. 可用作C++语言用户标识符的一组标识符是( )。
A. void define +WORDB. a3_b3 _123 YNC. for -abc CaseD. 2a DO sizeof10. 存储以下数据,占用存储字节最多的是()。
A. 0B. ‘0’C. “0”D. 0.011. 程序运行中需要从键盘上输入多于一个数据时,各数据之间应使用( )符号作为分隔符。
A. 空格或逗号B. 逗号或回车C. 逗号或分号D. 空格或回车12. 设”int a=12。
”,则执行完语句”a+=a*a。
”后,a的值是( )。
A. 12B. 144C. 156D. 28813. 假设在程序中 a、b、c 均被定义成整型,所赋的值都大于1,则下列能正确表示代数式1/abc的表达式是( )。
c++面向对象复习题答案版第1页共22页一、填空题1.c++中存有两种数据类型:(char)和(intlong)可以采用signed修饰符。
在c++中,用数组、指针、和(提及)做为函数参数,能将参数值送回。
2.为了降低函数调用的时间开销,建议将小的调用频繁的函数定义为(内联函数),方法是在函数类型前加上(inline)关键字。
3.面向对象的程序设计存有四大特征,它们就是抽象化、PCB、(承继)、(多态)。
4.拷贝构造函数是在用一个对象初始化另一个对象时被调用,系统缺省的拷贝构造函数的工作方法是(把对象的每个数据成员的值都复制到新建立的对象中)。
5.用new提出申请某一个类的动态对象数组时,在该类中必须能相匹配至(该类的)构造函数,否则应用程序可以产生一个编程错误。
6.静态数据成员必须在类外进行初始化,且静态数据成员的一个拷贝被类的所有对象(共享)。
7.在c++中,定义空载函数时,应当至少并使空载函数的参数个数或参数类型(相同)。
8.在c++中,虽然友元提供更多了类之间数据展开出访的一种方式,但它毁坏了面向对象程序设计的(PCB)特性。
9.预编译指令由三种,它们是:文件包含、(宏定义)和(条件编译)。
10.静态的成员函数没暗含的(this),所以,它们就可以轻易出访类的静态的数据成员。
11.在c++中,函数的参数存有两种传达方式,它们就是值传达和(地址)。
12.当非静态成员函数被调用时,该成员函数的(this)指向调用它的对象。
13.拷贝构造函数采用(提及)做为参数初始化建立中的对象。
14.在公有承继的情况下,基类数据成员在派生类中的出访权限(维持不变)。
15.在c++中,结构派生类对象时,总是先从(基类)的初始化已经开始的。
16.当需要统计程序中某个类创建对象的个数时,需要给该类定义(静态数据)成员。
17.在多个类之间有重复继承时,为避免被重复继承的基类数据成员在内存中有多个拷贝,应将该基类定义为(虚基类)。
第一章:面向对象程序设计概述[1_1]什么是面向对象程序设计?面向对象程序设计是一种新型的程序设计范型。
这种范型的主要特征是:程序=对象+消息。
面向对象程序的基本元素是对象,面向对象程序的主要结构特点是:第一:程序一般由类的定义和类的使用两部分组成,在主程序中定义各对象并规定它们之间传递消息的规律。
第二:程序中的一切操作都是通过向对象发送消息来实现的,对象接受到消息后,启动有关方法完成相应的操作。
面向对象程序设计方法模拟人类习惯的解题方法,代表了计算机程序设计新颖的思维方式。
这种方法的提出是软件开发方法的一场革命,是目前解决软件开发面临困难的最有希望、最有前途的方法之一。
[1_2]什么是类?什么是对象?对象与类的关系是什么?在面向对象程序设计中,对象是描述其属性的数据以及对这些数据施加的一组操作封装在一起构成的统一体。
对象可以认为是:数据+操作在面向对象程序设计中,类就是具有相同的数据和相同的操作的一组对象的集合,也就是说,类是对具有相同数据结构和相同操作的一类对象的描述。
类和对象之间的关系是抽象和具体的关系。
类是多个对象进行综合抽象的结果,一个对象是类的一个实例。
在面向对象程序设计中,总是先声明类,再由类生成对象。
类是建立对象的“摸板”,按照这个摸板所建立的一个个具体的对象,就是类的实际例子,通常称为实例。
[1_3]现实世界中的对象有哪些特征?请举例说明。
对象是现实世界中的一个实体,其具有以下一些特征:(1)每一个对象必须有一个名字以区别于其他对象。
(2)需要用属性来描述它的某些特性。
(3)有一组操作,每一个操作决定了对象的一种行为。
(4)对象的操作可以分为两类:一类是自身所承受的操作,一类是施加于其他对象的操作。
例如:雇员刘名是一个对象对象名:刘名对象的属性:年龄:36 生日:1966.10.1 工资:2000 部门:人事部对象的操作:吃饭开车[1_4]什么是消息?消息具有什么性质?在面向对象程序设计中,一个对象向另一个对象发出的请求被称为“消息”。
《C++ 面向对象程序设计语言》期末试卷及参考答案 [ 夜清风工作室整理版 ]QQ群:天津理工大学华信软件(196667902)首发。
此试卷所有代码在另一个文件夹内。
声明:由于附加内容是学酥敲键盘敲出来的,个别地方文字若有误,敬请谅解。
注释不明,不详,或错误处,请告知一下。
[仅供参考] 希望大家取得好的成绩!搜索微信公众号“夜清风工作室”,点击关注,第一时间接收资料,通知等信息。
一、判断题)1.按照标识符的要求,下划线是不能组成正确标识符的。
(x)[标识符是程序员定义的单词,它命名程序正文中的一些实体,如函数名、变量名、类名、对象名称。
C++标识符构成规则如下:1.以大写字母、小写字母或下划线(_)开始。
2.可以由大写字母、小写字母、下划线(_)或数字0~9组成。
3.大写字母和小写字母代表不同的标识符。
4.不能是C++关键词。
]2.引用就是某个变量的别名,对引用的操作,实质上就是对被引用的变量的操作。
(v)[引用是一种特殊类型的变量,可以被认为是另一个变量的别名,通过引用名与通过被引用的变量名访问变量的效果是一样的。
]3.在不同类型操作数组成的表达式中,其表达式类型一定是最高类型double型。
(x)[转换的基本原则是降低类型数据转换为高类型数据,具体参考C++课本35页]4.For循环是只有可以确定的循环次数时才可使用,否则不能用for循环。
(x)[可以无限循环下去滴,死循环]5.返回值类型、参数个数和参数类型都相同的函数也可以重载。
(x)[返回值类型,参数类型,参数个数不同,或者函数后面跟const 变成常函数才可重载]6.重新定义的标识符在定义它的区域内是可见的,而与其同名的原标识符在此区域内是不可见的但是却是存在的。
(v)7.通常的拷贝初始化函数的参数是某个对象的成员名或对象的引用名。
(v)8.已知:类A中一个成员函数说明如下:void Set(A&a);其中A &a的含意是将a的地址值赋给变量Set。
2010年C语言试题及答案一、选择题(1)下列叙述中正确的是A)对长度为n的有序链表进行查找,最坏清况下需要的比较次数为nB)对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为(n/2)C)对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为(log2n)D)对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为(nlog2n)(2)算法的时问复杂度是指A)算法的执行时间B)算法所处理的数据量C)算法程序中的语司或指令条数D)算法在执行过程中所需要的基本运算次数(3)软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。
下面属于系统软件的是A)编辑软件B)操作系统C)教务管理系统D)浏览器(4)软件(程序)调试的任务是A)诊断和改正程序中的错误B)尽可能多地发现程序中的错误C)发现并改正程序中的所有错误D)确定程序中错误的性质(5)数据流程图(DFD图)是A)软件概要设计的工具B)软件详细设计的工具C)结构化方法的需求分析工具D)面向对象方法的需求分析工具(6)软件生命周期可分为定义阶段,开发阶段和维护阶段。
详细设计属于A)定义阶段B)开发阶段C)维护阶段D)上述三个阶段(7)数据库管理系统中负责数据模式定义的语言是A)数据定义语言B)数据管理语言C)数据操纵语言D)数据控制语言(8)在学生管理的关系数据库中,存取一个学生信息的数据单位是A)文件B)数据库C)字段D)记录(9)数据库设计中,用E-R图来描述信息结构但不涉及信息在计算机中的表示,它属于数据库设计的A)需求分析阶段B)逻辑设计一阶段C)概念设计阶段D)物理设计阶段(10)有两个关系R和T如下:则由关系K得到关系T的操作是A)选择B)投影C)交D)并(11)以下叙述正确的是A)C语言程序是由过程和函数组成的B)C语言函数可以嵌套调用,例如:fun(fun(x))C)C语言函数不可以单独编译D)C语言中除了main函数,其他函数不可作为单独文件形式存在(12)以下关于C语言的叙述中正确的是A)C语言中的注释不可以夹在变量名或关键字的中间B)C语言中的变量可以在使用之前的任何位置进行定义C)在C语言算术表达式的书写中,运算符两侧的运算数类型必须一致D)C语言的数值常量中夹带空格不影响常量值的正确表示(13)以下C语言用户标识符中,不合法的是A)_1B)AaBcC)a_bD)a—b(14)若有定义:double a=22;int i=0,k=18;,则不符合C语言规定的赋值语句是A)a=a++,i++;B)i=(a+k)<=(i+k);C)i=a;D)i=!a;(15)有以下程序#includemain(){ char a,b,c,d;scanf(“%c%c”,&a,&b);c=getchar(); d=getchar();printf(“%c%c%c%c\n”,a,b,c,d);}当执行程序时,按下列方式输入数据(从第1列开始,代表回车,注意:回车也是一个字符)1234则输出结果是A)1234B)12C)123D)1234(16)以i关于C语言数据类型使用的叙述中错误的是A)若要准确无误差的表示自然数,应使用整数类型B)若要保存带有多位小数的数据,应使用双精度类型C)若要处理如“人员信息”等含有不同类型的相关数据,应自定义结构体类型D)若只处理“真”和“假”两种逻辑值,应使用逻辑类型(17)若a是数值类型,则逻辑表达式(a==1)||(a!=1)的值是A)1B)0C)2D)不知道a的值,不能确定(18)以下选项中与if(a==1)a=b; else a++;语句功能不同的switch语句是A)switch(a){case:a=b;break;default:a++;}B)switch(a==1){case 0:a=b;break;case 1:a++;}C)switch(a){default:a++;break;case 1:a=b;}D)switch(a==1){case 1:a=b;break;case 0:a++;}(19)有如下嵌套的if语句if (a<B)< p>if(a< p>else k=c;elseif(belse k=c;以下选项中与上述if语句等价的语句是A)k=(a<C)?B:C;< p>B)k=(a<B)?((Bc)?b:c);C)k=(a<B)?((A<E)?A:E):((B<E)?B:C);< p>D)k=(a<C)?A:C;< p>(20)有以下程序#includemain(){in i,j,m=1;for(i=1;i<3;i++){for(j=3;j>O;j--){if(i*j)>3)break;m=i*j;}}printf("m=%d\n",m);}程序运行后的输出结果是A)m=6B)m=2C)m=4D)m=5(21)有以下程序#include(stdio.h>main(){int a=l;b=2;for(;a<8;a++) {b+=a;a+=2;}printf("%d,%d\n",a,b);}程序运行后的输出结果是A)9,18B)8,11C)7,11D)10,14(22)有以下程序,其中k的初值为八进制数#includemain(){int k=011;printf("%d\n",k++);}程序运行后的输出结果是A)12B)11C)10D)9(23)下列语句组中,正确的是A)char *s;s="Olympic";B)char s[7];s="Olympic";C)char *s;s={"Olympic"};D)char s[7];s={"Olympic"};(24)以下关于return语句的叙述中正确的是A)一个自定义函数中必须有一条return语句B)一个自定义函数中可以根据不同情况设置多条return语句C)定义成void类型的函数中可以有带返回值的return语句D)没有return语句的自定义函数在执行结束时不能返回到调用处(25)下列选项中,能正确定义数组的语句是A)int num[0..2008];B)int num[];C)int N=2008;int num[N];D)#define N 2008int num[N];(26)有以下程序#includevoid fun(char *c,int d){*c=*c+1;d=d+1;printf("%c,%c,",*c,d);main(){char b='a',a='A';fun(&b,a);printf("%e,%e\n",b,a);}程序运行后的输出结果是A)b,B,b,AB)b,B,B,AC)a,B,B,aD)a,B,a,B(27)若有定义int(*Pt)[3];,则下列说法正确的是A)定义了基类型为int的三个指针变量B)定义了基类型为int的具有三个元素的指针数组ptC)定义了一个名为*pt、具有三个元素的整型数组D)定义了一个名为pt的指针变量,它可以指向每行有三个整数元素的二维数组(28)设有定义double a[10],*s=a;,以下能够代表数组元素a[3]的是A)(*s)[3]B)*(s+3)C)*s[3]D)*s+3(29)有以下程序#include(stdio.h)main(){int a[5]={1,2,3,4,5},b[5]={O,2,1,3,0},i,s=0;for(i=0;i<5;i++) s=s+a[b[i]]);printf("%d\n", s);}程序运行后的输出结果是A)6B)10C)11D)15(30)有以下程序#includemain(){int b [3][3]={O,1,2,0,1,2,O,1,2},i,j,t=1;for(i=0;i<3;i++)for(j=ij<=1;j++) t+=b[i][b[j][i]];printf("%d\n",t);}程序运行后的输出结果是A)1B)3C)4D)9(31)若有以下定义和语句char s1[10]="abcd!",*s2="\n123\\";printf("%d %d\n", strlen(s1),strlen(s2));则输出结果是A)5 5B)10 5C)10 7D)5 8(32)有以下程序#include#define N 8void fun(int *x,int i){*x=*(x+i);}main(){int a[N]={1,2,3,4,5,6,7,8},i;fun(a,2);for(i=O;i<>{printf("%d",a[i]);}printf("\n");}程序运行后的输出结果是A)1313B)2234C)3234D)1234(33)有以下程序#includeint f(int t[],int n);main{ int a[4]={1,2,3,4},s;s=f(a,4); printf("%d\n",s);}int f(int t[],int n){ if(n>0) return t[n-1]+f(t,n-1); else return 0;}程序运行后的输出结果是A)4B)1OC)14D)6(34)有以下程序#includeint fun(){ static int x=1;x*2; return x;}main(){int i,s=1,for(i=1;i<=2;i++) s=fun(); printf("%d\n",s);}程序运行后的输出结果是A)OB)1C)4D)8(35)有以下程序#include#define SUB(a) (a)-(a)main(){ int a=2,b=3,c=5,d;d=SUB(a+b)*c;printf("%d\n",d);}程序运行后的输出结果是A)0B)-12C)-20D)10(36)设有定义:struct complex{ int real,unreal;} data1={1,8},data2;则以下赋值语句中错误的是A)data2=data1;B)data2=(2,6);C)data2.real=data1.real;D)data2.real=data1.unreal;(37)有以下程序#include#includestruct A{ int a; char b[10]; double c;};void f(struct A t);main(){ struct A a={1001,"ZhangDa",1098.0};f(a); printf("%d,%s,%6.1f\n",a.a,a.b,a.c);}void f(struct A t){ t.a=1002; strcpy(t.b,"ChangRong");t.c=1202.0;} 程序运行后的输出结果是A)1001,zhangDa,1098.0B)1002,changRong,1202.0C)1001,ehangRong,1098.OD)1002,ZhangDa,1202.0(38)有以下定义和语句struct workers{ int num;char name[20];char c;struct{int day; int month; int year;}s;};struct workers w,*pw;pw=&w;能给w中year成员赋1980的语句是A)*pw.year=198O;B)w.year=1980;C)pw->year=1980;D)w.s.year=1980;(39)有以下程序#includemain(){ int a=2,b=2,c=2;printf("%d\n",a/b&c);}程序运行后的输出结果是A)OB)1C)2D)3(40)有以下程序#includemain(){ FILE *fp;char str[10];fp=fopen("myfile.dat","w");fputs("abc",fp);fclose(fp);fpfopen("myfile.data","a++");fprintf(fp,"%d",28);rewind(fp);fscanf(fp,"%s",str); puts(str);fclose(fp);}程序运行后的输出结果是A)abcB) 28cC) abc28D)因类型不一致而出错二、填空题(1)一个队列的初始状态为空。