计算机等级考试C笔试复习资料
- 格式:doc
- 大小:145.00 KB
- 文档页数:12
生命中,不断地有人离开或进入。
于是,看见的,看不见的;记住的,遗忘了。
生命中,不断地有得到和失落。
于是,看不见的,看见了;遗忘的,记住了。
然而,看不见的,是不是就等于不存在?记住的,是不是永远不会消失?第一章数据结构与算法经过对部分考生的调查以及对近年真题的总结分析,笔试部分经常考查的是算法复杂度、数据结构的概念、栈、二叉树的遍历、二分法查找,读者应对此部分进行重点学习。
详细重点学习知识点:1.算法的概念、算法时间复杂度及空间复杂度的概念2.数据结构的定义、数据逻辑结构及物理结构的定义3.栈的定义及其运算、线性链表的存储方式4.树与二叉树的概念、二叉树的基本性质、完全二叉树的概念、二叉树的遍历5.二分查找法6.冒泡排序法1.1算法考点1 算法的基本概念考试链接:考点1在笔试考试中考核的几率为30%,主要是以填空题的形式出现,分值为2分,此考点为识记内容,读者还应该了解算法中对数据的基本运算。
计算机解题的过程实际上是在实施某种算法,这种算法称为计算机算法。
1.算法的基本特征:可行性、确定性、有穷性、拥有足够的情报。
2.算法的基本要素:(1)算法中对数据的运算和操作一个算法由两种基本要素组成:一是对数据对象的运算和操作;二是算法的控制结构。
在一般的计算机系统中,基本的运算和操作有以下4类:算术运算、逻辑运算、关系运算和数据传输。
(2)算法的控制结构:算法中各操作之间的执行顺序称为算法的控制结构。
描述算法的工具通常有传统流程图、N-S结构化流程图、算法描述语言等。
一个算法一般都可以用顺序、选择、循环3种基本控制结构组合而成。
考点2 算法复杂度考试链接:考点2在笔试考试中,是一个经常考查的内容,在笔试考试中出现的几率为70%,主要是以选择的形式出现,分值为2分,此考点为重点识记内容,读者还应该识记算法时间复杂度及空间复杂度的概念。
1.算法的时间复杂度算法的时间复杂度是指执行算法所需要的计算工作量。
同一个算法用不同的语言实现,或者用不同的编译程序进行编译,或者在不同的计算机上运行,效率均不同。
全国计算机等级考试二级C语言考试复习资料及复习计划一、C语言的特点C语言是近年来非常流行的语言,很多人宁愿放弃已经熟悉的其他语言而改用C语言,其原因是C语言有优于其他语言的一系列特点。
下面是C语言的主要特点: (1)语言简洁、紧凑,并且使用方便、灵活;(2)运算符丰富;(3)数据结构丰富;(4)具有结构化的控制语句;(5)语法限制不太严格,使程序设计比较自由; (6)C语言允许用户直接访问物理地址,能进行位(bit)操作,可以直接对硬件进行操作。
二、源程序的书写规则C语言的书写规则。
C语言书写格式自由,一行内可以写几个语句,一个语句也可以分写在多行上。
C程序没有行号,每个语句和数据定义的最后必须有一个分号。
C语言中分号是语句中不可少的,即使是程序中的最后一个语句也应该包含分号。
C语言中的注释可以用″/*″用″*/″结束,注释可以在任何允许插入空格符的地方插入。
C语言中注释不允许嵌套,注释可以用西文,也可以用中文。
三、C语言的风格由于C语言对语法限制不太严格,为了保证程序的准确性和可读性,建议在书写程序采用阶梯缩进格式。
也就是按如下格式书写C语言程序:**********;*****(){**********;********;{******;......}*********;}概括起来,C语言程序具有如下的风格:①C语言程序的函数具体模块结构风格,使得程序整体结构清晰、层次清楚,为模块化程序设计提供了强有力的支持。
②C语言的源程序的扩展名都是.C。
③C语言中的注释格式为:/*注释内容*//与*之间不允许有空格,注释部分允许出现在程序中的任何位置。
④C语言中的所有语句都必须以分号“;”结束一、程序的构成尽管C程序的内容千变万化,但是它们的构成都是一致的,一个完整的C源程序的格式可以如下表示: 编译预处理主函数()函数()..函数()从上面中可以看出,一个C源程序实际上就是若干函数的集合,这些函数中有一个是程序的主函数,任何C 的源程序执行时,都是从主函数开始执行的,其它的函数最终必将被这个主函数所调用。
计算机二级考试c语言计算机二级考试是一项旨在测试考生基本程序设计能力和C 语言知识的考试。
以下是一些参考内容,以帮助考生备考。
一、基本概念和语法要点(约100字)1. C语言基本概念:变量、常量、数据类型、运算符、控制语句等。
2. C语言语法要点:函数定义和调用、循环语句、条件语句、数组、指针、结构体等。
二、程序结构和函数(约100字)1. C程序结构:包括头文件引用、全局变量、主函数等。
2. 函数:函数的定义和调用、参数传递、返回值等。
三、数组和字符串(约100字)1. 数组:一维数组和二维数组的定义和使用、数组排序和查找算法。
2. 字符串:字符串的定义、输入输出、拼接、比较、查找等操作。
四、指针和动态内存分配(约100字)1. 指针:指针变量的定义、取值和赋值、指针和数组、指针和函数等。
2. 动态内存分配:动态内存分配函数malloc、free的使用,内存泄漏的问题。
五、文件操作和预处理指令(约100字)1. 文件操作:文件的打开和关闭、读写文件、文件指针的移动等。
2. 预处理指令:宏定义、条件编译等。
六、综合题(约100字)综合题一般会考察考生对所学知识的综合运用能力,例如要求编写一个简单的程序解决实际问题,或者给出一段代码要求分析输出结果等。
七、考试技巧和注意事项(约100字)1. 理解题意:仔细阅读题目要求,确保理解题目意思,避免答非所问。
2. 充分练习:多写代码,熟悉C语言的基本语法和常见的编程模式。
3. 注意细节:考试时要注意括号的匹配、变量的命名规范、循环的边界条件等细节问题,避免简单的语法错误。
通过对以上内容的学习和练习,考生可以全面提升自己的C 语言编程能力,更好地应对计算机二级考试。
希望以上参考内容对考生备考有所帮助。
计算机水平考试 (试题1)一. 单项选择题1. 按电子元器件分类,第二代计算机主要是采用_________作为逻辑开关元件。
A.电子管B.中小规模集成电路C.晶体管D.大规模集成电路2. 在下列各种进制的数据中,最大的数是__________。
A.(5F)16B.(88)10C.(136)8D.(1011101)23. 冯.诺依曼原理主要是指___________。
A.运算的精确度B.存储程序和自动控制C.高速度运算能力D.智能化体系结构4. 以下关于计算机语言描述,错误的是__________。
A.在计算机语言中,汇编语言属于低级语言B.FoPro 2.5b for windows 语言、C语言、Fortran 90语言均属于高级语言C.机器语言可以被计算机直接执行D.所有计算机语言程序都必须被编译后才能在计算机上运行5. 以下_________是多媒体计算机必备的设备。
A.视频卡B.打印机C.声卡D.扫描仪6.通常说硬盘的容量为80G,指的是___________。
A.80G bitB.80G byteC.80G个字D.80000个字7.在windows98中相同磁盘不同文件夹之间的文件复制操作可以___________。
A.直接用鼠标将选定文件拖到目标文件夹B.按住Ctrl键后用鼠标将选定文件拖到目标文件夹中C.按住Alt键后用鼠标将选定文件拖到目标文件夹中D.按住shift键后用鼠标将选定文件拖到目标文件夹中8.在windows98中,利用“回收站”可恢复__________上被误删除的文件。
A.硬盘B.软盘C.内存D.光盘9.以下正确的E-mail地址是____________。
B. @ C. spks@ D. @10. 发现软盘有文件已经感染上病毒,以下不能清除病毒的方法是___________。
A.将软盘快速格式化B.用有效的杀毒软件清除该软盘中的病毒C.将软盘全面格式化D.将软盘上所有文件移到硬盘中11. 以下选项中合法的用户标识符是___________。
全国计算机等级考试《二级C语言程序设计》复习全书【核心讲义+历年真题详解]最新资料,WORD格式,可编辑修改!目录第一部分备考指南......................................................第1章考试概述....................................................第2章复习技巧.................................................... 第二部分核心讲义......................................................【公共基础知识】....................................................第1章数据结构与算法..........................................第2章程序设计基础............................................第3章软件工程基础............................................第4章数据库设计基础..........................................【C语言程序设计】..................................................第1章程序设计基本概念........................................第2章C程序设计的初步知识....................................第3章顺序结构................................................第4章选择结构................................................第5章循环结构................................................第6章字符型数据..............................................第7章函数..................................................第8章地址和指针..............................................第9章数组..................................................第10章字符串.................................................第11章对函数的进一步讨论.....................................第12章C语言中用户标识符的作用域和存储类 .....................第13章编译预处理和动态存储分配...............................第14章结构体、共用体和用户定义类型...........................第15章位运算.................................................第16章文件................................................. 第三部分历年真题及详解................................................全国计算机等级考试《二级C语言程序设计》真题及详解(一)............全国计算机等级考试《二级C语言程序设计》真题及详解(二)............全国计算机等级考试《二级C语言程序设计》真题及详解(三)............全国计算机等级考试《二级C语言程序设计》真题及详解(四)............全国计算机等级考试《二级C语言程序设计》真题及详解(五)............全国计算机等级考试《二级C语言程序设计》真题及详解(六)............ 第四部分模拟试题及讲解................................................全国计算机等级考试《二级C语言程序设计》模拟试题及详解(一)........全国计算机等级考试《二级C语言程序设计》模拟试题及详解(二)........第一部分备考指南第1章考试概述一、考试简介全国计算机等级考试(National Computer Rank Examination,简称NCRE),是经原国家教育委员会(现教育部)批准,由教育部考试中心主办,面向社会,用于考查应试人员计算机应用知识与技能的全国性计算机水平考试体系。
计算机二级c语言笔试题库及答案一、选择题(每题2分,共20分)1. 在C语言中,以下哪个关键字用于定义一个结构体?A. structB. unionC. enumD. typedef答案:A2. 以下哪个函数用于将字符串s2连接到字符串s1的末尾?A. strcat(s1, s2)B. strcpy(s1, s2)C. strncpy(s1, s2, n)D. strcmp(s1, s2)答案:A3. 在C语言中,以下哪个运算符用于取地址?A. *B. &C. %D. #答案:B4. 若有以下定义:int a[5] = {1, 2, 3, 4, 5}; 则表达式a[0] +a[2] + a[4]的值是多少?A. 8B. 10C. 12D. 15答案:C5. 在C语言中,以下哪个函数用于将一个字符串复制到另一个字符串?A. strcat()B. strcpy()C. strncpy()D. strcmp()答案:B6. 在C语言中,以下哪个关键字用于声明一个函数?A. intB. voidC. returnD. function答案:A7. 在C语言中,以下哪个关键字用于声明一个变量?A. varB. letC. intD. var答案:C8. 在C语言中,以下哪个函数用于将一个整数转换为字符串?A. atoi()B. itoa()C. sprintf()D. strcpy()答案:B9. 在C语言中,以下哪个函数用于打开一个文件?A. fopen()B. fclose()C. fread()D. fwrite()答案:A10. 在C语言中,以下哪个关键字用于定义一个指针?A. pointerB. ptrC. *D. ref答案:C二、填空题(每题2分,共20分)1. 在C语言中,________关键字用于定义一个宏。
答案:#define2. 在C语言中,________关键字用于定义一个枚举类型。
计算机二级C语言资料计算机二级C语言考试是一项重要的职业资格认证考试,其通过率较低,因此备考该考试需要相应的复习资料和学习方法。
本文将介绍一些常用的计算机二级C语言资料和备考方法,帮助大家更好地备考该考试。
一、教材和练习册教材和练习册是备考计算机二级C语言考试的基本资料。
计算机二级C语言考试的教材有很多种,其中比较受欢迎的有《C语言程序设计》、《C语言经典100例》和《C语言从入门到精通》等。
这些教材的内容质量都比较稳定,涵盖了计算机二级C语言考试的考试内容,但是考生需要根据自己的情况选择最适合自己的教材。
同时,考生在选择教材时,也需要注意不要选择过时的教材。
练习册也是备考计算机二级C语言考试的重要资料。
练习册的题目数量比较多,覆盖了计算机二级C语言考试的所有知识点。
考生可以通过大量的练习,熟悉计算机二级C语言考试的考试形式和题型,提高自己的答题速度与准确率。
二、在线视频计算机二级C语言考试的在线视频也是备考该考试的重要资料之一。
在线视频可以通过互联网直接观看,内容涵盖范围广泛,考生可以根据自己的需要和时间进行选择观看。
常用的在线视频网站有慕课网、哔哩哔哩等。
通过在线视频的观看,考生可以更加深入地了解计算机二级C语言考试的知识点,掌握计算机二级C语言程序设计方法和技巧,熟悉计算机二级C语言考试的题型和难点。
同时,考生还可以通过在线视频与其他考生交流,互相学习,提高自己的备考效率。
三、考试模拟软件考试模拟软件是备考计算机二级C语言考试的重要辅助资料之一。
考试模拟软件可以模拟真实的考试环境,提供不同难度的题目和答案,帮助考生熟悉各种考试形式和题型,提高考试效果和水平。
常见的考试模拟软件有“模拟考试大师”和“模拟伯乐”等。
通过考试模拟软件的使用,考生可以更加全面地了解自己的备考情况,弥补自己的知识漏洞,提高自己的考试技能和答题速度,最终达到备考目的。
四、备考方法备考计算机二级C语言考试的过程中,同样需要掌握一些有效的备考方法。
全国计算机等级考试二级C语言复习资料沈阳化工大学目录第一章 C语言基础知识—————————————— 1 第二章顺序结构————————————————— 7 第三章选择结构————————————————— 12 第四章循环结构————————————————— 19 第五章字符型数据位运算———————————— 26 第六章函数——————————————————— 28 第七章指针——————————————————— 35 第八章数组——————————————————— 37 第九章数组与指针———————————————— 42 第十章字符串—————————————————— 47全国计算机二级C语言考试复习讲义第一章 C语言基础知识一、教学讲点1.C语言的基本构成和格式#include “stdio.h”main(){int a,b,sum;/* 定义变量*/a=10; /*把整数10赋值给变量a*/b=20; /*把整数20赋值给变量b*/sum=a+b; /*把两数之和赋值给变量 sum*/printf(“a=%d,b=%d,sum=%d\n”,a,b,s um);/*输出计算结果*/}(1).C程序由函数组成,一个程序必须且只能有一个主函数(main()),C程序总是从主函数开始执行,在主函数中结束。
(2).定义函数时函数名后必须有一对小括号,函数体必须放在一对花括号内,在函数体中,函数体有两个部分:定义部分和执行部分。
定义语句必须出现在执行语句之前,我们先定义了a,b,sum,然后才给它们赋值。
(3).C语言中每条语句都以分号“;”结束,分号时C语句的一部分。
即使是程序的最后一个语句也不例外。
分号是语句结束的标志。
(4). 一行可以写多条语句,一条语句也可以分在多行上写,但是,不能将一个整体分开。
例如:i nt 是错误的,而int正确。
(5). C语言的注释必须放在“/*”和“*/”之间,“/”和“*”之间不允许有空格。
计算机二级C++考试复习资料全一、C++概述一发展历史1980年;Bjarne Stroustrup博士开始着手创建一种模拟语言;能够具有面向对象的程序设计特色..在当时;面向对象编程还是一个比较新的理念;Stroustrup博士并不是从头开始设计新语言;而是在C语言的基础上进行创建..这就是C++语言..1985年;C++开始在外面慢慢流行..经过多年的发展;C++已经有了多个版本..为次;ANSI和ISO的联合委员会于1989年着手为C++制定标准..1994年2月;该委员会出版了第一份非正式草案;1998年正式推出了C++的国际标准..二C和C++C++是C的超集;也可以说C是C++的子集;因为C先出现..按常理说;C++编译器能够编译任何C程序;但是C和C++还是有一些小差别..例如C++增加了C不具有的关键字..这些关键字能作为函数和变量的标识符在C程序中使用;尽管C++包含了所有的C;但显然没有任何C++编译器能编译这样的C程序..C程序员可以省略函数原型;而C++不可以;一个不带参数的C函数原型必须把void 写出来..而C++可以使用空参数列表..C++中new和delete是对内存分配的运算符;取代了C中的malloc和free..标准C++中的字符串类取代了C标准C函数库头文件中的字符数组处理函数..C++中用来做控制态输入输出的iostream类库替代了标准C中的stdio函数库..C++中的try/catch/throw异常处理机制取代了标准C中的setjmp和longjmp函数..二、关键字和变量C++相对与C增加了一些关键字;如下:typename bool dynamic_cast mutable namespacestatic_cast using catch explicit newvirtual operator false private templatevolatile const protected this wchar_tconst_cast public throw friend truereinterpret_cast trybitor xor_e and_eq compl or_eqnot_eq bitand在C++中还增加了bool型变量和wchar_t型变量:布尔型变量是有两种逻辑状态的变量;它包含两个值:真和假..如果在表达式中使用了布尔型变量;那么将根据变量值的真假而赋予整型值1或0..要把一个整型变量转换成布尔型变量;如果整型值为0;则其布尔型值为假;反之如果整型值为非0;则其布尔型值为真..布儿型变量在运行时通常用做标志;比如进行逻辑测试以改变程序流程..#include iostream.hint main{bool flag;flag=true;ifflag cout< return 0;}C++中还包括wchar_t数据类型;wchar_t也是字符类型;但是是那些宽度超过8位的数据类型..许多外文字符集所含的数目超过256个;char字符类型无法完全囊括..wchar_t 数据类型一般为16位..标准C++的iostream类库中包括了可以支持宽字符的类和对象..用wout替代cout 即可..#include iostream.hint main{wchar_t wc;wc='b';wout< wc='y';wout< wc='e';wout< return 0;}说明一下:某些编译器无法编译该程序不支持该数据类型..三、强制类型转换有时候;根据表达式的需要;某个数据需要被当成另外的数据类型来处理;这时;就需要强制编译器把变量或常数由声明时的类型转换成需要的类型..为此;就要使用强制类型转换说明;格式如下:int* iptr=int* &table;表达式的前缀int*就是传统C风格的强制类型转换说明typecast;又可称为强制转换说明cast..强制转换说明告诉编译器把表达式转换成指定的类型..有些情况下强制转换是禁用的;例如不能把一个结构类型转换成其他任何类型..数字类型和数字类型、指针和指针之间可以相互转换..当然;数字类型和指针类型也可以相互转换;但通常认为这样做是不安全而且也是没必要的..强制类型转换可以避免编译器的警告..long int el=123;short i=int el;float m=34.56;int i=int m;上面两个都是C风格的强制类型转换;C++还增加了一种转换方式;比较一下上面和下面这个书写方式的不同:long int el=123;short i=int el;float m=34.56;int i=int m;使用强制类型转换的最大好处就是:禁止编译器对你故意去做的事发出警告..但是;利用强制类型转换说明使得编译器的类型检查机制失效;这不是明智的选择..通常;是不提倡进行强制类型转换的..除非不可避免;如要调用malloc函数时要用的void型指针转换成指定类型指针..四、标准输入输出流在C语言中;输入输出是使用语句scanf和printf来实现的;而C++中是使用类来实现的..#include iostream.hmain //C++中main函数默认为int型;而C语言中默认为void型..{cout<cin>>a; /*输入一个数值*/cout< return 0;}cin;cout;endl对象;他们本身并不是C++语言的组成部分..虽然他们已经是ANSI标准C++中被定义;但是他们不是语言的内在组成部分..在C++中不提供内在的输入输出运算符;这与其他语言是不同的..输入和输出是通过C++类来实现的;cin和cout是这些类的实例;他们是在C++语言的外部实现..在C++语言中;有了一种新的注释方法;就是‘//’;在该行//后的所有说明都被编译器认为是注释;这种注释不能换行..C++中仍然保留了传统C语言的注释风格/*……*/..C++也可采用格式化输出的方法:#include iostream.hint main{int a;cout<cin>>a;cout<五、函数重载在C++中;允许有相同的函数名;不过它们的参数类型不能完全相同;这样这些函数就可以相互区别开来..而这在C语言中是不允许的..1.参数个数不同#include iostream.hvoid aint;int;void aint;int main{a5;a6;7;return 0;}void aint i{cout< }void aint i;int j{cout< }2.参数格式不同#include iostream.hvoid aint;int;void aint;float;{a5;6;a6;7.0;return 0;}void aint i;int j{cout< }void aint i;float j{cout< }六、变量作用域C++语言中;允许变量定义语句在程序中的任何地方;只要在是使用它之前就可以;而C语言中;必须要在函数开头部分..而且C++允许重复定义变量;C语言也是做不到这一点的..看下面的程序:#include iostream.hint a;int main{cin>>a;forint i=1;i<=10;i++ //C语言中;不允许在这里定义变量{static int a=0; //C语言中;同一函数块;不允许有同名变量a+=i;cout<<::a<< < }return 0;}七、new和delete运算符在C++语言中;仍然支持malloc和free来分配和释放内存;同时增加了new和delete 来管理内存..1.为固定大小的数组分配内存#include iostream.hint main{int *birthday=new int3;birthday0=6;birthday1=24;birthday2=1940;cout< < delete birthday; //注意这儿return 0;}在删除数组时;delete运算符后要有一对方括号..2.为动态数组分配内存#include iostream.h#include stdlib.hint main{int size;cin>>size;int *array=new intsize;forint i=0;i arrayi=rand;fori=0;i cout<<'\n'< delete array;return 0;}八、引用型变量在C++中;引用是一个经常使用的概念..引用型变量是其他变量的一个别名;我们可以认为他们只是名字不相同;其他都是相同的..1.引用是一个别名C++中的引用是其他变量的别名..声明一个引用型变量;需要给他一个初始化值;在变量的生存周期内;该值不会改变..& 运算符定义了一个引用型变量:int a;int& b=a;先声明一个名为a的变量;它还有一个别名b..我们可以认为是一个人;有一个真名;一个外号;以后不管是喊他a还是b;都是叫他这个人..同样;作为变量;以后对这两个标识符操作都会产生相同的效果..#include iostream.hint main{int a=123;int& b=a;cout< a++;cout< b++;cout< return 0;}2.引用的初始化和指针不同;引用变量的值不可改变..引用作为真实对象的别名;必须进行初始化;除非满足下列条件之一:1 引用变量被声明为外部的;它可以在任何地方初始化2 引用变量作为类的成员;在构造函数里对它进行初始化3 引用变量作为函数声明的形参;在函数调用时;用调用者的实参来进行初始化3.作为函数形参的引用引用常常被用作函数的形参..以引用代替拷贝作为形参的优点:引用避免了传递大型数据结构带来的额外开销引用无须象指针那样需要使用*和->等运算符#include iostream.hvoid func1s p;void func2s& p;struct s{int n;char text10;};int main{static s str={123;China};func1str;func2str;return 0;}void func1s p{cout< cout< }void func2s& p{cout< cout< }从表面上看;这两个函数没有明显区别;不过他们所花的时间却有很大差异;func2函数所用的时间开销会比func2函数少很多..它们还有一个差别;如果程序递归func1;随着递归的深入;会因为栈的耗尽而崩溃;但func2没有这样的担忧..4.以引用方式调用当函数把引用作为参数传递给另一个函数时;被调用函数将直接对参数在调用者中的拷贝进行操作;而不是产生一个局部的拷贝传递变量本身是这样的..这就称为以引用方式调用..把参数的值传递到被调用函数内部的拷贝中则称为以传值方式调用..#include iostream.hvoid displayconst Date&;const char*;void swapperDate&;Date&;struct Date{int month;day;year;};int main{static Date now={2;23;90};static Date then={9;10;60};displaynow;Now: ;displaythen;Then: ;swappernow;then;displaynow;Now: ;displaythen;Then: ;return 0;}void swapperDate& dt1;Date& dt2Date save;save=dt1;dt1=dt2;dt2=save;}void displayconst Date& dt;const char *s{cout< cout< }5.以引用作为返回值#include iostream.hstruct Date{int month;day;year;};Date birthdays={{12;12;60};{10;25;85};{5;20;73};};const Date& getdateint n{return birthdaysn-1;}int main{int dt=1;whiledt=0{cout< cin>>dt;ifdt>0 && dt<4{const Date& bd=getdatedt;cout< }}return 0;}程序都很简单;就不讲解了C++辅导笔记:类的设计、构造函数和析构函数一、类的设计1.类的声明class 类名private: //私有...public: //公有...};2.类的成员一般在C++类中;所有定义的变量和函数都是类的成员..如果是变量;我们就叫它数据成员如果是函数;我们就叫它成员函数..3.类成员的可见性private和public访问控制符决定了成员的可见性..由一个访问控制符设定的可访问状态将一直持续到下一个访问控制符出现;或者类声明的结束..私有成员仅能被同一个类中的成员函数访问;公有成员既可以被同一类中的成员函数访问;也可以被其他已经实例化的类中函数访问..当然;这也有例外的情况;这是以后要讨论的友元函数..类中默认的数据类型是private;结构中的默认类型是public..一般情况下;变量都作为私有成员出现;函数都作为公有成员出现..类中还有一种访问控制符protected;叫保护成员;以后再说明..4.初始化在声明一个类的对象时;可以用圆括号包含一个初始化表..看下面一个例子:#include iostream.hclass Box{private:int height;width;depth; //3个私有数据成员public:Boxint;int;int;~Box;int volume; //成员函数};Box::Boxint ht;int wd;int dp{height=ht;width=wd;depth=dp;}Box::~Box{//nothing}int Box::volume{return height*width*depth;}int main{Box thisbox3;4;5; //声明一个类对象并初始化cout< return 0;}当一个类中没有private成员和protected成员时;也没有虚函数;并且不是从其他类中派生出来的;可以用{}来初始化..以后再讲解5.内联函数内联函数和普通函数的区别是:内联函数是在编译过程中展开的..通常内联函数必须简短..定义类的内联函数有两种方法:一种和C语言一样;在定义函数时使用关键字inline..如:inline int Box::volume{return height*width*depth;}还有一种方法就是直接在类声明的内部定义函数体;而不是仅仅给出一个函数原型..我们把上面的函数简化一下:#include iostream.hclass Box{private:int height;width;depth;public:Boxint ht;int wd;int dp{height=ht;width=wd;depth=dp;}~Box;int volume{return height*width*depth;}};int main{Box thisbox3;4;5; //声明一个类对象并初始化cout< return 0;}这样;两个函数都默认为内联函数了..二、构造函数什么是构造函数通俗的讲;在类中;函数名和类名相同的函数称为构造函数..上面的Box函数就是构造函数..C++允许同名函数;也就允许在一个类中有多个构造函数..如果一个都没有;编译器将为该类产生一个默认的构造函数;这个构造函数可能会完成一些工作;也可能什么都不做..绝对不能指定构造函数的类型;即使是void型都不可以..实际上构造函数默认为void 型..当一个类的对象进入作用域时;系统会为其数据成员分配足够的内存;但是系统不一定将其初始化..和内部数据类型对象一样;外部对象的数据成员总是初始化为0..局部对象不会被初始化..构造函数就是被用来进行初始化工作的..当自动类型的类对象离开其作用域时;所站用的内存将释放回系统..看上面的例子;构造函数Box函数接受三个整型擦黑素;并把他们赋值给立方体对象的数据成员..如果构造函数没有参数;那么声明对象时也不需要括号..1.使用默认参数的构造函数当在声明类对象时;如果没有指定参数;则使用默认参数来初始化对象..#include iostream.hclass Box{private:int height;width;depth;public:Boxint ht=2;int wd=3;int dp=4{height=ht;width=wd;depth=dp;}~Box;int volume{return height*width*depth;}};int main{Box thisbox3;4;5; //初始化Box defaulbox; //使用默认参数cout< cout<return 0;}2.默认构造函数没有参数或者参数都是默认值的构造函数称为默认构造函数..如果你不提供构造函数;编译器会自动产生一个公共的默认构造函数;这个构造函数什么都不做..如果至少提供一个构造函数;则编译器就不会产生默认构造函数..3.重载构造函数一个类中可以有多个构造函数..这些构造函数必须具有不同的参数表..在一个类中需要接受不同初始化值时;就需要编写多个构造函数;但有时候只需要一个不带初始值的空的Box对象..#include iostream.hclass Box{private:int height;width;depth;public:Box { //nothing }Boxint ht=2;int wd=3;int dp=4{height=ht;width=wd;depth=dp;}~Box;int volume{return height*width*depth;}};int main{Box thisbox3;4;5; //初始化Box otherbox;otherbox=thisbox;cout< return 0;}这两个构造函数一个没有初始化值;一个有..当没有初始化值时;程序使用默认值;即2;3;4..但是这样的程序是不好的..它允许使用初始化过的和没有初始化过的Box对象;但它没有考虑当thisbox给otherbox赋值失败后;volume该返回什么..较好的方法是;没有参数表的构造函数也把默认值赋值给对象..class Box{int height;width;depth;public:Box{height=0;width=0;depth=0;}Boxint ht;int wd;int dp{height=ht;width=wd;depth=dp;}int volume{return height*width*depth;}};这还不是最好的方法;更好的方法是使用默认参数;根本不需要不带参数的构造函数..class Box{int height;width;depth;public:Boxint ht=0;int wd=0;int dp=0{height=ht;width=wd;depth=dp;}int volume{return height*width*depth;}};三、析构函数当一个类的对象离开作用域时;析构函数将被调用系统自动调用..析构函数的名字和类名一样;不过要在前面加上~ ..对一个类来说;只能允许一个析构函数;析构函数不能有参数;并且也没有返回值..析构函数的作用是完成一个清理工作;如释放从堆中分配的内存..我们也可以只给出析构函数的形式;而不给出起具体函数体;其效果是一样的;如上面的例子..但在有些情况下;析构函数又是必需的..如在类中从堆中分配了内存;则必须在析构函数中释放二级C++辅导笔记:类的转换C++的内部数据类型遵循隐式类型转换规则..假设某个表达市中使用了一个短整型变量;而编译器根据上下文认为这儿需要是的长整型;则编译器就会根据类型转换规则自动把它转换成长整型;这种隐式转换出现在赋值、参数传递、返回值、初始化和表达式中..我们也可以为类提供相应的转换规则..对一个类建立隐式转换规则需要构造一个转换函数;该函数作为类的成员;可以把该类的对象和其他数据类型的对象进行相互转换..声明了转换函数;就告诉了编译器;当根据句法判定需要类型转换时;就调用函数..有两种转换函数..一种是转换构造函数;另一种是成员转换函数..需要采用哪种转换函数取决于转换的方向..一、转换构造函数当一个构造函数仅有一个参数;且该参数是不同于该类的一个数据类型;这样的构造函数就叫转换构造函数..转换构造函数把别的数据类型的对象转换为该类的一个对象..和其他构造函数一样;如果声明类的对象的初始化表同转换构造函数的参数表相匹配;该函数就会被调用..当在需要使用该类的地方使用了别的数据类型;便宜器就会调用转换构造函数进行转换..#include iostream.h#include time.h#include stdio.hclass Date{int mo; da; yr;public:Datetime_t;void display;};void Date::display{char year5;ifyr<10sprintfyear;0%d;yr;elsesprintfyear;%d;yr;cout< }Date::Datetime_t now{tm* tim=localtime&now;da=tim->tm_mday;mo=tim->tm_mon+1;yr=tim->tm_year;ifyr>=100 yr-=100;}int main{time_t now=time0;Date dtnow;dt.display;return 0;}本程序先调用time函数来获取当前时间;并把它赋给time_t对象;然后程序通过调用Date类的转换构造函数来创建一个Date对象;该对象由time_t对象转换而来..time_t 对象先传递给localtime函数;然后返回一个指向tm结构time.h文件中声明的指针;然后构造函数把结构中的日月年的数值拷贝给Date对象的数据成员;这就完成了从time_t对象到Date对象的转换..二、成员转换函数成员转换函数把该类的对象转换为其他数据类型的对象..在成员转换函数的声明中要用到关键字operator..这样声明一个成员转换函数:operator aaa;在这个例子中;aaa就是要转换成的数据类型的说明符..这里的类型说明符可以是任何合法的C++类型;包括其他的类..如下来定义成员转换函数;Classname::operator aaa类名标识符是声明了该函数的类的类型说明符..上面定义的Date类并不能把该类的对象转换回time_t型变量;但可以把它转换成一个长整型值;计算从2000年1月1日到现在的天数..#include iostream.hclass Date{int mo;da;yr;public:Dateint m;int d;int y {mo=m; da=d; yr=y;}operator int; //声明};Date::operator int //定义{static int dys={31;28;31;30;31;30;31;31;30;31;30;31};int days=yr-2000;days*=365;days+=yr-2000/4;forint i=0;i days+=dysi;days+=da;return days;}int main{Date now12;24;2003;int since=now;cout< return 0;}三、类的转换上面两个例子都是C++类对象和内部数据对象之间的相互转换..也可以定义转换函数来实现两个类对象之间的相互转换..#include iostream.hclass CustomDate{public:int da; yr;CustomDateint d=0;int y=0 {da=d; yr=y;}void display{cout< }};class Date{int mo; da; yr;public:Dateint m=0;int d=0;int y=0 {mo=m; da=d; yr=y;}Dateconst CustomDate&; //转换构造函数operator CustomDate; //成员转换函数void display{cout< }};static int dys = {31;28;31;30;31;30;31;31;30;31;30;31};Date::Dateconst CustomDate& jd{yr=jd.yr;da=jd.da;formo=0;mo<11;mo++ifda>dysmo da-=dysmo;else break;mo++;}Date::operator CustomDate{CustomDate cd0;yr;forint i=0;i cd.da+=da;return cd;}int main{Date dt12;24;3;CustomDate cd;cd = dt; //调用成员转换函数cd.display;dt = cd; //调用转换构造函数dt.display;return 0;}这个例子中有两个类CustomDate和Date;CustomDate型日期包含年份和天数..这个例子没有考虑闰年情况..但是在实际构造一个类时;应该考虑到所有问题的可能性..在Date里中具有两种转换函数;这样;当需要从Date型变为CustomDate型十;可以调用成员转换函数;反之可以调用转换构造函数..不能既在Date类中定义成员转换函数;又在CustomDate类里定义转换构造函数..那样编译器在进行转换时就不知道该调用哪一个函数;从而出错.四、转换函数的调用C++里调用转换函数有三种形式:第一种是隐式转换;例如编译器需要一个Date对象;而程序提供的是CustomDate对象;编译器会自动调用合适的转换函数..另外两种都是需要在程序代码中明确给出的显式转换..C++强制类型转换是一种;还有一种是显式调用转换构造函数和成员转换函数..下面的程序给出了三中转换形式:#include iostream.hclass CustomDate{public:int da; yr;CustomDateint d=0;int y=0 {da=d; yr=y;}void display{cout< }};class Date{int mo; da; yr;public:Dateint m;int d;int y{mo=m; da=d; yr=y;}operator CustomDate;};Date::operator CustomDate{static int dys={31;28;31;30;31;30;31;31;30;31;30;31};CustomDate cd0;yr;forint i=0;i cd.da+=da;return cd;}int main{Date dt11;17;89;CustomDate cd;cd = dt;cd.display;cd = CustomDate dt;cd.display;cd = CustomDatedt;cd.display;return 0;}五、转换发生的情形上面的几个例子都是通过不能类型对象之间的相互赋值来调用转换函数;还有几种调用的可能:参数传递初始化返回值表达式语句这些情况下;都有可能调用转换函数..下面的程序不难理解;就不分析了..#include iostream.hclass CustomDate{public:int da; yr;CustomDate {}CustomDateint d;int y { da=d; yr=y;}void display{cout< }};class Date{int mo; da; yr;public:Dateint m;int d;int y { mo=m; da=d; yr=y; }operator CustomDate;};Date::operator CustomDate{static int dys={31;28;31;30;31;30;31;31;30;31;30;31};CustomDate cd0;yr;for int i=0;i cd.da+=da;return cd;}class Tester{CustomDate cd;public:explicit TesterCustomDate c { cd=c; }void display { cd.display; }};void dispdateCustomDate cd{cd.display;}CustomDate rtndate{Date dt9;11;1;return dt;}int main{Date dt12;24;3;CustomDate cd;cd = dt;cd.display;dispdatedt;Tester tsdt;ts.display;cd = rtndate;cd.display;return 0;}六、显式构造函数注意上面Tester类的构造函数前面有一个explicit修饰符..如果不加上这个关键字;那么在需要把CustomDate对象转换成Tester对象时;编译器会把该函数当作转换构造函数来调用..但是有时候;并不想把这种只有一个参数的构造函数用于转换目的;而仅仅希望用它来显式地初始化对象;此时;就需要在构造函数前加explicit..如果在声明了Tester 对象以后使用了下面的语句将导致一个错误:ts=jd; //error这个错误说明;虽然Tester类中有一个以Date型变量为参数的构造函数;编译器却不会把它看作是从Date到Tester的转换构造函数;因为它的声明中包含了explicit修饰符..七、表达式内部的转换在表达式内部;如果发现某个类型和需要的不一致;就会发生错误..数字类型的转换是很简单;这里就不举例了..下面的程序是把Date对象转换成长整型值..#include iostream.hclass Date{int mo; da; yr;public:Dateint m;int d;int y{mo=m; da=d; yr=y;}operator long;};Date::operator long{static int dys={31;28;31;30;31;30;31;31;30;31;30;31};long days=yr;days*=365;days+=yr-1900/4; //从1900年1月1日开始计算forint i=0;i days+=da;return days;}int main{Date today12;24;2003;const long ott=123;long sum=ott+today;cout< return 0;}在表达式中;当需要转换的对象可以转换成某个数字类型;或者表达式调用了作用于某个类的重载运算符时;就会发生隐式转换..运算符重载以后再学习二级C++辅导笔记:私有数据成员和友元一、私有数据成员的使用1.取值和赋值成员函数面向对象的约定就是保证所有数据成员的私有性..一般我们都是通过公有成员函数来作为公共接口来读取私有数据成员的..某些时候;我们称这样的函数为取值和赋值函数..取值函数的返回值和传递给赋值函数的参数不必一一匹配所有数据成员的类型..#include iostream.hclass Date{int mo; da; yr;public:Dateint m;int d;int y { mo=m; da=d; yr=y; }int getyear const { return yr; }void setyearint y { yr = y; }};int main{Date dt4;1;89;cout< dt.setyear97;cout< return 0;}上面的例子很简单;不分析了..要养成这样的习惯;通过成员函数来访问和改变类中的数据..这样有利于软件的设计和维护..比如;改变Date类内部数据的形式;但仍然用修改过的getyear和setyear来提供访问接口;那么使用该类就不必修改他们的代码;仅需要重新编译程序即可..2.常量成员函数注意上面的程序中getyear被声明为常量型;这样可以保证该成员函数不会修改调用他的对象..通过加上const修饰符;可以使访问对象数据的成员函数仅仅完成不会引起数据变动的那些操作..如果程序声明某个Date对象为常量的话;那么该对象不得调用任何非常量型成员函数;不论这些函数是否真的试图修改对象的数据..只有把那些不会引起数据改变的函数都声明为常量型;才可以让常量对象来调用..3.改进的成员转换函数下面的程序改进了从Date对象到CustomDate对象的成员转换函数;用取值和赋值函数取代了使用公有数据成员的做法..以前的程序代码在上一帖中#include iostream.hclass CustomDate{int da;yr;public:CustomDate {}CustomDateint d;int y { da=d; yr=y; }void display const {cout< int getday const { return da; }void setdayint d { da=d; }};class Date{int mo;da;yr;public:Dateint m;int d;int y { mo=m; da=d; yr=y; }operator CustomDate const;};Date::operator CustomDate const{static int dys = {31;28;31;30;31;30;31;31;30;31;30;31};CustomDate cd0;yr;int day=da;forint i=0;i cd.setdayday;return cd;}int main{Date dt11;17;89;CustomDate cd;cd=dt;cd.display;return 0;}注意上面的程序中Date::operator CustomDate声明为常量型;因为这个函数没有改变调用它对象的数据;尽管它修改了一个临时CustomDate对象并将其作为函数返回值.. 二、友元前面已经说过了;私有数据成员不能被类外的其他函数读取;但是有时候类会允许一些特殊的函数直接读写其私有数据成员..关键字friend可以让特定的函数或者别的类的所有成员函数对私有数据成员进行读写..这既可以维护数据的私有性;有可以保证让特定的类或函数能够直接访问私有数据..1.友元类一个类可以声明另一个类为其友元;这个友元的所有成员函数都可以读写它的私有数据..#include iostream.hclass Date;class CustomDate{int da;yr;public:CustomDateint d=0;int y=0 { da=d; yr=y; }void display const {cout< friend Date; //这儿};class Date{int mo;da;yr;public:Dateint m;int d;int y { mo=m; da=d; yr=y; }operator CustomDate;};Date::operator CustomDate{static int dys = {31;28;31;30;31;30;31;31;30;31;30;31};CustomDate cd0; yr;for int i=0;i cd.da+=da;return cd;}int main{Date dt11;17;89;CustomDate cddt;cd.display;return 0;}在上面的程序中;有这样一句friend Date; 该语句告诉编译器;Date类的所有成员函数有权访问CustomDate类的私有成员..因为Date类的转换函数需要知道CustomDate类的每个数据成员;所以真个Date类都被声明为CustomDate类的友元..2.隐式构造函数上面程序对CustomDate的构造函数的调用私有显示该类需要如下的一个转换构造函数:CustomDateDate& dt;。
计算机等级考试C语言笔试复习题一、单选题:(请选择一个正确结果)1.下列语句的输出为()int x=-1;printf("%d,%u,%O",x,x,x,);A)-1,65535,177777 B)-1,-1,-1C)-1,32767,-17777 D)-1,32768,1777772.若x,y为实数类型的变量,要判断x,y相等,最好使用下列关系表达式()A)x= =y; B)x-y= =0;C)fabs(x-y) 〈1e-8; D)labs(x-y)〈1e-8;3.若有以下的定义、说明和语句,则值为101的表达式是()。
struct cw{int a ;int *b;} *p;int x0[]={11,12},x1[]={31,32};static struct cw x[2]={100,x0,300,x1};p=x;A)*p-〉b B)p-〉aC)+ +(p->a) D)(p+ +)-〉a4.若有以下定义和语句,则输出结果是()。
char *sp="\t\b\\\0English\n";printf("%d", strlen(sp));A) 12 B)3 C)17 D)135.有如下程序void main(){ int x=23;do{ printf("%d",x--);}while(!x);}该程序的执行结果是()A)321 B)23C)不输出任何内容D)陷入死循环6.若已定义x和y为double类型,则表达式x=2, y=x+10/4的值是()A)2 B)4 C)4.0 D)4.57.要将一个整数12000分别以ASCII码文件和二进制文件形式存放,各自所占的存储空间数分别是()字节。
A)5和2 B)2和5 C)2和2 D)5和58.对于类型相同的两个指针变量之间,不可进行的运算是()A)= = B)= C)+ D)-9.s izeof(’a’+10)的值为()类型。
A)int B)float C)double D)char10.若有定义int a=3; 则执行完printf("%d",-a--);语句后a的值为()A)-3 B)2 C)-2 D)311.若有float x=2.5;y=4.7;int a=7; 则表达式x+a%3*(int) (x+y)%2/4的值为()A)4.0 B)3.0 C)2.75 D)2.512.语句printf("s=%-5.3s","computer"); 的输出结果是()A)s= com B)s=com C)s= ter D)s=ter 13.int a=3,b=4,c=5; 执行完表达式a+ +>--b&&b++>c--&&++c后,a,b,c的值分别为()A)3 4 5 B)4 3 5 C)4 4 4 D)4 4 514.int x=3,y=1; 则条件表达式x>y?1:2.3的值为()A)1 B)1.0 C)2.3 D)215.若有定义int i=2,a[10],*p=&a[i]:则与*p++等价的是()A)a[i+ +] B)a[i]+ + C)a[i] D)a[+ +i]16.以下程序的输出结果是():void main( ){ int a=5,*p1,**p2;p1=&a,p2=&p1;(*p1)+ +;printf("%d\n",**p2);}A)5 B)4 C)6 D)不确定17.以下程序的输出结果是()int x=3,y=4;void main( ){ int x,y=5;x=y+ +;printf("%d",x);}A)3 B)4 C)5 D)618.若#include后面的文件名用双引号括起来,寻找被包含文件的方式是()A)先按系统设定的标准方式查找,再在当前目录中查找B)先在当前目录中查找,再按系统设定的标准方式查找C)只在当前目录中查找D)只按系统设定的标准方式查找19.程序设计的步骤一般分为:分析问题、构造模型、设计与描述算法、编写程序、调试程序和()A)数据设计B)算法分析C)编制程序说明文档D)编译20.表达式11&10的结果用二进制表示为()。
A)11 B)3 C)1 D)1021.结构化程序语言的三种基本结构是()(A)顺序结构、选择结构、循环结构(B)递归结构、循环结构、转移结构(C)嵌套结构、递归结构、顺序结构(D)循环结构、转移结构、顺序结构22.若有以下说明和语句,请选出哪个对c数组元素的正确引用()int c[4][5],(*cp)[5]; cp=c;(A)cp+1 (B)(cp+3) (C)*(cp+1)+3 (D)*(*cp+2) 23.设有如下的程序段:char str[ ]="hello"; char *ptr; ptr=str;执行上面的程序段后,*(ptr+5)的值为( )。
(A)‘o' (B) '\0' (C)不确定的值 (D) 'o'的地址24.执行下面的程序段后,B 的值为( )。
int x=35; char z='A'; int B;B=((x&15)&&(z<'a')); (A)0(B)1(C)2(D)325.以下程序的输出结果为( )。
#include<stdio.h> main() { int i;for(i=0;i<10;i++); printf("%d",i);}(A)0 (B)123456789 (C)0123456789 (D)10 26.以下程序的输出结果是( )。
#include<stdio.h> main(){ int i=010,j=10;printf("%d,%d",++i,j--); } (A)11,10 (B)9,10(C)010,9 (D)10,927.表达式k=(12<10)?4:1?2:3的值为( )。
(A)1 (B)2(C)3(D)428.有一C 语言源程序如下:main(){ int a,b=-1;scanf("%d",&a);if(a)if(a>0)b=1;else b=0; }该程序所表示的数学函数关系是( )(A)⎪⎩⎪⎨⎧>=<-=)0(1)0(0)0(1a a a b(B) ⎪⎩⎪⎨⎧<>=-=)0(1)0(0)0(1a a a b (C) ⎪⎩⎪⎨⎧><=-=)0(1)0(0)0(1a a a b(D) ⎪⎩⎪⎨⎧=><-=)0(1)0(0)0(1a a a b29.在下列程序中,调用f(8)的值是( )int f(int n){ if(n= =1)return(1); else if(n= =2) return(2); else return(f(n-1)+f(n-2)); } (A)13(B)21(C)55(D)3430.在执行程序china.exe 时,若输入的命令行为:china enlish Beijing ,则程序执行结果为( )。
#include<stdio.h>void main(int argc, char *argv[]){ while(argc>1){ printf("%c",**++argv);argc--;}} (A)eB(B)ceB(C)china enlish Beijing (D)enlish Beijing31.如a 为int 型,则与表达或a 等价的C 语言关系表达式是( )(A )a>0 (B )a!=0(C)a= =0 (D)a>032.循环语句for(a=0,b=0;(b!=45)||(a<5);a++);的循环次数是( )(A)4(B)3(C)5(D)无数多次33.一个C 语言程序是由( )组成。
(A)一个函数 (B)一个或若干个函数 (C)一个过程 (D)一个过程或若干个过程 34.设有字符数组a ,则正确的输入语句是( )。
(A)gets('a');(B)scanf("%c",a); (C)scanf("%s",a);(D)gets("a");35.如果程序中有static char c ;则编译程序会对其自动设置初值为( )。
(A) '\n' (B) "\n" (C)0 (D) '\0'36.C 语言用( )表示逻辑真值。
(A)true(B)T(C)整型值0(D)非0整型值整数137.已知:int *p;使用“p=malloc(sizeof(int));”语句动态申请int 型的存储单元,应当使用( )。
(A)int (B)int* (C)(*int) (D)(int*) 38.在C 函数中,局部变量的隐含存储类型是( )。
(A)auto(B)static(C)register(D)extern39.C 语言中,以下叙述中错误的是( )。
(A)同一程序中,全局变量和局部变量可以同名 (B)局部变量的作用域被限定在其所定义的局部范围中(C)同一程序中,全局变量和局部变量不能同名(D)全局变量的作用域从定义处开始到本源程序文件结束40.在c语言中,函数调用时如果相应的形参和实参都是简单变量,则主调函数和被调函数之间传递数据的方式是( )。
(A)单向地址值传递(B)双向地址值传递(C)单向数值传递(D)双向数值传递41.有定义:int a[5][4],*p=a[0];,则*(p+2*4+3)等于( )。
(A)a[2][0] (B)a[2][1] (C)a[2][2](D)a[2][3]42.C语言中,一个函数调用语句为fun((el,e2,e3),(e4,e5),e6);,其实参个数为( )。
(A)3个(B)4个(C)5个(D)6个43.有如下程序,该程序的输出结果是( )main( ){ int x=1,a=0,b=0;switch(x){case 0;b++;case 1:a++case 2:a++;b++}(A)a=2,b=1 (B)a=l,b=l(C)a=l,b=0 (D)a=2,b=244.在执行语句if((x=y=2)>=x&&(x=5))y*=x;后变量x、y的值应分别为( )。