- 创建C++程序
- C++程序的一般格式
- #include命令
- main()函数
- 使用cout对象进行输出
- 在C++程序中加入注释
- 何时以及如何使用endl
- 声明和使用变量
- 使用cin对象进行输入
- 定义和使用简单函数
2.1
myfirst.cpp
//myfirst.cpp--displays a message
#include <iostream> //预处理器指令
int main() //函数头
{ //函数开始
using namespace std; //使定义可见
cout<<"Come up and C++ me some time."; //信息
cout<<endl; //空行
cout<<"You won't regret it!"<<endl; //输出信息+空行
return 0; //终止返回值
} //函数结束
C语言的stdio.h文件,标准输入和输出函数是printf()、scanf()。
C++只要包含stdio.h文件,就能使用C语言的输入输出函数
*注释,由前缀//标识
*预处理器编译指令#include
*函数头:int main()
*编译指令using namespace
*函数体,用{}括起的内容
*使用C++的cout工具显示消息的语句
*结束main()函数的return语句
2.2 C++语句
#include <iostream>
int main()
{
using namespace std;
int carrots; //声明一个整型变量
carrots = 25; //赋予变量一个初始值
cout <<"I have";
cout <<carrots; //显示变量的值
cout <<"carrots,"<<endl;
carrots = carrots-1; //修改变量的值
cout << "Crunch,crunch.Now I have"<<carrots<<"carrots."<<endl;
return 0;
}
2.3 其它C++语句
#include <iostream>
int main()
{
using namespace std;
int carrots; //声明一个整型变量
cout<<"How many carrots do you have?"<<endl;
cin>>carrots; //输入变量值
cout<<"Here are two more.";
carrots = carrots+2;
cout<<"Now you have "<<carrots<<" carrots"<<endl;
return 0;
}
2.3.1 类简介
类描述了一种数据类型的全部属性(包括可使用它执行的操作),对象是根据这些描述创建的实体。
类描述指定了可对类对象执行的所有操作。要对特定对象执行这些允许的操作,需要给该对象发送一条消息。
2.4 函数
函数原型之于函数就像变量声明之于变量——指出涉及类型。
例:double sqrt(double);
第一个double意味着sqrt()将返回一个double值,括号中的double意味着sqrt()需要一个double参数。
等价于下面的代码所使用的函数
double x;
x=sqrt();
2.4.1 使用库函数
#include <iostream>
#include <cmath>
int main()
{
using namespace std;
double area;
cout<<"Enter the floor area,in square feet,of your home: ";
cin>>area;
double side;
side=sqrt(area);
cout<<"That's the equivalent of a square "<<side<<" feet to side."<<endl;
cout<<"How fascinating!"<<endl;
return 0;
}
2.4.2 使用用户定义的无返回值的函数
#include <iostream>
void simon(int); //simon()函数原型
int main()
{
using namespace std;
simon(3);
cout<<"Pick an integer: ";
int count;
cin>>count;
simon(count);
cout<<"Done!"<<endl;
return 0;
}
void simon(int n)
{
using namespace std;
cout<<"Simon says touch your toes "<<n<<"times."<<endl;
}
注:定义simon()的源代码位于main()后面,和C一样,C++不允许将函数定义嵌套在另一函数定义中。每一个函数的定义都是独立的,所有的函数创建都是平等的。
void声明simon()没有返回值,因此调用simon()不会生成可在main()中将其赋给变量的数字。
因此,第一个函数调用方式如下:
simon(3); //可以调用没有返回值的simon()函数
由于simon()没有返回值,所以不能这样使用它:
simple = simon(3); //不被允许这样使用
括号中的int n表明,使用simon()时,应提供一个int参数。n是一个新的变量,函数调用时传递的值将被赋给它,。因此,下面的函数调用将3赋给simon()函数头中定义的变量n:
当函数体中的cout语句使用n时,将使用函数调用时传递的值,
2.4.3 用户定义的有返回值的函数
#include <iostream>
int stonetolb(int);
int main()
{
using namespace std;
int stone;
cout<<"Enter the weight in stone: ";
cin>>stone;
int pounds=stonetolb(stone);
cout<<stone<<" stone= ";
cout<<pounds<<" pounds."<<endl;
return 0;
}
int stonetolb(int sts)
{
return 14*sts;
}
注:在main()中,程序使用cin来给整型变量stone提供一个值。这个值被作为参数传递给stonetolb()函数,在该函数中,这个值被赋给变量sts。然后,stonetolb()用关键字return 将14*12返回给main()。这表明return后面并非一定得跟一个简单的数字。
int stonetolb(int sts)
{
int pounds=14*sts;
return pounds;
}
这段代码与前一段返回的结果相同。只不过它将计算和返回分开了。
2.4.4 在多函数程序中使用using编译指令
之前的main()中都包含using namespace std;这是一条using编辑指令:
因为每个函数都使用了cout,因此需要能够访问位于名称空间std中的cout定义。
我们也可以直接把using指令放在函数前面。放在前面的话就是让所有的函数都能够访问名称空间std,但是只让需要访问名称空间std的函数访问它是更好的选择。
让程序能够访问名称空间std的4种方法
*将using namespace std;放在函数定义之前,让所有的函数都能使用名称空间std中所有的元素。
*将using namespace std;放在特定的函数定义中,让该函数能够使用名称空间std中的所有元素。
*在特定的函数中使用类似using std::cout;这样的编译指令,让该函数能够使用指定的元素,比如cout。
*完全不使用编译指令using,而在需要使用名称空间std中的元素时,使用前缀std::,比如
std::cout<<"I'm using cout and endl from the std namespace."<<std::endl;
总结
C++程序由一个或多个被称为函数的模块组成。程序从main()函数开始执行,因此该函数必不可少。
函数由函数头和函数体组成。函数头指出函数的返回值(如果有的话)的类型和函数期望通过参数传递给它的信息的类型。
6种类型的C++语句
*声明语句:定义函数中使用的变量的名称和类型
*赋值语句:使用赋值运算符(=)给变量赋值
*消息语句:将消息发送给对象,激发某种行动
*函数调用:执行函数。被调用的函数执行完毕后,程序返回到函数调用语句后面的语句。
*函数原型:声明函数的返回类型、函数接受的参数数量和类型
*返回语句:将一个值从被调用的函数那里返回到调用函数中。
类是用户定义的数据类型规范。它详细的描述了如何表示信息以及可对数据执行的操作。
对象是根据类规范创建的实体,就像简单变量是根据数据类型描述创建的实体一样。
C++可以使用大量的C库函数,要使用库函数,应当包含提供该函数原型的头文件。
复习题
1、C++程序的模块叫什么?
答:函数
2、下面的预处理器编译指令是做什么用的?
#include
答:这将导致在最终的编译之前,使用iostream文件的内容替换该编译指令
3、下面的语句是做什么用的?
using namespace std;
答:它使得程序可以使用std名称空间中的定义
4、什么语句可以用来打印短语“Hello world!”,然后开始新的一行?
答:cout<<“Hello world!\n”;
或
cout<<“Hello world!”<<endl;
5、什么语句可以用来创建名为cheeses的整数变量?
答:int cheeses;
6、什么语句可以用来将值32赋给变量cheeses?
答:cheeses=32;
7、什么语句可以用来将键盘输入的值读入变量cheeses中?
答:cin>>cheeses;
8、什么语句可以用来打印“We have X varieties of cheeses,”,其中X为变量cheeses的当前值。
答:cout<<"We have "<<cheeses<<“varieties of cheese,”<<endl;
9、下面的函数原型指出了关于函数的哪些信息?
int froop {double t};
答:调用函数froop()时,应提供一个参数,该参数的类型为double,而该函数的类型为double,该函数将返回一个int值。
例:int gval =froop(3.14159)
void rattle(int n);
答:函数rattle()接受一个int参数且没有返回值
例:rattle(37);
int prune(void);
答:函数prune()不接受任何参数且返回一个int值
int residue=prune();
10、定义函数时,在什么情况下不必使用关键字return?
答:当函数的返回类型为void时,不用在函数中使用return。然而,如果不提供返回值,则可以使用它:
return;