入門基礎
1.最簡單的c++代碼
int main()
{
return 0;
}
最簡單的代碼,只有一個int 類型的主函數,返回值爲0。
2.標準的輸入和輸出
#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爲換行。
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.
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;
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.
4.類和對象
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>,調到前需要在代碼中寫出來。
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;
}