一、基础知识
1、C++程序的基本框架
cpp
// 预处理器指令,引入需要的头文件
#include <iostream>
// 使用标准命名空间
using namespace std;
// 主函数,程序的入口
int main() {
// 局部变量声明
// 程序逻辑代码
// 返回值,表示程序正常结束
return 0;
}
2、int 和 double
-
C++中,我们使用不同的类型来存储整数和小数。
-
int类型用于存储整数,例如:
cppint age = 10; int score = 98;
-
double类型用于存储小数,例如:
cppdouble price = 9.99; double height = 1.75;
-
我们可以对int和double类型的变量进行各种算术运算,如加法、减法、乘法和除法。
-
当用int类型进行除法运算时,结果也是整数,小数部分会被去掉。(如:int a = 10 / 3,这里 a = 3,小数点会被去掉)。
-
如果想要得到小数结果,需要使用double类型(如:double a = 10 / 3,a = 3.3333......)。
-
在编程时,我们应该根据要存储的数字类型选择相应的变量类型,以确保正确地进行各种计算。
3、保留小数点后几位输出
fixed
和 setprecision()
是在 <iostream>
和 <iomanip>
库中定义的操作符,用于控制浮点数的输出格式。
-
fixed
操作符fixed
操作符用于设置定点表示法,即将小数点固定在某个位置。- 使用
fixed
操作符后,浮点数将总是被显示为定点数,小数点后的位数由setprecision()
控制。
-
setprecision()
操作符setprecision()
操作符用于设置输出的精度,即控制输出的总位数(包括整数部分和小数部分)。- 当与
fixed
操作符配合使用时,setprecision()
的参数值即为小数点后的位数。
-
恢复默认输出格式
- 使用
cout.unsetf(ios::fixed)
可以恢复默认的浮点数输出格式。 - 默认格式下,会根据数值大小自动选择scientific(科学计数法)或fixed(定点)表示法,并且小数点后的位数会根据数值的精度自动调整。
- 使用
示例代码:
cpp
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
double num1 = 3.14159265358979323846;
double num2 = 1234.5678;
// 保留小数点后2位
cout << fixed << setprecision(2);
cout << num1 << endl; // 输出: 3.14
cout << num2 << endl; // 输出: 1234.57
// 保留小数点后4位
cout << setprecision(4);
cout << num1 << endl; // 输出: 3.1416
cout << num2 << endl; // 输出: 1234.5678
// 恢复默认输出格式
cout.unsetf(ios::fixed);
cout << num1 << endl; // 输出: 3.14159
cout << num2 << endl; // 输出: 1234.57
return 0;
}
注意事项:
fixed
、setprecision()
和defaultfloat
操作符影响之后所有的浮点数输出,直到再次使用这些操作符进行修改。- 如果输出的数字位数不足,会在小数点后补零;如果超出,则会四舍五入。
- 在使用
setprecision()
之前,建议先使用fixed
操作符,以确保小数点后的位数与预期一致。 - 使用
cout.unsetf(ios::fixed)
可以方便地恢复默认的浮点数输出格式,无需手动设置精度或表示法。
4、输入、输出和换行
输入: cin
-
cin是C++中的一个标准输入流对象,用于从标准输入设备(通常是键盘)读取数据。
-
要使用cin,需要在程序开头包含iostream头文件:
cpp#include <iostream>
-
使用cin进行输入时,数据会从标准输入设备(通常是键盘)读取,直到遇到空格、制表符或换行符。
-
cin使用>>运算符来读取数据。例如:
cppusing namespace std; int age; cout << "请输入你的年龄: "; cin >> age;
-
可以连续使用多个>>运算符来读取多个数据:
cppusing namespace std; int a, b; cin >> a >> b;
-
cin会自动根据变量的类型来解析输入的数据。例如,如果变量是int类型,cin会将输入解析为整数;如果变量是double类型,cin会将输入解析为浮点数。
输出:cout 换行:endl
-
cout:
-
cout是C++中的标准输出流对象,用于将数据输出到标准输出设备(通常是屏幕)。
-
cout位于
<iostream>
头文件中,需要在程序开头使用#include <iostream>
引入该头文件。 -
cout使用<<运算符(插入运算符)来输出数据。可以连续使用多个<<运算符来输出多个数据。
-
cout可以输出各种类型的数据,如整数、浮点数、字符、字符串、布尔值等。
-
示例:
cppcout << "Hello, world!" << endl; cout << "The sum is: " << sum << endl;
-
-
endl:
-
endl是C++中的一个操纵符(manipulator),用于插入一个换行符并刷新缓冲区。
-
endl也位于
<iostream>
头文件中。 -
当使用cout输出数据时,可以使用endl来换行并确保数据立即输出到屏幕上。
-
示例:
cppcout << "First line" << endl; cout << "Second line" << endl;
-
-
cout和endl的组合使用:
-
在使用cout输出数据时,通常会与endl一起使用,以实现换行和刷新缓冲区的效果。
-
可以在一条cout语句中使用多个<<运算符和endl操纵符,以输出多个数据并换行。
-
示例:
cppcout << "Name: " << name << endl; cout << "Age: " << age << endl; cout << "Score: " << score << endl;
-
-
注意事项:
- 在使用cout和endl之前,需要确保已经包含了
<iostream>
头文件。
- 在使用cout和endl之前,需要确保已经包含了
5、C++中的算术运算
运算符 | 名称 | 描述 | 示例 |
---|---|---|---|
+ |
加 | 将两个操作数相加 | int a = 5 + 3; |
- |
减 | 将第一个操作数减去第二个操作数 | int b = 7 - 2; |
* |
乘 | 将两个操作数相乘 | int c = 4 * 6; |
/ |
除 | 将第一个操作数除以第二个操作数 | int d = 10 / 3; |
% |
取模 | 返回第一个操作数除以第二个操作数的余数 | int e = 11 % 3; |
- 加
+
:将两个操作数相加。可以用于数字相加,也可以用于字符串拼接。 - 减
-
:将第一个操作数减去第二个操作数。 - 乘
*
:将两个操作数相乘。 - 除
/
:将第一个操作数除以第二个操作数。
注意 :
如果两个操作数都是整数,则结果也是整数,而不是浮点数。
(例如 : 4 / 2 = 2)
如果想要得到浮点数结果,至少有一个操作数需要是浮点数。
(例如:4.0 / 2 = 2.0 或者4 / 2.0 = 2.0 或者 4.0 / 2.0 = 2.0)
- 除数不能为0,否则会导致程序错误。编译器可能会给出警告或错误信息。
例如:int a = 10 / 0;
这是非法的,会导致编译错误或运行时错误。
- 取模
%
:返回第一个操作数除以第二个操作数的余数。这个运算符只适用于整数操作数。
- 取模运算的结果的符号与第一个操作数的符号相同。
例如:-11 % 3
的结果是-2
,而不是2
。 - 与除法运算类似,取模运算的第二个操作数也不能为0,否则会导致程序错误。
例如:int b = 10 % 0;
这是非法的,会导致编译错误或运行时错误。
6、案例实操
题目:
编写一个C++程序,从用户那里读取两个整数,然后使用cout
语句输出以下算术运算的结果:
- 第一个数加第二个数的结果
- 第一个数减第二个数的结果
- 第一个数乘以第二个数的结果
- 第一个数除以第二个数的结果(整数除法)
- 第一个数除以第二个数的结果(浮点数除法)
- 第一个数除以第二个数的余数(取模运算)
要求:
- 使用
cin
读取用户输入的两个整数,并用空格分隔。 - 每个运算结果输出在单独的一行,并在输出前显示相应的算术表达式。
- 在输出整数除法结果时,添加注释说明整数和整数运算的结果是整数。
- 为了获得浮点数除法结果,将其中一个数声明为
double
类型的变量,然后进行除法运算。 - 使用
endl
操作符来换行,而不是\n
。
注意事项:
- 请注意处理除数为零的情况,以避免运行时错误。
- 确保用户输入的是整数,否则可能会导致输入错误和意外结果。
- 取模运算符
%
只能用于整数类型,不能用于浮点数。
7、代码解析
cpp
#include <iostream>
using namespace std;
int main() {
int num1, num2;
cout << "请输入两个整数,用空格分隔: ";
cin >> num1 >> num2;
cout << num1 << " + " << num2 << " = " << num1 + num2 << endl;
cout << num1 << " - " << num2 << " = " << num1 - num2 << endl;
cout << num1 << " * " << num2 << " = " << num1 * num2 << endl;
// 整数和整数运算结果是整数
cout << num1 << " / " << num2 << " = " << num1 / num2 << endl;
// 将其中一个数声明为浮点数,以获得浮点数除法结果
double num1_double = num1;
cout << num1_double << " / " << num2 << " = " << num1_double / num2 << endl;
cout << num1 << " % " << num2 << " = " << num1 % num2 << endl;
return 0;
}
代码解析:
-
使用
cin
从标准输入读取两个整数num1
和num2
,并使用空格分隔。 -
使用
cout
输出加法、减法和乘法运算的结果,每个结果占一行。 -
对于整数除法,添加注释说明整数和整数运算的结果是整数。
-
为了获得浮点数除法结果,将其中一个数(
num1
)声明为double
类型的变量num1_double
,然后进行除法运算。 -
输出取模运算的结果。
-
使用
endl
操作符来换行,而不是\n
。
易错点模拟:
-
如果输入的
num2
为0,在进行除法或取模运算时会导致运行时错误(除以零)。 -
如果输入的数字不是整数(例如包含小数点),使用
cin
读取时会导致输入错误,后续的计算可能会产生意外结果。 -
如果在取模运算中使用浮点数,编译器会报错,因为取模运算符
%
只能用于整数类型。