第1章C的初步知识
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第1章C++的初步知识
上学期是以C为蓝本来讲解,这学期需要增加一些C++的内容,这是进入C/C++程序设计II学习的前期准备。
从C到C++
C语言是结构化和模块化的语言,它是面向过程的。能处理小规模的程序。但当规模较大时会显示出它的不足。为了解决这个软件危机,提出了面向对象的程序设计(object oriented programming,OOP)思想。C++保留了C语言原有的所有优点,增加了面向对象机制。所以C++也称为“带类的C”。
C++对C的“增强”,表现在以下两个方面:
1、在原来面向过程的机制基础上,对C语言的功能作了扩充。(本章将介绍充分部分)
2、增加了面向对象的机制。
在面向对象的程序设计中仍然要用到结构化程序设计的知识。下面介绍C++对C的扩充,及与C的差别所在。
最简单的C++程序
C++程序在结构上与C的差别如下:
1、标准C++规定main函数声明为int型,即此主函数带回一个整型的函数值。程序如果正
常执行,则操作系统返回数值0,否则返回数值-1。
2、系统头文件不带后缀.h,如:#include
3、使用系统库时要使用命名空间std。即使用using namespace std;,这句话的意思是使用
命名空间std。C++标准库中的类和函数是在命名空间std中声明的,因此程序中如果需要用到C++标准库,就需要用using namespace std;来声明,表示要用命名空间std中的内容。
例最简单的只有输出的程序
#include
using namespace std;
int main()
{ cout<<"This is a C++ programm.\n";
1.3 C1.3.1 C n";
当程序需要执行键盘输入时,可以使用抽取操作符">>",从cin输人流中抽取字符。例如:int a;cin>>a;。
不管把什么基本数据类型的名字或值传给流,它都能懂。例如,下面的程序是输出字符串和整数:
#include
using namespace std;
int main()
{ cout<<"This is a C++ program."< cout<<"This is " <<"a C++ program. " < cout<<"This is "; cout<<"a C++ program. "; cout< cout<<2; cout< return 0; } 从上面的程序可以看出,输出的写法可以在同一行串连也可以分在几行。 cin可以和cout一样的方式调整行,它自动识别变量位置和类型。 例如:int a;float b;char c;,则cin>>a>>b>>c;,也可以写成: cin>>a; cin>>b; cin>>c cin能够知道抽取的变量的类型,它将对a,b,c分别给出一个整型、浮点型和字符型数。 二、输入流与输出流中使用控制符(第七章中详细介绍,这里了解就可以了) 流的默认格式输出有时不能满足特殊要求,如: double average=; cout< 希望显示的是,即保留两位小数,可是却显示了,默认显示6位有效位。用控制符(manipulators)可以对I/O流的格式进行控制。控制符是在头文件中定义的对象。可以直接将控制符插入流中。常用控制符如下表所列。 表1 I/O流的常用控制符 控制符描述 Dec Hex Oct setfill(c) setprecision(n) setw(n) setiosflags(ios::fixed) setiosflags(ios::scientific) setiosflags(ios::left) setiosflags(ios::right) setiosflags(ios::skipws) setiosflags(ios::uppercase) setiosflags(ios::lowercase) 置基数为10 置基数为16 置基数为8 设填充字符为c 设显示小数精度为n位设域宽为n个字符 固定的浮点显示 指数表示 左对齐 右对齐 忽略前导空白 16进制数大写输出16进制数小写输出 使用控制符时,要在程序的头上加头文件。 #include #include using namespace std; int main() { int i=100; cout< cout< double d=; cout< cout< return 0; } 1.3.2 用const定义常变量 在C语言中常用#define命令来定义符号常量,实际上,只是进行字符置换,容易误解。 #include using namespace std; #define R 2+3 int main() { cout< void func(INTx){ 1.3.51.3.6.} void point(int a){return point(a,4);} void point(){return point(3,4);} 可以用下面的默认参数的函数来替代: void point(int=3,int=4); 当调用“point();”时,即调用“point(3,4);” 它是第3个声明的重载函数。 当调用“point(6);”时,即调用“point(6,4);”,它是第2个声明的重载函数。 当调用“point(7,8);”时,即调用第1个声明的重载函数 如果一组重载函数(可能带有默认参数)都允许相同实参个数的调用,将会引起调用的二义性。例如: void func(int); //重载函数之一 void func(int,int=4); //重载函数之二,带有默认参数 void func(int=3,int=4); //重载函数之三,带有默认参数 func(7); //error: 到底调用3个重载函数中的哪个? func(20,30) //error:到底调用后面2个重载函数的哪个? 学生练习:将P13例不用重载,改用带有默认参数的函数。 #include using namespace std; int max(int a,int b,int c=0) { return (a>b?a:b)>c?(a>b?a:b):c; } int main() { int a,b,c; cin>>a>>b>>c; cout< } 1.3.7 变量的引用 引用是C++引入的新语言特性,是C++常用的一个重要内容之一,正确、灵活地使用引用,可以使程序简洁、高效。许多人使用它仅仅是想当然,在某些微妙的场合,很容易出错,究