C++Prime 第一章 开始
2022-11-20~2022-11-22
1.1 编写一个简单的C++程序
- c++程序由一个或多个函数构成,其中一个必须命名为mian,操作系统通过调用main函数来允许c++程序。
- 函数的定义包括四个部分:1、返回类型 2、函数名 3、参数列表 4、函数体
- main函数的返回类型必须是int
- 当函数有返回值是,返回值的数据类型必须和函数定义时的返回类型一致
- 大多数系统中返回值0代表成功、非0返回值由系统定义
1.2 编译、运行程序
- linux下使用gcc编译文件: gcc -o prog1 prog1.cpp
- linux下运行gcc编译后的文件: ./prog1
1.1 节练习
- 练习1.1:参考1.2
- 练习1.2:
int main()
{
return -1;
}
- 在linux下使用gcc、windows10下使用Visual Studio2019编译器编译没有观察到任何不同(与返回值非0比较)
1.2 初识输入输出
- c++未定义任何io语句,提供一个全面的标准库来进行IO操作
- iostream库中的istream、和ostream分别代表输入、输出流
- 标准输入对象cin
- 标准输出对象cout
- 标准错误cerr
- clog输入程序一般性信息(日志)
- endl刷新缓冲区(buffer)的内容到设备中,保证目前位置程序产生的所有输出都写入输出流中
1.2 节练习
- 练习1.3:
using namespace std;
#include<iostream>
int main()
{
cout << "Hello, World" << endl;
system("pause");
return 0;
}
- 练习1.4:
using namespace std;
#include<iostream>
int main()
{
int a = 1, b = 2;
cout << a + b << endl;
system("pause");
return 0;
}
- 练习1.5:
using namespace std;
#include<iostream>
int main()
{
cout << "learn" << " C++" << " in" << " 1949" << endl;
cout << "learn";
cout << " C++";
cout << " in";
cout << " 1949";
cout << endl;
system("pause");
return 0;
}
- 练习1.6: 不合法、输出语法错误、<<的左侧需要接收一个ostream对象,将第一行、第二行末尾的;去掉
using namespace std;
#include<iostream>
int main()
{
int v1 = 1, v2 = 2;
cout << "The sum of " << v1
<< " and " << v2
<< " is " << v1 + v2 << endl;
system("pause");
return 0;
}
1.3 注释简介
- 单行注释:
// 单行注释
int a = 1; // 半行注释
- 多行注释
/* 多行注释
* 注释xx
* 注释xxx
* 一般多行注释中用*表示这行属于多行注释的一部分
*/
- ctrl + k + c 多行注释快捷键vistul
- ctrl + k + u 取消多行注释快捷键
1.3 节练习
- 练习1.7:
using namespace std;
#include<iostream>
/*
int v1 = 1, v2 = 2;
cout << "The sum of " << v1
<< " and " << v2
<< " is " << v1 + v2 << endl;
system("pause");
/*return 0;*/
* /
int main()
{
return 0;
}
编译错误:expected unqualified-id before ‘/’ token
- 练习1.8: 看时觉得全部都是合法的,实际运行时第三句不合法、第四句合法的原因也和想象的原因不一样(所以即使多简单的代码都要实际运行确认)
using namespace std;
#include<iostream>
int main()
{
cout << "/*";
cout << "*/";
//cout << /* "*/" */;
// 更正 cout << /* "*/" */";
cout << /* "*/" /* "/*" */;
return 0;
}
1.4 控制流
- while语句:重复执行一段代码,直至给定条件为假为止
- 复合运算符+=:将运算符右侧对象加到左侧对象上,再将结果赋值给左侧对象
- 前缀递增运算符:++value,等价于value = value + 1
1.4.1练习
- 练习1.9
using namespace std;
#include<iostream>
int main()
{
int value = 50;
int sum = 0;
while (value <= 100)
{
sum += value;
++value;
}
cout << sum << endl;
return 0;
}
- 练习1.10
using namespace std;
#include<iostream>
int main()
{
int value = 9;
while (value > 0)
{
cout << value << endl;
--value;
}
return 0;
}
- 练习1.11
using namespace std;
#include<iostream>
int main()
{
int num1, num2;
cout << "输入两个整数" << endl;
cin >> num1 >> num2;
if (num1 > num2)
{
while (num2 < num1-1)
{
++num2;
cout << num2 << endl;
}
}
else
{
while (num1 < num2-1)
{
++num1;
cout << num1 << endl;
}
}
return 0;
}
1.4.2 for语句
- for循环语句=循环头+循环体
- 循环头=初始化语句+循环条件+表达式
1.4.2 练习
- 练习1.12:-100~100之间的整数相加,终值=0
- 练习1.13:
using namespace std;
#include<iostream>
int main()
{
// 练习1.9
int sum1 = 0;
for (int i = 50; i <= 100; ++i)
{
sum1 += i;
}
cout << sum1 << endl;
// 练习1.10
for (int i = 9; i >= 1; --i)
{
cout << i << endl;
}
// 练习1.11
int num1, num2;
cout << "输入两个数" << endl;
cin >> num1 >> num2;
if (num1 > num2)
{
int sum2 = 0;
for (int i = num2; i <= num1 - 1; ++i)
{
sum2 += i;
}
cout << sum2 << endl;
}
else
{
int sum2 = 0;
for (int i = num1; i <= num2 - 1; ++i)
{
sum2 += i;
}
cout << sum2 << endl;
}
return 0;
}
- 练习1.14 while循环优点:结构简洁,for结构相对复杂。for循环优点:无需将初始化变量定义在结构体内或者结构体外
- 练习1.15: 1、语法错误:
using namespace std;
#include<iostream>
int main()
{
cout << "Read each file." << endl:
cout << Update master. << endl;
cout << "Write new master." endl;
return 0
}
2、类型错误
using namespace std;
#include<iostream>
int main()
{
int num;
num = "hello";
cout << num << endl;
return 0;
}
3、声明错误
using namespace std;
#include<iostream>
int main()
{
cout << num << endl;
return 0;
}
1.4.3 读取数量不定的输入数据
- while(cin>>value){...}
- 如果使用一个istream对象作为条件,其效果就是检测流的状态,当流返回文件结束符EOF(End of File)时或者错误时就会使条件变为假从而跳出循环
- windows系统下ctrl+z=输入文件结束符
1.4.3 节练习
- 练习1.16:
using namespace std;
#include<iostream>
int main()
{
int value, sum = 0;
while (cin >> value)
{
sum += value;
}
cout << sum << endl;
system("pause");
return 0;
}
1.44 if语句
using namespace std;
#include<iostream>
int main()
{
int current_value, times = 0;
if (cin >> current_value)
{
++times;
int value;
while (cin >> value)
{
if (current_value == value)
{
++times;
}
else
{
cout << current_value << "times is " << times << endl;
current_value = value;
times = 1;
}
}
cout << current_value << "times is " << times << endl;
}
system("pause");
return 0;
}
1.4.4 节练习
- 练习1.17~1.18:如下图:
- 练习1.19如练习1.4.1所写
1.5 类简介
- 无相关纪要
1.5.1 Sales_item类
- 无相关纪要
1.5.1 节练习
- 练习1.20:
using namespace std;
#include<iostream>
#include"Sales_item.h"
int main()
{
Sales_item book;
cin >> book;
cout << book << endl;
system("pause");
return 0;
}
- 练习1.21:
using namespace std;
#include<iostream>
#include"Sales_item.h"
int main()
{
Sales_item book1, book2;
cin >> book1 >> book2;
cout << book1 + book2 << endl;
system("pause");
return 0;
}
- 练习1.22
using namespace std;
#include<iostream>
#include"Sales_item.h"
int main()
{
Sales_item book, sum_book;
while (cin >> book)
{
sum_book += book;
}
cout << sum_book << endl;
system("pause");
return 0;
}
1.5.2初识成员函数
- 成员函数:定义为类的一部分的函数,也称作方法
1.5.2 节练习
- 练习1.23~1.24:
using namespace std;
#include<iostream>
#include"Sales_item.h"
int main()
{
Sales_item item1, item2, items;
cin >> item1;
items = item1;
while (cin >> item2)
{
if (item1.isbn == item2.isbn)
{
items += item2;
item1 = item2;
}
else
{
cout << items << endl;
items = item2;
item1 = item2;
}
}
cout << items << endl;
system("pause");
return 0;
}
1.6 节练习
- done
C++Prime学习笔记 文章被收录于专栏
勇敢和愚蠢只有一剑之差