C++primer习题--第1章
本文地址:http://www.cnblogs.com/archimedes/p/cpp-primer-chapter1-ans.html,转载请注明源地址。
【习题 1.3】
编一个程序,在标准输出上打印“Hello, World”。
#include <iostream> using namespace std; int main() {cout<<"Hello, World\n";return 0; }
【习题 1.4】
我们的程序利用内置加法操作符“+”来产生两个数的和。编写程序,使用乘法操作符“*”产生两个数的积。
#include <iostream> using namespace std; int main( ) {cout<<"Enter two numbers: "<<endl;int v1, v2;cin>>v1>>v2;cout<<"The product of"<<v1<<" and "<<v2<<" is "<<v1 * v2<<endl;system("PAUSE");return 0; }
【习题 1.5】
我们的程序使用了一条较长的输出语句。重写程序,使用单独的语句打印每一个操作数。
#include <iostream> using namespace std; int main( ) {cout<<"Enter two numbers: "<<endl;int v1, v2;cin>>v1>>v2;cout<<"The sum of";cout<<v1;cout<<" and ";cout<<v2;cout<<" is ";cout<<v1 + v2;cout<<endl;system("PAUSE");return 0; }
【习题 1.10】
用 for 循环编程,求从 50~100 的所有自然数的和。然后用 while 循环重写该程序。
用for循环:
#include <iostream> using namespace std; int main( ) {int i, sum=0;for(i=50; i<=100; ++i)sum+=i;cout<<"sum of 50 to 100 is "<<sum<<endl;system("PAUSE");return 0; }
用 while 循环:
#include <iostream> using namespace std; int main( ) {int i, sum;i=50;sum=0;while(i++<=100)sum+=i;cout<<"sum of 50 to 100 is "<<sum<<endl;system("PAUSE");return
【习题 1.11】
用 while 循环编程,输出 10~0 递减的自然数。然后用 for循环重写该程序。
用 while 循环:
#include <iostream> using namespace std; int main( ) {int i=10;while(i>=0)cout<<i--<<endl;return 0; }
用 for循环:
#include <iostream> using namespace std; int main( ) {for(int i=10; i >=0; --i)cout<<i<<endl; return 0; }
【习题 1.16】
编写程序,输出用户输入的两个数中的较大者。
#include <iostream> using namespace std; int main( ) {int a, b;cout<<"请输入两个数: ";cin>>a>>b;cout<<"较大的一个数是: "<< ((a >= b)? a : b)<<endl;system("PAUSE");return 0; }
【习题 1.17】
编写程序,要求用户输入一组数。输出信息说明其中有多少个负数
#include <iostream> using namespace std; int main( ) {int num, a;num=0;while(cin>>a) if(a < 0) num++;cout<<"输入的负数数量为: "<<num<<endl; return 0; }
【习题 1.18】
编写程序,提示用户输入两个数幵将这两个数范围内的每个数写到标准输出。
#include <iostream> using namespace std; void print(int a, int b) {a++;while(a < b)cout<<a++<<" ";cout<<endl; } int main( ) {int a,b,i;cout<<"请输入两个数: ";cin>>a>>b;if(a < b)print(a,b);elseprint(b,a); return 0; }
【习题 1.21】
本书配套网站(http://www.awprofessional.com/cpp_primer)的第1章的代码目录下有 Sales_ item.h 源文件。复制该文件到你的工作目录。编写程序,循环遍历一组书的销售交易, 读入每笔交易幵将交易写至标准输出。
#include <iostream> #include "Sales_item.h" using namespace std; int main( ) {Sales_item book;cout<<"输入交易:"<<endl;while(cin>>book) {cout<<"售出书的本数、总收入、平均价格:"<<endl;cout<<book<<endl;}system("PAUSE");return 0; }
附上 Sales_ item.h 源文件:
#ifndef SALESITEM_H #define SALESITEM_H// Definition of Sales_item class and related functions goes here #include <iostream> #include <string>class Sales_item { friend bool operator==(const Sales_item&, const Sales_item&); // other members as before public:// added constructors to initialize from a string or an istreamSales_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:// operations on Sales_item objects// member binary operator: left-hand operand bound to implicit this pointerSales_item& operator+=(const Sales_item&);// other members as beforepublic:// operations on Sales_item objectsdouble avg_price() const;bool same_isbn(const Sales_item &rhs) const{ return isbn == rhs.isbn; }// default constructor needed to initialize members of built-in typeSales_item(): units_sold(0), revenue(0.0) { } // private members as before private:std::string isbn;unsigned units_sold;double revenue;};// nonmember binary operator: must declare a parameter for each operand Sales_item operator+(const Sales_item&, const Sales_item&);inline bool operator==(const Sales_item &lhs, const Sales_item &rhs) {// must be made a friend of Sales_itemreturn 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); // != defined in terms of operator== }using std::istream; using std::ostream;// assumes that both objects refer to the same isbn inline Sales_item& Sales_item::operator+=(const Sales_item& rhs) {units_sold += rhs.units_sold; revenue += rhs.revenue; return *this; }// assumes that both objects refer to the same isbn inline Sales_item operator+(const Sales_item& lhs, const Sales_item& rhs) {Sales_item ret(lhs); // copy lhs into a local object that we'll returnret += rhs; // add in the contents of rhs return ret; // return ret by value }inline istream& operator>>(istream& in, Sales_item& s) {double price;in >> s.isbn >> s.units_sold >> price;// check that the inputs succeededif (in)s.revenue = s.units_sold * price;else s = Sales_item(); // input failed: reset object to default statereturn in; }inline ostream& operator<<(ostream& out, const Sales_item& s) {out << s.isbn << "\t" << s.units_sold << "\t" << s.revenue << "\t" << s.avg_price();return out; }inline double Sales_item::avg_price() const {if (units_sold) return revenue/units_sold; else return 0; } #endif
View Code
【习题 1.22】
编写程序,读入两个具有相同 ISBN 的 Sales_item 对象幵产生它们的和。
#include <iostream> #include "Sales_item.h" using namespace std; int main( ) {Sales_item trans1, trans2;cout<<"读入交易:"<<endl;cin>>trans1>>trans2;if(trans1.same_isbn(trans2))cout<<"两笔交易具有相同的ISBN,和为:"<<endl<<trans1 + trans2;elsecout<<"两笔交易没有相同的ISBN";return 0; }
【习题 1.23】
编写程序,读入几个具有相同 ISBN 的交易,输出所有读入交易的和。
#include <iostream> #include "Sales_item.h" using namespace std; int main( ) {Sales_item sum, trans;cout<<"读入交易:"<<endl;if(cin>>sum) {while(cin>>trans) {if(sum.same_isbn(trans))sum += trans;else {cout<<"不同的ISBN!"<<endl;return -1;}}} else {cout<<"no data!"<<endl;return -1;}return 0; }
【习题 1.24】
编写程序,读入几笔不同的交易。对于每笔新读入的交易,要确定它的 ISBN 是否和以前的交易的 ISBN 一样,并且记下每一个 ISBN 的交易的总数。
通过给定多笔不同的交易来测试程序。这些交易必须代表多个不同的 ISBN,但是每个ISBN 的记录应分在同一组。
#include <iostream> #include <map> #include <string> #include "Sales_item.h" using namespace std; int main( ) {Sales_item trans;cout<<"读入交易:"<<endl;cin>>trans;map<string, int> count;count[trans.getIsbn()]++;while(cin>>trans) {++count[trans.getIsbn()];}map<string, int>::iterator it;for(it=count.begin(); it!=count.end(); it++)cout<<it->first<<":"<<it->second<<endl;system("PAUSE");return 0; }
转载于:https://www.cnblogs.com/wuyudong/p/cpp-primer-chapter1-ans.html
C++primer习题--第1章相关推荐
- C++Primer 习题 第7章
C++Primer 习题 第7章 Person.h#ifndef PERSON_H #define PERSON_H #include<iostream> #include<stri ...
- C++primer习题--第3章
[习题 2.11] 编写程序,要求用户输入两个数--底数( base)和指数( exponent),输出底数的指数次方的结果. #include <iostream> #include & ...
- 《C++ Primer》第14章 14.3节习题答案
<C++ Primer>第14章 操作重载与类型转换 14.3节 算术和关系运算符 习题答案 练习14.13:你认为Sales_data类还应该支持哪些其他算术运算符(参见表4.1,第 ...
- 《C++ Primer》第9章 9.3节习题答案
<C++ Primer>第9章 顺序容器 9.3节顺序容器操作习题答案 练习9.18:编写程序,从标准输入读取string序列,存入一个deque中.编写一个循环,用迭代器打印deque中 ...
- 《C++ Primer》第15章 15.4节习题答案
<C++ Primer>第15章 面向对象程序设计 15.4节 抽象基类 习题答案 练习15.15:定义你自己的Disc_quote和Bulk_quote. [出题思路]本题练习实现不同折 ...
- 《C++ Primer》第15章 15.2节习题答案
<C++ Primer>第15章 面向对象程序设计 本章介绍了面向对象程序设计的两个重要概念:继承和动态绑定,包括: □●继承.基类.派生类的基本概念. □●虚函数和虚基类. □●继承中的 ...
- 《C++ Primer》第13章 13.5节习题答案
<C++ Primer>第13章 拷贝控制 13.5节 动态内存管理类 习题答案 练习13.39:编写你自己版本的StrVec,包括自己版本的reserve.capacity(参见9.4节 ...
- 《C++ Primer》第12章 12.3节习题答案
<C++ Primer>第12章 动态内存 12.3节使用标准库:文本查询程序 习题答案 练习12.27:TextQuery和QueryResult类只使用了我们已经介绍过的语言和标准库特 ...
- 《C++ Primer》第5章 5.2节习题答案
<C++ Primer>第5章 语句 5.2节 语句作用域 练习5.4:说明下列例子的含义,如果存在问题,试着修改它. (a)while(string::iterator iter != ...
最新文章
- UI设计培训分享:UI设计师如何准备面试?
- linux运维/自动化开发__目录
- Jquery Mobile --小知识
- 电路基础知识 -- 数模信号
- Spring Boot druid监控页添加登录访问权限(用户名+密码)
- JEP 181不兼容,嵌套类/ 2
- windows下 , py运用了 进程池, 将py打包成exe,出现错误的 解决思路之一
- mysql修改engine_mysql下修改engine引擎的方法
- iOS--React Native浏览器插件
- 写入sql时间_一问SQL优化就无从藏身?那只是你对原理的精髓掌握不深
- 二维码加logo demo
- excel转word后表格超出页面_原来Excel和Word还能这样互转,完全不会格式错乱!
- 包包各部位名称图解_手袋包细节详解
- java字母排序_Java实现按照大小写字母顺序排序的方法
- H5 嵌入条码和二维码生成
- 2D-X光图像重建3D-CT图像项目总结—后续补充
- Python Turtle绘图[难度2星]:甜美棒棒糖(基础效果 / 加描边优化)
- ICESSL使用备忘
- 2017-11-06 日语编程语言抚子 - 第三版特色初探
- php 发送邮箱的stmp服务器
热门文章
- 单片机c语言必背代码_【典藏】深度剖析单片机程序的运行(C程序版)
- pyqt5必须和python对应_python 使用PyQt5
- uniapp 定时执行_ftp上传,完成ftp定时上传、下载只需3步
- html中正方形列表标签属性,如何在HTML中创建带有方形项目符号的无序列表?
- python和sqlserver应用_Windows和Linux下使用Python访问SqlServer的方法介绍
- model存储 swift_Swift语言IOS8开发战记10.Data Model
- TIMING_03 时序分析原理
- android 通知栏按钮,android 通知栏添加按钮点击效果
- python中start用法_Start Python 学习笔记(琐碎知识,持续更新。。。)
- cookie放在请求头_Web安全:你必须知道的“Cookie安全”