国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

《C++Primer》讀書筆記(一)開始

2019-11-11 02:29:56
字體:
供稿:網(wǎng)友

首先,了解一個(gè)我們需要嘗試的程序(書店程序),如下:

書店保存每條銷售記錄的檔案,包括3個(gè)數(shù)據(jù)項(xiàng):ISBN書號(hào)、售出冊(cè)數(shù)、售出單價(jià)需要能夠查詢每本書的銷量,銷售額和平均售價(jià)

我認(rèn)為,主要需要實(shí)現(xiàn)的是: - 檢測(cè)相同ISBN書號(hào) - 可重復(fù)錄入銷售記錄的輸入功能

書中提出,雖然沒有編寫程序,但是已經(jīng)可以確定它必須: - 定義變量 - 進(jìn)行輸入輸出 - 使用數(shù)據(jù)結(jié)構(gòu)保存數(shù)據(jù) - 檢測(cè)兩條記錄是否有相同的ISBN書號(hào) - 包含一個(gè)循環(huán)來處理銷售檔案中的每條記錄

接下來,介紹用C++來解決這些子問題

1.1 編寫一個(gè)簡(jiǎn)單的C++程序

1.一個(gè)函數(shù)的定義包含4個(gè)部分:返回類型、函數(shù)名、形參列表、函數(shù)體

2.重要概念:類型(類型不僅定義了數(shù)據(jù)元素的內(nèi)容,還定義了這類數(shù)據(jù)能進(jìn)行的運(yùn)算)

編譯、運(yùn)行程序

1.IDE:集成開發(fā)環(huán)境(Integrated Developed Environment)

2.程序文件成為源文件(source file),C++文件的后綴名常見為:cc、cxx、cpp、cp、c

3.從命令行==運(yùn)行編譯器==

在windows或者UNIX系統(tǒng)外殼程序窗口中,用

$ CC PRg1.cc

CC編譯器程序的名字,$是系統(tǒng)提示符

4.從命令行中==運(yùn)行執(zhí)行文件== 在windows中,有兩種方法

$ prog1 //忽略其擴(kuò)展名.exe$ ./prog1 //一些系統(tǒng)中,必須擇定文件位置,當(dāng)前目錄為./

而在==UNIX系統(tǒng)==中,必須使用==全文件名==

5.訪問==main返回值==

在windows和UNIX系統(tǒng)中,都可以用==echo==命令獲得返回值,在windows系統(tǒng)中

$ echo %ERROREVEL%

運(yùn)行GNU或微軟編譯器(常用編譯器:GNU、Visual Studio)

其中GNU編譯器,可以如下:

$ g++ -o prog1 prog1.ccg++ 是運(yùn)行命令-o prog1 是編譯器參數(shù)(指定生成的可執(zhí)行文件名為prog1)不指定此參數(shù)則可執(zhí)行文件:a.exe或者a.out

另外,Visual Studio編譯器命令可以如下:

C:/Users/me/programs> c1 /Ehsc prog1.ccC:/Users/me/programs>是系統(tǒng)提示符c1命令:調(diào)用編譯器/Ehsc是編譯器選項(xiàng),用來打開標(biāo)準(zhǔn)異常處理

練習(xí)

1.查閱編譯器文檔,確定文件命名規(guī)則,編譯并運(yùn)行一個(gè)程序

參考CSDN博客 Windows下使用GNU編譯器

2.改寫程序返回值為-1,通常這是程序錯(cuò)誤的返回,觀察你的系統(tǒng)如何處理錯(cuò)誤標(biāo)識(shí)

1.2 初識(shí)輸入輸出

1.標(biāo)準(zhǔn)輸入輸出對(duì)象 - 標(biāo)準(zhǔn)輸入:cin - 標(biāo)準(zhǔn)輸出:cout - 標(biāo)準(zhǔn)錯(cuò)誤:cerr - 輸出運(yùn)行程序時(shí)的一般性信息:clog

2.一個(gè)使用IO庫的程序

#include <iostream>int main(){ std::cout<<"Enter two numbers:"<<std::endl; int v1=0,v2=1; std::cin>>v1>>v2; std::cout<<"The sum of"<<v1<<"and"<<v2<<"is"<<v1+v2<<std::endl; return 0;}

(1) #include指令必須在所有函數(shù)前面

(2) 輸出運(yùn)算符(<<) - 接受兩個(gè)對(duì)象:左側(cè)的運(yùn)算對(duì)象必須是一個(gè)ostream對(duì)象,右側(cè)的運(yùn)算對(duì)象是要打印的值;

(3) 操縱符(endl) - 寫入endl的效果是:結(jié)束當(dāng)前行,并將與設(shè)備關(guān)聯(lián)的緩沖(buffer)區(qū)中的內(nèi)容刷到設(shè)備中 - 緩沖刷新操作:保證到目前為止程序所產(chǎn)生的所有輸出都真正寫入輸出流中,而不是僅停留在內(nèi)存中等待寫入流

