版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C++4.8.1自主讲坛初二(14)班杨沛1763派遣(2012年APIO亚太地区信息学奥赛)在一个忍者的帮派里,一些忍者们被选中派遣给顾客,然后依据自己的工作获取报偿。在这个帮派里,有一名忍者被称之为Master。除了Master以外,每名忍者都有且仅有一个上级。为保密,同时增强忍者们的领导力,所有与他们工作相关的指令总是由上级发送给他的直接下属,而不允许通过其他的方式发送。1763派遣现在你要招募一批忍者,并把它们派遣给顾客。你需要为每个被派遣的忍者支付一定的薪水,同时使得支付的薪水总额不超过你的预算。另外,为了发送指令,你需要选择一名忍者作为管理者,要求这个管理者可以向所有被派遣的忍者发送指令,在发送指令时,任何忍者(不管是否被派遣)都可以作为消息的传递人。管理者自己可以被派遣,也可以不被派遣。当然,如果管理者没有被派遣,你就不需要支付管理者的薪水。你的目标是在预算内使顾客的满意度最大。这里定义顾客的满意度为派遣的忍者总数乘以管理者的领导力,其中每个忍者的领导力也是一定的。1763派遣写一个程序,给定每一个忍者i的上级Bi,薪水Ci,领导力Li,以及支付给忍者们的薪水总预算M,输出在预算内满足上述要求时顾客满意度的最大值。输入描述:第一行包含两个整数N和M,其中N表示忍者的个数,M表示薪水的总预算。接下来N行描述忍者们的上级、薪水以及领导力。其中的第i行包含三个整数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简史在过去的几十年中,计算机技术以令人惊讶的速度发展着,当前,笔记本电脑的计算速度和存储信息的能力超过了20世纪60年代的大型机。很多程序员可能还记得,将数叠穿孔卡片提交给充斥着整个房间的大型计算机系统的时代,而这种系统只有100KB的内存,比当今智能手机的内存都少得多。计算机语言也得到了发展,尽管变化可能不是天翻地覆的,但也是非常重要的。体积更大、功能更浅的计算机引出了更大、更复杂的程序,而这些程序在程序管理和维护方面带来了新的问题。CSINCE1972C++SINCE1988百度百科C++是在C语言的基础上开发的一种通用编程语言,应用广泛。C++支持多种编程范式--面向对象编程、泛型编程和过程化编程。最新正式标准C++14于2014年8月18日公布。其编程领域众广,常用于系统开发,引擎开发等应用领域,是至今为止最受广大受用的最强大编程语言之一,支持类:类、封装、重载等!简史在20世纪70年代,C和Pascal这样的语言引领人们进入了结构化编程的时代,这种机制把秩序和规程带劲了迫切需要这种性质的领域中。除了提供结构化编程工具外,C还能生成简洁、快速运行的程序,并提供了处理硬件问题的能力,如管理通信端口和磁盘驱动器。这些因素使C语言成为20世纪80年代占统治地位的编程语言。同时,20世纪80年代,人们也见证了一种新编程模式的成长:面向对象编程(OOP)。SmallTalk和C++语言具备这种功能。面向对象程序设计
(ObjectOrientedProgramming)结构化程序设计(ProcedureProgramming)汇编语言(AssemblyLanguage)机器语言(MachineLanguage)1,0简史与C语言一样,C++也是在贝尔实验室诞生的,BjarneStroustrup于20世纪80年代在这里开发出这种语言。C++是C语言的加集,任何一个合格的C语言程序都是一个合格的C++程序。用他自己的话来说,“C++主要是为了我的朋友和我不必再使用汇编语言、C语言或其它现代高级语言来变成而设计的。它的主要更能使可以更方便地编写出好程序,让每个程序员更加快乐”。编程步骤源代码编译器目标代码链接程序可执行代码启动代码库代码文件扩展名C++实现源代码文件的扩展名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!请按任意键继续...进入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的文件内容添加到程序中呢?答案设计程序与外部世界间的通信。iostream中的io指的是输入(进入程序的信息)和输出(从程序中发送出去的信息)。C++的输入输出方案及iostream文件中的多个定义。为了使用cout来显示消息,第一个程序需要这些定义。#include编译指令导致iostream文件的内容随源代码文件的内容一起被发送给编译器。像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!请按任意键继续...进入C++注释,由前缀//标识预处理编译指令#include函数头:intmain()编译指令usingnamespace函数体,用{和}括起使用C++的cout工具显示消息的语句结束main()函数的return语句进入C++去掉修饰后,程序hellosky.cpp的基本结构如下:intmain(){
statements
return0;}进入C++常见的函数头:所有C++程序中,都必须有一个main()函数。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)在使用新名称时创建新的变量,而不用显示地进行声明。这看上去对用户比较友好,事实上从短期上说确实如此。问题是,如果错误地了变量名,将在不知情的情况下建一个新的变量。在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++程序,输入两个数,输出它们的和。
头文件: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语句将引导程序执行语句或语句块;如果条件是false,程序讲跳过这条语句或语句块。if(test-condition)
statementif(test-condition){
statement}分支语句和逻辑运算符if语句让程序决定是否执行特定的语句或语句块,而ifelse语句则让程序决定执行两条语句或语句块中的哪一条,这种语句对于选择其中一种操作很有用。if(test-condition)
statement1else
statement2if(test-condition)
statement1elseif(test-condition)
statement2else
statement3分支语句和逻辑运算符练习:写出程序,输入一个分数(0-100),使用int。100分输出很好,90-99输出好,80-89输出不错,70-79输出还可以,60-69输出继续加油,0-60输出艹,其它情况输出什么鬼。大于小于等于大于等于小于等于不等于><==>=<=!=与或&&||分支语句和逻辑运算符if(age>17&&age<35) √if(17<age<35) ×if(sqrt((a+b)*c-d)>1) √if(!(x>5)) √=if(x<=5) √循环和关系表达式//forloop.cpp–introducingtheforloop#include<iostream>intmain(){
usingnamespacestd;
for(inti=0;i<5;i++)
cout<<“ColorOrganizationDafaisGood!”<<endl;
return0;}循环和关系表达式//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. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中考英语一轮复习之一般过去时
- 手工艺品店前台服务感悟
- 医疗行业专业技能培训总结
- 酒店行业服务员工作概述
- 银行工作总结严谨高效服务至上
- 餐厨垃圾处理工作总结
- 畜牧行业安全工作总结
- 2024年秋叶的教案
- 2025届张家口市高三语文上学期期末质量监测试卷及答案解析
- 农贸市场租赁合同(2篇)
- 山东省济南市2023-2024学年高三上学期期末学习质量检测物理试题(原卷版)
- 2024年新华人寿保险股份有限公司招聘笔试参考题库含答案解析
- 能源托管服务投标方案(技术方案)
- 2024年新奥集团股份有限公司招聘笔试参考题库含答案解析
- 乳头混淆疾病演示课件
- 高速公路涉路施工许可技术审查指南(一)
- 海南物流行业发展趋势分析报告
- 安全运维配置检查
- 移相变压器计算程序标准版
- 期末测试(试题)-三年级数学上册人教版
- 药剂科门诊中成西药房利用PDCA循环降低门诊药房调剂内差发生率品管圈QCC成果汇报
评论
0/150
提交评论