版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、复习要求:1C+语言概述(1)了解C+语言的基本符号。(2)了解C+语言的词汇(保留字、标识符、常量、运算符、标点符号等)。(3)掌握C+程序的基本框架(结构程序设计框架、面向对象程序设计框架等)。(4)能够使用Visual C+ 6.0集成开发环境编辑、编译、运行与调试程序。2数据类型、表达式和基本运算(1)掌握C+数据类型(基本类型、指针类型)及其定义方法。(2)了解C+的常量定义(整型常量、字符常量、逻辑常量、实型常量、地址常量、符号常量)。(3)掌握变量的定义与使用方法(变量的定义及初始化、全局变量、局部变量)。(4)掌握C+运算符的种类、运算优先级和结合性。(5)熟练掌握C+表达式类
2、型及求值规则(赋值运算、算术运算符和算术表达式、关系运算符和关系表达式、逻辑运算符和逻辑表达式、条件运算、指针运算、逗号表达式)。3C+的基本语句(1)掌握C+的基本语句,例如赋值语句、表达式语句、复合语句、输入、输出语句和空语句等。(2)用if语句实现分支结构。(3)用switch语句实现多分支选择结构。(4)用for语句实现循环结构。(5)用while语句实现循环结构。(6)用dowhile语句实现循环结构。(7)转向语句(goto,continue,break和return)。(8)掌握分支语句和循环语句的各种嵌套使用。4数组、指针与引用(1)掌握一维数组的定义、初始化和访问,了解多维数
3、组的定义、初始化和访问。(2)了解字符串与字符数组。(3)熟练掌握常用字符串函数(strlen,strcpy,strcat,strcmp,strstr等)。(4)掌握指针与指针变量的概念、指针与地址运算符、指针与数组。(5)掌握引用的基本概念、引用的定义与使用。5掌握函数的有关使用(1)函数的定义方法和调用方法。(2)函数的类型和返回值。(3)形式参数与实在参数,参数值的传递。(5)递归函数。(6)函数重载。(7)内联函数。(8)带有默认参数值的函数。6熟练掌握类与对象的相关知识(1)类的定义方式、数据成员、成员函数及访问权限(public,private,protected)。(2)对象和对
4、象指针的定义与使用。(3)构造函数与析构函数。(4)this指针的使用。(5)对象数组与成员对象。7掌握类的继承与派生知识(1)派生类的定义和访问权限。(2)继承基类的数据成员与成员函数。8. 了解UML的一些相关知识(1)UML的发展史,建模对象。(2)UML的四种类型事物。(3)UML的四种关系。9. 函数、运算符重载(1)掌握常用运算符重载的方法,包括成员函数重载和友元函数的重载。(2)掌握虚函数和纯虚函数的概念。 (3)在成员函数中实现自加,重载前置自加运算符,重载后置自加运算符. (4)重载加法运算函数operator+, 重载赋值运算函数operator=. (5)转换类型运算符1
5、0.多态性(1)运算符重载的运用。(2)虚函数的定义。(3)抽象类的声明。一. 填空1、#include <iostream.h>Using namespace std;int add(int a,int b);int main()int x,y,sum;cout<<"Enter two numbers:"<<'n'/在下画线处填上语句,完成用cin读入x和y cin>>x; cin>>y;sum=add(x,y);cout<<"The sum is:"<<
6、;sum<<'n'return 0;int add(int a,int b)/在下画线处填上语句,完成计算a与b的和并返回之 return a+b;2、#include <iostream.h>Using namespace std;int main()char name20;cout<<”Hello,your name:”;/在下画线处填上语句,完成将字符串输入到数组name中 cin>>name;/在下画线处填上语句,完成将name数组用cout输出 cout<<name<<endl;return 0;
7、3#include <iostream.h>Using namespace std;int mul(int x,int y) /mul函数1 return x*y; int mul(int x,int y,int z) /mul函数2 return x*y*z; void main()int a=3,b=4,c=5;/在下画线处填上语句,用于调用mul函数1cout<<a<<'*'<<b<<'='<<mul(a,b)<<endl;/在下画线处填上语句,用于调用mul函数2cout
8、<<a<<'*'<<b<<'*'<<c<<'='<< mul(a,b,c)<<endl; 4#include <iostream.h>Using namespace std;main()int *p; /声明一个整型指针变量p/在下画线处,用new关键字动态分配一个int型存储区,并将首地址赋给pp=new int;*p = 10;cout<<*p; /在下画线处填上语句,用于撤销指针p,释放p指向的存储空间delete p;r
9、eturn 0;5#include <iostream.h>main()int *p;/在画线处填上语句,用new关键字动态分配一个int型存储区,并将首地址赋给pp=new int;if (!p)cout<<"allocation failuren"return 1;/在下画线处填上语句,将p所指向的存储区赋值20*p=20;cout<<*p;/在下画线处填上语句,用于撤销指针p,释放p指向的存储空间delete p;return 0;6下列程序的输出结果是 7 。#include <iostream>using names
10、pace std;int main() int i = 5; int *p =& i;*p = 7; cout << i << endl; return 0;7下面是用来计算n的阶乘的递归函数,请将该函数的定义补充完整。(注:阶乘的定义是n!=n*(n-1)*.*2*1)unsigned fact(unsigned n) if ( n<= 1) return 1; return n*fact(n-1) ; 8与成员访问表达式p->name等价的表达式是 (*P).name 。9.UML的全称为 Unified Modeling Language,统一
11、建模语言 。10.UML中有 结构事物,动作事物,分组事物,注释事物 四种类型事物。11.UML中的四种关系为 依赖,关联,泛化,实现 。12.类Sample的构造函数将形参data赋值给数据成员data。请将类定义补充完整。class Samplepublic:Sample(int data=0);Private:Int data;Sample:Sample(int data) 【this->data=data;】 (13)若表达式(x+(y-z)*(m/n)+3中的变量均为double型,则表达式值的类型为 【double】 。(14)有如下循环语句:For(int i=5
12、0; i>20; i-=2) cout<<i<<','运行时循环体的执行次数是 【15】 。(15)利用表达式ai可以访问int型数组a中下标为i的元素。在执行了语句int *p=a;后,利用指针p也可访问该元素,相应的表达式是 【*(p+i)】 。(16)下面是一个递归函数,其功能是使数组中的元素反序排列。请将函数补充完整。void reverse(int *a, int size)if(size<2) return;int k=a0;a0=asize-1;asize-1=k;reverse(a+1, size-1
13、);(17)有如下类定义:class Samplepublic:Sample();Sample();Private:Static int date;将静态数据成员data初始化为0的语句是 【int Sample:data = 0;】(18)“图形”类Shape中定义了纯虚函数CalArea(),“三角形”类Triangle继承了类Shape,请将Triangle类中的CalArea函数补充完整。class Shapepublic:virtual int CalArea()=0;class Triangle: public Shapepublic:Triangleint s, int h: s
14、ide(s),height(h) 【int CalArea(int side,int height)】 return side*height/2 ; private: int side; int height;二.选择题1 建立派生类对象时,3种构造函数分别是a(基类的构造函数)、b(成员对象的构造函数)、c(派生类的构造函数),这3种构造函数的调用顺序为()A abc B acb C cab D cba答案:A2下面描述中,符合结构化程序设计风格的是(A) A)使用顺序、选择和重复(循环)三种基本控制结构表示
15、程序的控制逻辑 B)模块只有一个入口,可以有多个出口 C)注重提高程序的执行效率 D)不使用goto语句3下面概念中,不属于面向对象方法的是(D) A)对象 B)继承 C)类 D)过程调用4关于面向对象的程序设计方法,下列说法正确的是(D) A)“封装性”指的是将不同类型的相关数据组合在一起,作为一个整体进行处理 B)“多态性”指的是对象的状态会根据运行时要求自动变化 C)基类的私有成员在派生类的对象中不可访问,也不占内存空间 D)在面向对象的程序设计中,结构化程序设计方法仍有着重要作用5判断字符型变量ch是否为大写英文字母,应使用表达式(D)A ) ch>='A' &a
16、mp; ch<='Z' B ) ch<='A' |ch>='Z'C ) 'A'<=ch<='Z' D ) ch>='A' && ch<='Z'6已知下列语句中的x和y都是int型变量,其中错误的语句(C)A ) x=y+; B ) x=+y; C ) (x+y)+; D ) +x=y;7执行语句序列(D)int n;cin >> n;switch(n) case 1: case 2: cout << &
17、#39;1' case 3: case 4: cout << '2' break;default: cout << '3'时,若键盘输入1,则屏幕显示A)1 B)2 C)3 D)128关于动态存储分配,下列说法正确的是(B)A)new和delete是C+语言中专门用于动态内存分配和释放的函数B)动态分配的内存空间也可以被初始化C)当系统内存不够时,会自动回收不再使用的内存单元,因此程序中不必用delete释放内存空间D)当动态分配内存失败时,系统会立刻崩溃,因此一定要慎用new9)对类的构造函数和析构函数描述正确的是(A)A 构造
18、函数可以重载,析构函数不能重载 B 构造函数不可以重载,析构函数可以重载 C 构造函数可以重载,析构函数也可以重载 D构造函数不能重载,析构函数也不能重载(10)下列程序的输出结果是(A)#include <iostream>using namespace std;int main() char a = "Hello, World" char *ptr = a; while (*ptr) if (*ptr >= 'a' && *ptr <= 'z') cout << char(*ptr +
19、'A' -'a'); else cout << *ptr; ptr+; return 0;A ) HELLO, WORLD B ) Hello, WorldC ) hELLO, wORLD D ) hello, world11) 已知:int m=10;在下列定义引用的语句中,正确的是(A)A ) int &x=m; B )int y=&m; C )int &z; D ) int &t=&m;(17)下列函数原型声明中错误的是(D)A ) void Fun(int x=0, int y=0); B ) void
20、 Fun(int x, int y);C ) void Fun(int x, int y=0);D ) void Fun(int x=0, int y);(12)已知程序中已经定义了函数test,其原型是int test(int, int, int);,则下列重载形式中正确的是(B)A ) char test(int,int,int);B ) double test(int,int,double);C ) int test(int,int,int=0);D ) float test(int,int,float=3.5F);(13)已知函数f的原型是:void f(int *a, long &a
21、mp;b); 变量v1、v2的定义是:int v1;long v2;,正确的调用语句是(C) A) f(v1, &v2); B) f(v1, v2); C) f(&v1, v2); D) f(&v1, &v2);(14)有以下类定义class MyClasspublic: MyClass()cout<<1;则执行语句MyClass a, b2, *p2;后,程序的输出结果是(B)A)11 B)111 C)1111 D)11111(15)关于动态存储分配,下列说法正确的是(B)A)new和delete是C+语言中专门用于动态内存分配和释放的函数B)动态
22、分配的内存空间也可以被初始化C)当系统内存不够时,会自动回收不再使用的内存单元,因此程序中不必用delete释放内存空间D)当动态分配内存失败时,系统会立刻崩溃,因此一定要慎用new(16)关于友元,下列说法错误的是(A)A)如果类A是类B的友元,那么类B也是类A的友元B)如果函数fun()被说明为类A的友元,那么在fun()中可以访问类A的私有成员C)友元关系不能被继承D)如果类A是类B的友元,那么类A的所有成员函数都是类B的友元(17)在公有派生的情况下,派生类中定义的成员函数只能访问原基类的(C) A)公有成员和私有成员 B)私有成员和保护成员 C)公有成员和保护成员 D)私有成员、保护
23、成员和公有成员(18)在C+中用来实现运行时多态性的是(D) A)重载函数 B)析构函数 C)构造函数 D)虚函数(19)一个类可以同时继承多个类,称为多继承。下列关于多继承和虚基类的表述中,错误的是(C) A)每个派生类的构造函数都要为虚基类构造函数提供实参 B)多继承时有可能出现对基类成员访问的二义性问题 C)使用虚基类可以解决二义性问题并实现运行时的多态性 D)建立最派生类对象时,虚基类的构造函数会首先被调用(20)在一个类体的下列声明中,正确的纯虚函数声明是(A)A) virtual void vf()=0; B) void vf(int)=0;C) virtual int vf(in
24、t); D) virtual void vf(int) (21)在下面的运算符重载函数的原型中,错误的是(A)A) Volume operator - (double, double);B) double Volume:operator- (double);C) Volume Volume: :operator - (Volume);D) Volume operator - (Volume, Volume);(22)下列关于继承方式的描述中,错误的是(D) A)如果不显式地指定继承方式,缺省的继承方式是私有(private)B)采用公有继承方式时,基类中的公有成员在派生类中仍然是公有成员C)采
25、用保护继承方式时,基类中的保护成员在派生类中仍然是保护成员D)采用私有继承方式时,基类中的私有成员在派生类中仍然是私有成员(23)已知函数FA调用FB,若要把这两个函数定义在同一个文件中,则: DA)FA必须定义在FB之前B)FB必须定义在FA之前C)若FA定义在FB之后,则FA的原型必须出现在FB的定义之前D)若FB定义在FA之后,则FB的原型必须出现在FA的定义之前(24)有如下两个类定义class AA;class BB AA v1,*v2; BB v3; int *v4;其中有一
26、个成员变量的定义是错误的,这个变量是:C A)v1B)v2C)v3D)v4(25)有如下类定义(13)B:class XX int xdata;public: XX(int n=0) : xdata (n) ;class YY : public XX int ydata;public: YY(int m=0, int n=0) : XX(m), ydata(n) ;YY类的对象包含的数据成员的个数是A)1B)2C)3D)4(26)下列有关运
27、算符函数的描述中,错误的是:CA)运算符函数的名称总是以operator为前缀B)运算符函数的参数可以是对象C)运算符函数只能定义为类的成员函数D)在表达式中使用重载的运算符相当于调用运算符重载函数(27)下列字符串可以用作C+标识符的是:DA)2009varB)gotoC)test - 2009D)_123(28)下列枚举类型的定义中,包含枚举值3的是:AA)enum test RED, YELLOW, BLUE, BLACK;B)enum test RED, YELLOW=4, BLUE, BLACK;C)enum test RED=-1, YELLOW,BLUE, BLACK;D)enu
28、m test RED, YELLOW=6, BLUE, BLACK;(29)有如下程序段:Cint i=1;while (1) i+; if(i = 10) break; if(i%2 = 0) cout << '*'执行这个程序段输出字符*的个数是A)10B)3C)4D)5(30)已知数组arr的定义如下:Dint arr5 = 1,2,3,4,5;下列语句中输出结果不是2的是A)cout << *arr+1 <<endl;B)co
29、ut << *(arr+1)<<endl;C)cout << arr1 <<endl;D)cout << *arr <<endl; (31)计算斐波那契数列第n项的函数定义如下:BInt fib(int n) if (n = 0) return 1; else if (n = 1) return 2; else return fib(n-1)+fib(n-2);若执行函数调用表达式fib(2),函数fib被调用的次数
30、是A)1B)2C)3D)4(32)Sample是一个类,执行下面语句后,调用Sample类的构造函数的次数是: DSample a2, *p = new Sample;A)0B)1C)2D)3(33)下列关于虚基类的描述中,错误的是:CA)使用虚基类可以消除由多继承产生的二义性B)构造派生类对象时,虚基类的构造函数只被调用一次C)声明“class B : virtual public A”说明类B为虚基类D)建立派生类对象时,首先调用虚基类的构造函数(34)下列关于运算符重载的描述中,错误的是: CA):运算符不能重载B)类型转换运算符只能作为成员函数重载C)将运算符作为非成员函数重载时必须定
31、义为友元D)重载运算符应完成“下标访问”操作(35)有如下类定义class A char *a;public:A():a(0)A(char *aa) /把aa所指字符串拷贝到a所指向的存储空间a= A ;strcpy(a,aa);strcpy(a,aa);A() delete a;横线处应填写的表达式是A)new charstrlen(aa)+1 &
32、#160; B)charstrlen(aa)+1C)charstrlen(aa) D)new charsizeof(aa)-1(36)将运算符重载为类成员函数时,其参数表中没有参数,说明该运算是: (B)A)不合法的运算符B)一元运算符C)无操作数的运算符D)二元
33、运算符(37)下列选项中不属于结构化程序设计原则的是:A A)可封装B)自顶向下C)模块化D)逐步求精第 一 章 概述1-1 简述计算机程序设计语言的发展历程。解: 迄今为止计算机程序设计语言的发展经历了机器语言、汇编语言、高级语言等阶段,C+语言是一种面向对象的编程语言,也属于高级语言。1-2 面向对象的编程语言有哪些特点?解: 面向对象的编程语言与以往各种编程语言有根本的不同,它设计的出发点就是为了能更直接的描述客观世界中存在的事物以及它们之间的关系。面向对象的编程语言将客观事物看作具有属性和行为的对象,通过抽象找出同一类对象的共同属性(静态特征)和行为(动态特征),形成类。通过类的继承与
34、多态可以很方便地实现代码重用,大大缩短了软件开发周期,并使得软件风格统一。因此,面向对象的编程语言使程序能够比较直接地反问题域的本来面目,软件开发人员能够利用人类认识事物所采用的一般思维方法来进行软件开发。C+语言是目前应用最广的面向对象的编程语言。1-3 什么是结构化程序设计方法?这种方法有哪些优点和缺点?解: 结构化程序设计的思路是:自顶向下、逐步求精;其程序结构是按功能划分为若干个基本模块;各模块之间的关系尽可能简单,在功能上相对独立;每一模块内部均是由顺序、选择和循环三种基本结构组成;其模块化实现的具体方法是使用子程序。结构化程序设计由于采用了模块分解与功能抽象,自顶向下、分而治之的方
35、法,从而有效地将一个较复杂的程序系统设计任务分解成许多易于控制和处理的子任务,便于开发和维护。 虽然结构化程序设计方法具有很多的优点,但它仍是一种面向过程的程序设计方法,它把数据和处理数据的过程分离为相互独立的实体。当数据结构改变时,所有相关的处理过程都要进行相应的修改,每一种相对于老问题的新方法都要带来额外的开销,程序的可重用性差。由于图形用户界面的应用,程序运行由顺序运行演变为事件驱动,使得软件使用起来越来越方便,但开发起来却越来越困难,对这种软件的功能很难用过程来描述和实现,使用面向过程的方法来开发和维护都将非常困难。 1-4 什么是对象?什么是面向对象方法?这种方法有哪些特点?解: 从
36、一般意义上讲,对象是现实世界中一个实际存在的事物,它可以是有形的,也可以是无形的。对象是构成世界的一个独立单位,它具有自己的静态特征和动态特征。面向对象方法中的对象,是系统中用来描述客观事物的一个实体,它是用来构成系统的一个基本单位,由一组属性和一组行为构成。面向对象的方法将数据及对数据的操作方法放在一起,作为一个相互依存、不可分离的整体-对象。对同类型对象抽象出其共性,形成类。类中的大多数数据,只能用本类的方法进行处理。类通过一个简单的外部接口,与外界发生关系,对象与对象之间通过消息进行通讯。这样,程序模块间的关系更为简单,程序模块的独立性、数据的安全性就有了良好的保障。通过实现继承与多态性
37、,还可以大大提高程序的可重用性,使得软件的开发和维护都更为方便。面向对象方法所强调的基本原则,就是直接面对客观存在的事物来进行软件开发,将人们在日常生活中习惯的思维方式和表达方式应用在软件开发中,使软件开发从过分专业化的方法、规则和技巧中回到客观世界,回到人们通常的思维。1-5 什么叫做封装?解: 封装是面向对象方法的一个重要原则,就是把对象的属性和服务结合成一个独立的系统单位,并尽可能隐蔽对象的内部细节。第 二 章 C+简单程序设计2-1 C+语言有那些主要特点和优点?解: C+语言的主要特点表现在两个方面,一是全面兼容C,二是支持面向对象的方法。C+是一个更好的C,它保持了C的简洁、高效、
38、接近汇编语言、具有良好的可读性和可移植性等特点,对C的类型系统进行了改革和扩充,因此C+比C更安全,C+的编译系统能检查出更多的类型错误。 C+语言最重要的特点是支持面向对象。2-2 下列标识符哪些是合法的?Program, -page, _lock, test2, 3in1, mail, A_B_C_D解: Program, _lock, test2, A_B_C_D是合法的标识符,其它的不是。2-3 解释每条语句的作用是什么?#include <iostream.h>void main(void)cout<<"Hello!n"cout<&l
39、t;"Welcome to c+!n"解: #include <iostream.h> /指示编译器将文件iostream.h中的代码/嵌入到该程序中该指令所在的地方void main() /主函数名,void 表示函数没有返回值 /函数体标志cout<<"Hello!n" /输出字符串Hello!到标准输出设备(显示器)上。cout<<"Welcome to c+!n" /输出字符串Welcome to c+!在屏幕输出如下:Hello!Welcome to c+!2-4 使用关键字const而不
40、是#define语句的好处有哪些?解: const定义的常量是有类型的,所以在使用它们时编译器可以查错;而且,这些变量在调试时仍然是可见的。2-5 请写出C+语句声明一个常量PI,值为3.1416;再声明一个浮点型变量a,把PI的值赋给a。解: const float PI = 3.1416;float a = PI;2-6 在下面的枚举类型中,Blue的值是多少?enum COLOR WHITE, BLACK = 100, RED, BLUE, GREEN = 300 ;解: Blue = 1022-7 注释有什么作用?C+中有哪几种注释的方法?他们之间有什么区别?解: 注释在程序中的作用是
41、对程序进行注解和说明,以便于阅读。编译系统在对源程序进行编译时不理会注释部分,因此注释对于程序的功能实现不起任何作用。而且由于编译时忽略注释部分,所以注释内容不会增加最终产生的可执行程序的大小。适当地使用注释,能够提高程序的可读性。在C+中,有两种给出注释的方法:一种是延用C语言方法,使用"/*"和"*/"括起注释文字。另一种方法是使用"/",从"/"开始,直到它所在行的行尾,所有字符都被作为注释处理。2-8 什么叫做表达式?x = 5 + 7是一个表达式吗?它的值是多少?解: 任何一个用于计算值的公式都可称为表达
42、式。x = 5 + 7是一个表达式,它的值为12。2-9 下列表达式的值是多少?1. 201 / 42. 201 % 43. 201 / 4.0解: 1 502 13 50.252-10 执行完下列语句后,a、b、c三个变量的值为多少?a = 30;b = a+;c = +a;解: a:32 ; b:30 ; c:32;2-11 在一个for循环中,可以初始化多个变量吗?如何实现?解: 在for循环设置条件的第一个""前,用,分隔不同的赋值表达式。例如:for (x = 0, y = 10; x < 100; x+, y+)2-12 执行完下列语句后,n的值为多少?i
43、nt n;for (n = 0; n < 100; n+)解: n的值为1002-13 写一条for语句,计数条件为n从100到200,步长为2;然后用while和dowhile语句完成同样的循环。解: for循环:for (int n = 100; n <= 200; n += 2); while循环:int x = 100;while (n <= 200)n += 2; dowhile循环:int n = 100;don += 2; while(n <= 200);2-14 if ( x = 3 ) 和 if (x = = 3) 这两条语句的差别是什么?解: 语句i
44、f(x = 3)把3赋给x,赋值表达式的值为true,作为if语句的条件;语句if(x = 3)首先判断x的值是否为3,若相等条件表达式的值为ture,否则为false。2-15什么叫做局部变量?什么叫做全局变量,如何使用全局变量? 解: 局部变量,一般来讲就是具有块作用域的变量;全局变量,就是具有文件作用域的变量。 2-16 已知x、y两个变量,写一条简单的if语句,把较小的的值赋给原本值较大的变量。解: if (x > y)x = y;else / y > x | y = xy = x;2-17 修改下面这个程序中的错误,改正后它的运行结果是什么?#include <io
45、stream.h>void main()int iint j;i = 10; /* 给i赋值j = 20; /* 给j赋值 */cout << "i + j = << i + j; /* 输出结果 */return 0;解: 改正:#include <iostream.h>int main()int i;int j;i = 10; / 给i赋值j = 20; /* 给j赋值 */cout << "i + j = " << i + j; /* 输出结果 */return 0;程序运行输出:i + j
46、= 302-18 编写一个程序,运行时提示输入一个数字,再把这个数字显示出来。解: 源程序:#include <iostream.h> int main()int i;cout << "请输入一个数字:"cin >> i;cout << "您输入一个数字是" << i << endl;return 0;程序运行输出:请输入一个数字:5您输入一个数字是52-19 运行下面的程序,观察其输出,与你的设想是否相同?#include <iostream.h>int main()u
47、nsigned int x;unsigned int y = 100;unsigned int z = 50;x= y - z;cout << "Difference is: " << x;x = z - y;cout << "nNow difference is: " << x <<endl;return 0;解: 2-20什么叫常量?什么叫变量?解: 所谓常量是指在程序运行的整个过程中其值始终不可改变的量,除了用文字表示常量外,也可以为常量命名,这就是符号常量;在程序的执行过程中其值可以变化
48、的量称为变量,变量是需要用名字来标识的。2-21写出下列表达式的值:1. 2 < 3 && 6 < 92. ! ( 4<7 )3. ! ( 3 > 5) | (6 < 2 )解: 1. true2. false3. true2-22编写一个完整的程序,运行时向用户提问"你考试考了多少分?(0100)",接收输入后判断其等级,显示出来。规则如下:解: #include <iostream.h> void main()int i,score;cout << "你考试考了多少分?(0100):&quo
49、t;cin >> score;if (score>100 | score<0)cout << "分数值必须在0到100之间!"elsei = score/10;switch (i)case 10:case 9:cout << "你的成绩为优!"break;case 8:cout << "你的成绩为良!"break;case 7:case 6:cout << "你的成绩为中!"break;default:cout << "你
50、的成绩为差!" 程序运行输出:你考试考了多少分?(0100):85你的成绩为良!2-23用穷举法找出1100间的质数,显示出来。分别使用while,do-while,for循环语句实现。解: 源程序: 使用while循环语句:#include <iostream.h>#include <math.h> void main()int i,j,k,flag;i = 2;while(i <= 100)flag = 1;k = sqrt(i);j = 2;while (j <= k)if(i%j = 0)flag = 0;break;j+;if (flag
51、)cout << i << "是质数." << endl;i+; 使用dowhile循环语句:#include <iostream.h>#include <math.h> void main()int i,j,k,flag;i = 2;doflag = 1;k = sqrt(i);j = 2;doif(i%j = 0)flag = 0;break;j+;while (j <= k);if (flag)cout << i << "是质数." << endl
52、;i+;while(i <= 100); 使用for循环语句:#include <iostream.h>#include <math.h> void main()int i,j,k,flag;for(i = 2; i <= 100; i+)flag = 1;k = sqrt(i);for (j = 2; j <= k; j+)if(i%j = 0)flag = 0;break;if (flag)cout << i << "是质数." << endl;程序运行输出:2是质数.3是质数.5是质数.7是
53、质数.11是质数.13是质数.17是质数.19是质数.23是质数.29是质数.31是质数.37是质数.41是质数.43是质数.47是质数.53是质数.59是质数.61是质数.67是质数.71是质数.73是质数.79是质数.83是质数.89是质数.97是质数.2-24 比较Break语句与Continue语句的不同用法。解: Break使程序从循环体和switch语句内跳出,继续执行逻辑上的下一条语句,不能用在别处;continue 语句结束本次循环,接着开始判断决定是否继续执行下一次循环; 2-25 在程序中定义一个整型变量,赋以1100的值,要求用户猜这个数,比较两个数的大小,把结果提示给用
54、户,直到猜对为止。分别使用while、dowhile语句实现循环。解: /使用while语句#include <iostream.h> void main() int n = 18;int m = 0;while(m != n) cout << "请猜这个数的值为多少?(0100):"cin >> m;if (n > m)cout << "你猜的值太小了!" << endl;else if (n < m)cout << "你猜的值太大了!" <&
55、lt; endl;elsecout << "你猜对了!" << endl;/使用dowhile语句#include <iostream.h> void main() int n = 18;int m = 0;docout << "请猜这个数的值为多少?(0100):"cin >> m;if (n > m)cout << "你猜的值太小了!" << endl;else if (n < m)cout << "你猜的值太大了
56、!" << endl;elsecout << "你猜对了!" << endl;while(n != m); 程序运行输出:请猜这个数的值为多少?(0100):50你猜的值太大了!请猜这个数的值为多少?(0100):25你猜的值太大了! 请猜这个数的值为多少?(0100):10你猜的值太小了!请猜这个数的值为多少?(0100):15你猜的值太小了!请猜这个数的值为多少?(0100):18你猜对了! 第三章 函数3-1 C+中的函数是什么?什么叫主调函数,什么叫被调函数,二者之间有什么关系?如何调用一个函数? 解: 一个较为复杂的系
57、统往往需要划分为若干子系统,高级语言中的子程序就是用来实现这种模块划分的。C和C+语言中的子程序就体现为函数。调用其它函数的函数被称为主调函数,被其它函数调用的函数称为被调函数。一个函数很可能既调用别的函数又被另外的函数调用,这样它可能在某一个调用与被调用关系中充当主调函数,而在另一个调用与被调用关系中充当被调函数。调用函数之前先要声明函数原型。按如下形式声明:类型标识符 被调函数名 (含类型说明的形参表);声明了函数原型之后,便可以按如下形式调用子函数:函数名(实参列表)3-2 什么叫内联函数?它有哪些特点?解: 定义时使用关键字 inline的函数叫做内联函数;编译器在编译时在调用处用函数
58、体进行替换,节省了参数传递、控制转移等开销;内联函数体内不能有循环语句和switch语句;内联函数的定义必须出现在内联函数第一次被调用之前;对内联函数不能进行异常接口声明;3-3 函数原型中的参数名与函数定义中的参数名以及函数调用中的参数名必须一致吗?解: 不必一致,所有的参数是根据位置和类型而不是名字来区分的。 3-4 编写函数把华氏温度转换为摄氏温度,公式为:C = (F - 32) * 5/9; 在主程序中提示用户输入一个华氏温度,转化后输出相应的摄氏温度。解: 源程序见"实验指导"部分实验三3-5 编写函数判断一个数是否是质数,在主程序中实现输入、输出。解: #include <iostream.h>#include <math.h>int prime(int i); /判一个数是否是质数的函数void main()int i;cout << "请输入一个整数:"cin >> i;if (
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年集团新员工安全培训内容进阶秘籍
- 公司晚餐工作总结报告2026年专项突破
- 2026年个体工商户财税代理合同协议
- 2026年采石安全培训内容包括核心要点
- 武汉市汉阳区2025-2026学年第二学期五年级语文第五单元测试卷(部编版含答案)
- 玉溪市澄江县2025-2026学年第二学期六年级语文第五单元测试卷部编版含答案
- 齐齐哈尔市讷河市2025-2026学年第二学期六年级语文第五单元测试卷部编版含答案
- 鹤岗市兴山区2025-2026学年第二学期五年级语文第六单元测试卷(部编版含答案)
- 伊犁哈萨克自治州昭苏县2025-2026学年第二学期六年级语文第五单元测试卷部编版含答案
- 咸阳市兴平市2025-2026学年第二学期五年级语文第五单元测试卷(部编版含答案)
- 《涉外法治概论》课件 杜涛 -第1-6章 涉外法治的基础理论-涉外经济管理法律制度
- 全国工程机械维修工职业技能竞赛理论考试题库(含答案)
- 第七章-淀粉制糖
- 高中阶段学校实际就读证明(格式)
- 部编版语文二年级下册第1单元核心素养教案
- 铁总建设201857号 中国铁路总公司 关于做好高速铁路开通达标评定工作的通知
- HEC-RAS初步教程课件
- 非物质文化遗产的分类
- 回转窑设计手册
- YY/T 1494-2016血液透析及相关治疗用浓缩物包装材料通用要求
- 三索式钢丝绳牵引格栅安装调试方案
评论
0/150
提交评论