C++ Primer入門基礎

入門基礎

1.最簡單的c++代碼

int main()
{
	return 0;
}

最簡單的代碼,只有一個int 類型的主函數,返回值爲0。
這裏的0是返回給windows機器的,表示代碼正常運行。如果返回一個非0的數,表示代碼異常。
這是最簡單的代碼,每一個.cpp程序都必須含有的。

2.標準的輸入和輸出

標誌的輸入和輸出都存儲在#include<iostream>頭文件裏,它是c++自帶頭文件。
#include<iostream>

int main()
{
	std::cout << "Hello world!" << std::endl;
	int v1;
	std::cin >> v1;
	std::cout << v1 << std::endl;
	return 0;
}

std是一個命名空間,::爲作用域聲明符,cout爲標準輸出,cin爲標準輸入,endl爲換行。
std::cout表示使用std中的cout.
標準輸入輸出都只能輸入輸出基礎類型。


3.簡單控制結構

1>if語句

#include<iostream>

int main()
{
	int v1;
	std::cin >> v1;
	if (v1 < 5)std::cout << v1 << std::endl;
	else std::cout << -v1 << std::endl;
	return 0;
}

代碼表示,當v1小於5時,輸出v1,否則輸出-v1.
if就是條件語句,表示在不同條件下的不同可能。


2>while語句

#include<iostream>

int main()
{
	int num=0;
	while (num < 10)
	{
		num += 1;
	}
	std::cout << num << std::endl;
	return 0;
}

代碼表示當num小於10的時候num就加1,輸出結果爲10;
while(循環條件)
{
循環內容;
}

3>for語句

#include<iostream>

int main()
{
	int num=0;
	for (int i = 0; i < 10; i++)
		num++;
	std::cout << num << std::endl;
	return 0;
}

代碼表示i<10的時候num就加1,輸出結果也是10.
for(初始化一個元素;循環條件;每次循環時被初始化的元素改變)
{
循環內容;
}

4.類和對象

類是一種存儲類型爲.h的代碼,
表示的是我們規定的一些事物的集合。
如動物是一個類,狗是一個類。
而對象便是類中某一個特定的事物,如一隻叫‘wangcai’的狗就是一個對象。
class Dog//狗的類
{//類的屬性
public:
	Dog() :age(0){}//初始化
	int age;//年齡
};

#include<iostream>
#include"Dog.h"//調用Dog.h類

int main()
{
	Dog wangcai;//一隻叫wangcai的狗(對象)
	wangcai.age = 10;//給狗的年齡賦值
	std::cout << wangcai.age << std::endl;
	system("pause");
	return 0;
}

每一個類都存儲在.h頭文件中,就像#include<iostream>,調到前需要在代碼中寫出來。
"…….h"表示自己寫的頭文件
<>表示C++原本帶有的頭文件

5.C++程序示例:銷售圖書

#ifndef SALES_ITEM_H
#define SALES_ITEM_H

#include<iostream>
#include<string>

class Sales_item
{
public:
	Sales_item(const std::string &book) ://構造函數
		isbn(book), units_sold(0), revenue(0.0){}
	Sales_item(std::istream &is){ is >> *this; }
	friend std::istream& operator>>(std::istream&, Sales_item &);//賦值運算符
	friend std::ostream& operator<<(std::ostream&, const Sales_item &);
public:
	Sales_item & operator+=(const Sales_item&);
public:
	double avg_price()const;//平均價格
	bool same_isbn(const Sales_item &rhs)const//判斷書名是否相同
	{
		return isbn == rhs.isbn;
	}
	Sales_item() :units_sold(0), revenue(0.0){}//初始化
public:
	std::string isbn;//書名
	unsigned units_sold;//銷售量
	double revenue;//收入
};
using std::istream;
using std::ostream;
Sales_item operator+(const Sales_item&, const Sales_item&);
inline bool operator==(const Sales_item&lhs, const Sales_item& rhs)
{
	return lhs.units_sold == rhs.units_sold&&
		lhs.revenue == rhs.revenue&&
		lhs.same_isbn(rhs);
}
inline bool operator!=(const Sales_item&lhs, const Sales_item&rhs)
{
	return !(lhs == rhs);
}
inline Sales_item &Sales_item::operator+=(const Sales_item &rhs)
{
	units_sold += rhs.units_sold;
	revenue += rhs.revenue;	
	return *this;
}
inline	Sales_item operator+(const Sales_item&lhs, const Sales_item &rhs)
{
	Sales_item res(lhs);
	res += rhs;
	return res;
}
inline istream& operator>>(istream &in, Sales_item&s)
{
	double price;
	in >> s.isbn >> s.units_sold >> price;
	if (in)
		s.revenue = s.units_sold*price;
	else
		s = Sales_item();
	return in;
}
inline ostream& operator<<(ostream&out, const Sales_item&s)
{
	out << s.isbn << " " << s.units_sold << " " << s.revenue<<" "<<s.avg_price();
	return out;
}
inline double Sales_item::avg_price()const
{
	if (units_sold)
		return revenue / units_sold;
	else
		return 0;
}
#endif

#include<iostream>
#include"Sales_item.h"

int main()
{
	Sales_item total;//首條信息
	if (std::cin >> total)
	{
		Sales_item trans;//新入變量
		while (std::cin >> trans)
		{
			if (total.same_isbn(trans))//同一種書
				total += trans;//相加
			else//否則
			{
				std::cout << total << std::endl;//輸出上一種書
				total = trans;//替換
			}
		}
		std::cout << total << std::endl;//輸入結束,輸出最後一本書的結果
	}
	else
	{
		std::cerr << "No data?!" << std::endl;//沒有輸入,報錯
		system("pause");
		return -1;
	}
	system("pause");
	return 0;
}




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章