- robin 的博客
第二章程序设计基础知识 第2节C++语言基础
- @ 2025-6-24 21:15:20
第2节C++语言基础
由于篇幅所限,本书在此只介绍C++语言的大致语法和使用,以帮助读者快速读懂程序。更详细的使用请参考《信息学奥赛一本通》这本书的前面几章或者自行在网上查找资源。
一、程序的基本构成
#include<iostream>
using namespace std;
int main() { //main()是程序开始执行的地方
cout << "Hello world"; //输出Hello world
return 0;
}
- 头文件
<iostream>包含了程序中如输入输出即cin、cout的定义。 using namespace std;告诉编译器使用std命名空间。命名空间是为了作为附加信息来区分不同库中相同名称的函数、类、变量等。本质上,命名空间就是定义了一个范围。- 下一行
int main()是主函数,程序从这里开始执行。 //是一个单行注释,用于解释说明。单行注释以//开头,在行末结束。cout << "Hello World";用于输出,在屏幕上显示消息"Hello World"。return 0;终止main()函数,并向调用进程返回值0。- 分号是语句结束符。也就是说每个语句必须以分号结束。
{}称为块,其中的所有语句是一个语句块。
二、变量及数据类型

#include<iostream>
using namespace std;
int main() {
float x;
int i;
x = 3.7;
i = (int)x; //强制类型转换
cout << "x=" << x << "," << i << endl; //输出x=3.7,i=3
return 0;
}
#include<iostream>
using namespace std;
struct stuInfo {
int ID;
char name[20];
char sex;
int age;
};
int main() {
stuInfo x = {13, "xiaoma",'m', 35};
stuInfo* p = &x; //指针p指向x
cout << x.ID << endl;
cout << (*p).ID << endl; //指针访问方式一
cout << p->ID << endl; //指针访问方式二
return 0;
}
三、类
C++在C语言的基础上增加了面向对象编程。类是C++的核心特性,通常被称为用户定义的类型,其包含了数据表示和用于处理数据的方法。类中的数据和方法都称为类的成员。
class Box { //方法一
public: //public是类型修饰符,具体意义见"类访问修饰符"
double length; //长度
double width; //宽度,类的数据成员,也就是类中的变量
double height; //高度
double getvolume() {
// 这里可添加计算体积的具体代码
return length * width * height;
}
};
四、程序的基本结构
一般一个程序可以用顺序、选择和循环三种基本结构组合而成。
- 顺序结构:顺序结构是最简单、最常用的结构,语句与语句之间按从上到下的顺序执行即可。
- 选择结构:选择结构是先根据条件做出判断,再决定执行哪一种操作的算法结构,必须包含判断框。当条件P成立(或称为真)时执行A,否则执行B,不可能两者同时执行,但A或B两个框中可以有一个是空的,即不执行任何操作。常用的是
if、if...else、switch。
#include<iostream>
using namespace std;
int main() {
int a = 20;
if (a == 10) { //如果if条件为真,则输出下面的语句
cout << "a的值是10" << endl;
}
else if (a == 20) { //如果else if条件为真,则输出下面的语句
cout << "a的值是20" << endl;
}
else if (a == 30) {
cout << "a的值是30" << endl;
}
else {
cout << "没有匹配的值" << endl;
}
cout << "a的准确值是" << a << endl;
return 0;
}
- 循环结构:在一些算法中,经常会出现从某处开始,按照一定条件,反复执行某一处理步骤的情况,这就是循环结构。常用的有
while、for、do...while。
#include<iostream>
using namespace std;
int main() {
for (int a = 1; a < 10; a = a + 1) {
cout << "a的值:" << a << endl;
}
int b = 1;
while (b < 10) {
cout << "b的值:" << b << endl;
b++;
}
return 0;
}
五、函数
函数是用来实现某些特定功能而封装成的一个模块。在创建函数时,必须编写其定义。所有函数定义包括以下组成部分:
返回类型 函数名(形参列表) {
函数主体
}
- 函数名:每个函数都必须有一个名称。通常,适用于变量名称的规则同样也适用于函数名称。
- 形参列表:保存传递给函数的值的变量列表。如果没有值传递给函数,则其形参列表为空。
- 函数主体:处理函数正在执行的任务的一组语句,这些语句包含在一组大括号中。
- 返回类型:函数可以将值发送回调用它的程序模块。返回类型是要发送回的值的数据类型。
例如:编写求半径为
r的圆的面积的函数area。
//这是一个求值的函数,函数中设置一个形参r,用于接收圆的半径。
//将参数类型和返回值类型定义为double。
double area(double r) //返回值类型为double
{
double s;
s = 3.14 * r * r;
return s; //返回计算结果
}
在执行函数时,函数参数,局部变量(包括const局部变量),函数调用后返回的地址都在内存的栈区上创建,函数执行结束时这些存储单元自动被释放。
六、递归函数
递归,就是在运行的过程中调用自己。 构成递归需具备的条件:
- 子问题须与原始问题为同样的事,且更为简单;
- 不能无限制地调用本身,必须有个出口,化简为非递归状况处理。
例如编写代码求
1+2+…+n的值,其中。
#include<iostream>
using namespace std;
//求解1+2··+n
int sum(int x) {
if (x == 1) return 1; //出口,这样就不能无限制地调用本身了
return sum(x - 1)+x; //子问题sum(x - 1)与原始问题sum(x)同样的事,且更为简单
}
int main() {
int n;
cin >> n;
cout << sum(n);
return 0;
}