版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
C++4.8.1自主講壇初二(14)班楊沛1763派遣(2012年APIO亞太地區(qū)信息學奧賽)在一個忍者的幫派里,一些忍者們被選中派遣給顧客,然后依據(jù)自己的工作獲取報償。在這個幫派里,有一名忍者被稱之為Master。除了Master以外,每名忍者都有且僅有一個上級。為保密,同時增強忍者們的領導力,所有與他們工作相關的指令總是由上級發(fā)送給他的直接下屬,而不允許通過其他的方式發(fā)送。1763派遣現(xiàn)在你要招募一批忍者,并把它們派遣給顧客。你需要為每個被派遣的忍者支付一定的薪水,同時使得支付的薪水總額不超過你的預算。另外,為了發(fā)送指令,你需要選擇一名忍者作為管理者,要求這個管理者可以向所有被派遣的忍者發(fā)送指令,在發(fā)送指令時,任何忍者(不管是否被派遣)都可以作為消息的傳遞人。管理者自己可以被派遣,也可以不被派遣。當然,如果管理者沒有被派遣,你就不需要支付管理者的薪水。你的目標是在預算內(nèi)使顧客的滿意度最大。這里定義顧客的滿意度為派遣的忍者總數(shù)乘以管理者的領導力,其中每個忍者的領導力也是一定的。1763派遣寫一個程序,給定每一個忍者i的上級Bi,薪水Ci,領導力Li,以及支付給忍者們的薪水總預算M,輸出在預算內(nèi)滿足上述要求時顧客滿意度的最大值。輸入描述:第一行包含兩個整數(shù)N和M,其中N表示忍者的個數(shù),M表示薪水的總預算。接下來N行描述忍者們的上級、薪水以及領導力。其中的第i行包含三個整數(shù)Bi
,Ci
,Li分別表示第i個忍者的上級,薪水以及領導力。Master滿足Bi=0,并且每一個忍者的上級的編號一定小于自己的編號Bi
<i。AuthorizedtranslationfromtheEnglishlanguageedition,EntitledC++PrimerPlus(sixedition),978-0-321-77640-2byStephenPrata,publishedbyPearsonEducation,lnc.,publishingasAddison-Wesley,Copyright?2011PearsonEducation,lnc.
Allrightsreserved.Nopartofthisbookmaybereproducedortransmittedinanyformorbyanymeans,electronicormechanical,includingphotocopying,recordingorbyanyinformationstorageretrievalsystem,withoutpermissionfromPearsonEducationlnc.CHINESESIMPLIFIEDlanguageeditionpublishedbyPEARSONEDUCATIONASIALTD.,andPOSTS&TELECOMMUNICATIONSPRESSCopyright?2012.C++PrimerPlus(sixthedition)CHINESESIMPLIFIEDlanguageISBN978-7-115-27946-0簡史在過去的幾十年中,計算機技術以令人驚訝的速度發(fā)展著,當前,筆記本電腦的計算速度和存儲信息的能力超過了20世紀60年代的大型機。很多程序員可能還記得,將數(shù)疊穿孔卡片提交給充斥著整個房間的大型計算機系統(tǒng)的時代,而這種系統(tǒng)只有100KB的內(nèi)存,比當今智能手機的內(nèi)存都少得多。計算機語言也得到了發(fā)展,盡管變化可能不是天翻地覆的,但也是非常重要的。體積更大、功能更淺的計算機引出了更大、更復雜的程序,而這些程序在程序管理和維護方面帶來了新的問題。CSINCE1972C++SINCE1988百度百科C++是在C語言的基礎上開發(fā)的一種通用編程語言,應用廣泛。C++支持多種編程范式--面向?qū)ο缶幊?、泛型編程和過程化編程。最新正式標準C++14于2014年8月18日公布。其編程領域眾廣,常用于系統(tǒng)開發(fā),引擎開發(fā)等應用領域,是至今為止最受廣大受用的最強大編程語言之一,支持類:類、封裝、重載等!簡史在20世紀70年代,C和Pascal這樣的語言引領人們進入了結(jié)構(gòu)化編程的時代,這種機制把秩序和規(guī)程帶勁了迫切需要這種性質(zhì)的領域中。除了提供結(jié)構(gòu)化編程工具外,C還能生成簡潔、快速運行的程序,并提供了處理硬件問題的能力,如管理通信端口和磁盤驅(qū)動器。這些因素使C語言成為20世紀80年代占統(tǒng)治地位的編程語言。同時,20世紀80年代,人們也見證了一種新編程模式的成長:面向?qū)ο缶幊蹋∣OP)。SmallTalk和C++語言具備這種功能。面向?qū)ο蟪绦蛟O計
(ObjectOrientedProgramming)結(jié)構(gòu)化程序設計(ProcedureProgramming)匯編語言(AssemblyLanguage)機器語言(MachineLanguage)1,0簡史與C語言一樣,C++也是在貝爾實驗室誕生的,BjarneStroustrup于20世紀80年代在這里開發(fā)出這種語言。C++是C語言的加集,任何一個合格的C語言程序都是一個合格的C++程序。用他自己的話來說,“C++主要是為了我的朋友和我不必再使用匯編語言、C語言或其它現(xiàn)代高級語言來變成而設計的。它的主要更能使可以更方便地編寫出好程序,讓每個程序員更加快樂”。編程步驟源代碼編譯器目標代碼鏈接程序可執(zhí)行代碼啟動代碼庫代碼文件擴展名C++實現(xiàn)源代碼文件的擴展名UNIXC、cc、cxx、cGNUC++C、cc、cxx、cpp、c++DigitalMarscpp、cxxBorlandC++cppWatcomcppMicrosoftVisualC++cpp、cxx、ccFreestyleCodeWarriorcp、cpp、cc、cxx、c++進入C++//hellosky.cpp–displaysamessage#include<iostream>//aPREPROCESSORdirectiveintmain()//functionheader{//startoffunctionbodyusingnamespacestd;//makedefinitionsvisible
cout<<“Hello,Sky!”;//message
cout<<endl;//startanewline
return0;//terminatemain()}//endofafunctionbody進入C++Hello,Sky!進入C++//hellosky.cpp–displaysamessage#include<iostream>#include<windows.h>intmain{usingnamespacestd;
cout<<“Hello,Sky!”;cout<<endl;
system(“pause”);return0;}進入C++Hello,Sky!請按任意鍵繼續(xù)...進入C++//hellosky.cpp–displaysamessage#include<iostream>#include<windows.h>intmain{usingnamespacestd;
cout<<“Hello,Sky!”cout<<endl;
system(“pause”)return0;}進入C++//hellosky.cpp–displaysamessage#include<iostream>#include<windows.h>intmain{usingnamespacestd;
cout<<“Hello,Sky!”;
cout<<endl;
system(“pause”);return0;}進入C++為什么要將iostream的文件內(nèi)容添加到程序中呢?答案設計程序與外部世界間的通信。iostream中的io指的是輸入(進入程序的信息)和輸出(從程序中發(fā)送出去的信息)。C++的輸入輸出方案及iostream文件中的多個定義。為了使用cout來顯示消息,第一個程序需要這些定義。#include編譯指令導致iostream文件的內(nèi)容隨源代碼文件的內(nèi)容一起被發(fā)送給編譯器。像iostream這樣的文件叫做包含文件(includefile)——由于它們被包含在其他文件中;也叫頭文件(headerfile)——由于它們被包含在文件起始處。C++編譯器自帶了很多頭文件,每個頭文件都支持一組特定的工具。進入C++//system.cpp#include<windows.h>intmain(){
system(“echoHelloSky!”);system(“echoHelloSky!”);
system(“echoHelloSky!”);
system(“pause”);
return0;}進入C++@echooffechoHelloSky!echoHelloSky!echoHelloSky!echo.pause進入C++Hello,Sky!Hello,Sky!Hello,Sky!請按任意鍵繼續(xù)...進入C++注釋,由前綴//標識預處理編譯指令#include函數(shù)頭:intmain()編譯指令usingnamespace函數(shù)體,用{和}括起使用C++的cout工具顯示消息的語句結(jié)束main()函數(shù)的return語句進入C++去掉修飾后,程序hellosky.cpp的基本結(jié)構(gòu)如下:intmain(){
statements
return0;}進入C++常見的函數(shù)頭:所有C++程序中,都必須有一個main()函數(shù)。intmain()main()intmain(void)voidmain()進入C++在iostream中定義的用于輸出的cout變量實際上是std::cout,endl實際上是std::endl。std::cout<<“Hello,Sky!”;std::cout<<std::endl;usingstd::cout;usingstd::endl;cout<<“Hello,Sky!”;cout<<endl;usingnamespacestd;cout<<“Hello,Sky!”;cout<<endl;進入C++cout與換行符C++11的原始字符串可以包含回車cout<<“Hello,Sky!”;cout<<endl;cout<<“Hello,Sky!”<<endl;cout<<“Hello,Sky!\n”;cout<<“Hello”<<“,Sk”<<“y!”<<endl;進入C++//carrots.cpp–foodprocessingprogram//usesanddisplaysavariable#include<iostream>intmain(){
usingnamespacestd;
intn;n=25;
cout<<“Ihave”;
<<n<<“carrots.”<<endl;
n=n–1;
cout<<“Crunch,crunch.NowIhave”<<n<<“carrots.”;
cout<<endl;
return0;}進入C++Ihave25carrots.Crunch,crunch.NowIhave24carrots.進入C++為什么變量必須聲明?有些語言(最典型的是BASIC)在使用新名稱時創(chuàng)建新的變量,而不用顯示地進行聲明。這看上去對用戶比較友好,事實上從短期上說確實如此。問題是,如果錯誤地了變量名,將在不知情的情況下建一個新的變量。在BASIC中,程序員可能編寫如下程序:CastleDark=34...CastleDank=CastleDark+1...PRINTCastleDark進入C++intcarrots;carrots=1;intcarrots=1;intSteinway,Baldwin,Yamaha;yamaha==Baldwin=Steinway=88;進入C++//getinfo.cpp–inputandoutput#include<iostream>intmain(){
usingnamespacestd;
intc;
cout<<“Howmanycarrotsdoyouhave?”<<endl;
cin>>c;//C++input
cout<<“Hearareonemore.”;
c++;
cout<<“Nowyouhave”
<<c<<“carrots.”<<endl;
return0;}進入C++Howmanycarrotsdoyouhave?12Herearetwomore.Nowyouhave14carrots.進入C++寫出C++程序,輸入兩個數(shù),輸出它們的和。
頭文件:iostream.hwindows.h進入C++#include<iostream>#include<windows.h>intmain(){
usingnamespacestd;
inta,b;
cin>>a>>b;
cout<<a+b<<endl;
system(“pause”);
return0;}進入C++x=sqrt(6.25);//returnsthevalue2.5andassignsittoxintmain(){
...x=sqrt(6.25);
...}codeforsqrt().........return進入C++#include<iostream>#include<windows.h>intminimum(inta,intb){
usingnamespacestd;
if(b>a)
{
inttemp=a;
a=b;
b=temp;
}
for(inti=b;i>0;i--)
{
if(a%i==0){
if(b%i==0)
{
returni;}
}
}}intmain(){
usingnamespacestd;
inta,b;
cin>>a>>b;
cout<<minimum(a,b);system(“pause”);
return0;}分支語句和邏輯運算符IfyouhaveaMarcoPolocard,yougetextramiles.如果測試條件為true,則if語句將引導程序執(zhí)行語句或語句塊;如果條件是false,程序講跳過這條語句或語句塊。if(test-condition)
statementif(test-condition){
statement}分支語句和邏輯運算符if語句讓程序決定是否執(zhí)行特定的語句或語句塊,而ifelse語句則讓程序決定執(zhí)行兩條語句或語句塊中的哪一條,這種語句對于選擇其中一種操作很有用。if(test-condition)
statement1else
statement2if(test-condition)
statement1elseif(test-condition)
statement2else
statement3分支語句和邏輯運算符練習:寫出程序,輸入一個分數(shù)(0-100),使用int。100分輸出很好,90-99輸出好,80-89輸出不錯,70-79輸出還可以,60-69輸出繼續(xù)加油,0-60輸出艸,其它情況輸出什么鬼。大于小于等于大于等于小于等于不等于><==>=<=!=與或&&||分支語句和邏輯運算符if(age>17&&age<35) √if(17<age<35) ×if(sqrt((a+b)*c-d)>1) √if(!(x>5)) √=if(x<=5) √循環(huán)和關系表達式//forloop.cpp–introducingtheforloop#include<iostream>intmain(){
usingnamespacestd;
for(inti=0;i<5;i++)
cout<<“ColorOrganizationDafaisGood!”<<endl;
return0;}循環(huán)和關系表達式//forloop.cpp–introducingtheforloop#include<iostream>intmain(){
usingnamespacestd;
inti=0;
for(;i<5;)
{
cout<<“ColorOrganizationDafaisGood!”<<endl;
i=i+1;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 獲得性肥胖癥的臨床護理
- 《支付寶產(chǎn)品介紹》課件
- 【培訓課件】藥品安全性監(jiān)測與風險管理
- 銷售技能與知識的持續(xù)學習培訓
- 競爭對手分析與發(fā)展方向計劃
- 私人銀行服務協(xié)議三篇
- 《銷售培訓公司》課件
- 新浪微博生態(tài)相關行業(yè)投資規(guī)劃報告
- 工程和技術研究與試驗發(fā)展服務行業(yè)相關投資計劃提議
- 風險投資回報預測計劃
- 個人所得稅稅額計算
- IATF16949-程序文件-15供應商管理程序
- 廣東省華南師大附中2024屆化學高一上期中復習檢測試題含解析
- 【語文】陜西省西安市高新一小小學一年級上冊期末試卷
- 辦公場地租賃投標方案(技術標 )
- 超市冷鏈安裝施工方案
- 肢體加壓理療設備可用性驗證記錄表
- 2023年檢驗檢測機構(gòu)質(zhì)量手冊(依據(jù)2023年版評審準則編制)
- 研究生秘書工作總結(jié)(共8篇)
- 醫(yī)院人事制度匯編
- 運動改造大腦(新版)
評論
0/150
提交評論