C++啃书(一)开始

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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值