程序員在調(diào)試時(shí)添加打印語句,應(yīng)該一直保證刷新流,否則程序崩潰時(shí),輸出可能還留在緩沖區(qū),而推斷崩潰位置錯(cuò)誤

(4)使用標(biāo)準(zhǔn)庫中的名字 - 前綴std::是指出cout和endl的命名空間,命名空間可以幫助我們避免名字定義沖突 - 另一個(gè)更簡(jiǎn)便的方法:using聲明(第3章介紹)

(5)輸入運(yùn)算符(>>) - 其左側(cè)是一個(gè)istream,右側(cè)是一個(gè)接受對(duì)象

練習(xí)

1.編寫程序,打印“Hello World”

#include <iostream>int main(){ std::cout<<"Hello World"<<std::endl; return 0;}

2.編寫使用乘法運(yùn)算打印兩個(gè)數(shù)乘積的程序

將例子中的加號(hào)改為 * 號(hào)即可

3.重寫程序,將打印對(duì)象放在一條獨(dú)立語句中

將例子程序中的std::cout切開,記得添加std::endl

4.解釋下列語句是否合法

std::cout<<"The sum of"<<v1; <<"and"<<v2; <<"is"<<v1+v2<<std::endl;

不合法,第一、二行缺乏std::endl結(jié)束輸出,第二、三行缺乏std::cout作為指定輸出的對(duì)象

1.3 注釋

(1)注釋界定符(/* */),可以多行,不可以嵌套

(2)單行和半行(//)

1.4 控制流

(1)while語句,形式如下

while(condition) statement

(2)復(fù)合賦值運(yùn)算符 - (+=)本質(zhì)上相當(dāng)于sum=sum+val - (++)前綴:將運(yùn)算對(duì)象加1,等價(jià)于val=val+1

練習(xí)

1.編寫程序,用while循環(huán)50~100整數(shù)相加

#include <iostream>int main(){ int sum=0,val=50; while(val<=100){ sum+=val; val++; } std::cout<<"The sum is:"<<sum<<std::endl; return 0;}

2.使用–運(yùn)算實(shí)現(xiàn)10~0的運(yùn)算 - 上程序改成(–)

3.編程:用戶輸入兩個(gè)數(shù),打印出這兩個(gè)數(shù)之間的整數(shù)

#include <iostream>int main(){ int left,right; std::cout<<"Please enter two numbers"<<std::endl; std::cin>>left>>right; while(left<=right){ std::cout<<left<<std::endl; left++; } return 0;}

(1) for語句,形式如下

for(init-statement;condition;expression) statement

讀取數(shù)量不定的輸入數(shù)據(jù)

int main(){ int sum=0,value=0; while(std::cin>>value) sum+=value; std::cout<<"Sum is: "<<sum<<std::endl; return 0;}windows中,文件輸入結(jié)束符為:ctrl + ZMac或者UNIX系統(tǒng)中,文件輸入結(jié)束符為:ctrl + D

(4) if 語句,形式如下

if(conditon) statement統(tǒng)計(jì)輸入中每個(gè)值連續(xù)出現(xiàn)了多少次程序int main(){ 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; } } std::cout<<currVal<<" occurs "<<cnt<<" times"<<std::endl; } return 0;}

1.5 類簡(jiǎn)介

(1)通過定義一個(gè)類來定義自己的數(shù)據(jù)結(jié)構(gòu)

(2)關(guān)鍵概念:類定義了行為 - 類的作者決定了類類型對(duì)象上可以使用的所有操作

==(3)使用文件重定向== - 當(dāng)測(cè)試程序時(shí),反復(fù)敲鍵盤是非常乏味的,可以利用文件重定向

$ addItems <infile>outfile程序已經(jīng)為編譯為名為addItems的可執(zhí)行文件,上述命令會(huì)從一個(gè)名為infile的文件讀取銷售記錄,并將輸出結(jié)果寫入到一個(gè)名為outfile的文件中

1.6書店程序

#include <iostream>#include "Sales_items.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;}
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 永善县| 道真| 庆云县| 江川县| 永清县| 凉城县| 甘南县| 铜鼓县| 多伦县| 四平市| 广丰县| 阳信县| 菏泽市| 故城县| 定州市| 贡山| 韩城市| 普宁市| 大田县| 满城县| 龙山县| 北辰区| 乐业县| 岐山县| 包头市| 钦州市| 汨罗市| 平塘县| 祁连县| 于都县| 东源县| 马关县| 白河县| 哈密市| 中方县| 大名县| 玉山县| 宁南县| 南开区| 于都县| 宝应县|