1.编写一个简单的C++程序
- 新建项目
文件→新建→项目
Visual C++→Win32控制台应用程序:输入名称、位置
下一步→空项目→完成
创建一个源文件:源文件→添加→新建项
Visual C++→C++文件:名称、位置
C++必须有main函数: 返回类型(int型,0表示成功)、函数名、形参列表、函数体
int main()
{
return 0;
}
(1)编译、运行程序
源文件→(编译)→可执行文件→(运行)→
类型=元素+运算
(2)Hello world
#include<iostream>
using namespace std;
int main()
{
cout << "hello world!" << endl;
system("pause");
return 0;
}
2.初识输入输出
iostream库:istream和ostream
标准输入输出对象:cin(istream)
cout,cerr,clog(ostream)
(1)两个数相加
#include <iostream>
int main()
{
std::cout << "Please enter 2 numbers: " << std::endl;
int v1 = 0, v2 = 0;
std::cin >> v1 >> v2;
std::cout << "The sum of " << v1 << " and " << v2
<< " is " << v1 + v2 << std::endl;
return 0;
}
输出结果:
- #include <头文件> :放在源文件的开始位置;
- 表达式 :由运算对象(一个或多个)和运算符(一个)组成
- 向流写入数据 :对象 <<(输出运算符) 对象
endl(操纵符,结束当前行)
以下两个代码块输出相同
std::cout << "Please enter 2 numbers: " << std::endl;
std::cout << "Please enter 2 numbers: ";
std::cout << std::endl;
-
使用标准库中的名字 :前缀std::指出名字cout和endl是定义在名为std的命名空间(namespace)中的。(:: 作用域运算符 ,using声明更方便一些)
-
从流读取数据 :对象 >>(输入运算符) 对象
以下两个代码块输出相同
std::cin >> v1 >> v2;
std::cin >> v1;
std::cin >> v2;
- 完成程序 :输出结果
3.注释简介
单行注释: //
界定符对注释:/* */ (可每行都加 * 来区分,不能嵌套)
4.控制流
(1)while语句
while (condition) {
statement
}
#include <iostream>
int main()
{
int sum = 0, val = 1;
//只要val的值小于等于10,while循环就会持续执行
while (val <= 10) {
sum += val;
++val;
}
std::cout << "Sum of 1 to 10 inclusive is "
<< sum << std::endl;
return 0;
}
输出结果:
(2)for语句
for (初始化语句;循环条件;表达式)
循环体·
#include<iostream>;
int main()
{
int sum = 0;
//从1加到10
for (int val = 1; val <= 10; ++val)
sum += val;
std::cout << "Sum of 1 to 10 is: " << sum << std::endl;
return 0;
}
(3)读取数量不定的输入数据
在不知道要对多少个数求和的情况下,就需要不断读取数据直至没有新的输入为止。
#include<iostream>
int main()
{
int sum = 0, value = 0;
//读取数据直到遇到文件尾,计算所有读入值的和
while (std::cin >> value){
sum += value;
}
std::cout << "Sum is: " << sum << std::endl;
return 0;
}
输出结果:
ctrl+z:文件结束符
(4)if语句
统计在输入中每个值连续出现了多少次:
#include<iostream>
int main()
{
//currVal是正在统计的数,将读入的新值存入val
int currVal = 0, val = 0;
//读取第一个数,并确保有数据可以处理
if (std::cin >> currVal){
int cnt = 1; //计数
while (std::cin >> val){ //读取剩余的数
if (val == currVal)
++cnt;
else{
std::cout << currVal << " occurs " << cnt << " times." << std::endl;
currVal = val; //记住新值
cnt = 1; //重置计数器
}
} //while结束
//打印文件中最后一个值的个数
std::cout << currVal << " occures " << cnt << " times." << std::endl;
} //if结束
return 0;
}
输出结果:
5.类简介
定义一个新类型
- 类名
- 哪里定义
- 所支持的操作
(1)Sales_item类
变量(对象)+操作
- 读写Sales_item
在写好Sales_item.h的基础上编写源文件:
标准库的头文件用<>包围,不是标准库的用" "包围。
#include <iostream>
#include "Sales_item.h"
int main()
{
Sales_item book;
//读入ISBN号、售出的册数以及销售价格
std::cin >> book;
//写入ISBN号、售出的册数 总销售额和平均价格
std::cout << book << std::endl;
return 0;
}
输出结果:
- Sales_item对象的加法
#include <iostream>
#include "Sales_item.h"
int main()
{
Sales_item item1, item2;
std::cin >> item1 >> item2; //读取一对交易记录
std::cout << item1 + item2 << std::endl; //打印它们的和
return 0;
}
输出结果:
(2)初识成员函数(方法)
item1.isbn():名为item1的对象的isbn成员。
将两个Sales_item对象相加的程序首先应该检查两对象是否有相同的ISBN。
#include <iostream>
#include "Sales_item.h"
int main()
{
Sales_item item1, item2;
std::cin >> item1 >> item2;
//首先检查itme1和itme2是否表示相同的书
if (item1.isbn() == item2.isbn()) {
std::cout << item1 + item2 << std::endl;
return 0; //表示成功
}
else {
std::cerr << "Data must refer to same ISBN" << std::endl;
return -1; //表示失败
}
}
6.书店程序
#include <iostream>
#include "Sales_item.h"
int main()
{
Sales_item total; //保存下一条交易记录的变量
//读入第一条交易记录,并确保有数据可以处理
if (std::cin >> total) {
Sales_item trans; ///保存和的变量
//读入并处理剩余交易记录
while (std::cin >> trans) {
//如果我们仍在处理相同的书
if (total.isbn() == trans.isbn()) {
total += trans; //更新总销售额
}
else {
std::cout << total << std::endl;
total = trans;
}
}
std::cout << total << std::endl;
}
else {
//没有输入,警告读者
std::cerr << "NO data?" << std::endl;
return -1; //表示失败
}
return 0;
}