本文地址: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章相关推荐

  1. C++Primer 习题 第7章

    C++Primer 习题 第7章 Person.h#ifndef PERSON_H #define PERSON_H #include<iostream> #include<stri ...

  2. C++primer习题--第3章

    [习题 2.11] 编写程序,要求用户输入两个数--底数( base)和指数( exponent),输出底数的指数次方的结果. #include <iostream> #include & ...

  3. 《C++ Primer》第14章 14.3节习题答案

    <C++ Primer>第14章 操作重载与类型转换 14.3节  算术和关系运算符  习题答案 练习14.13:你认为Sales_data类还应该支持哪些其他算术运算符(参见表4.1,第 ...

  4. 《C++ Primer》第9章 9.3节习题答案

    <C++ Primer>第9章 顺序容器 9.3节顺序容器操作习题答案 练习9.18:编写程序,从标准输入读取string序列,存入一个deque中.编写一个循环,用迭代器打印deque中 ...

  5. 《C++ Primer》第15章 15.4节习题答案

    <C++ Primer>第15章 面向对象程序设计 15.4节 抽象基类 习题答案 练习15.15:定义你自己的Disc_quote和Bulk_quote. [出题思路]本题练习实现不同折 ...

  6. 《C++ Primer》第15章 15.2节习题答案

    <C++ Primer>第15章 面向对象程序设计 本章介绍了面向对象程序设计的两个重要概念:继承和动态绑定,包括: □●继承.基类.派生类的基本概念. □●虚函数和虚基类. □●继承中的 ...

  7. 《C++ Primer》第13章 13.5节习题答案

    <C++ Primer>第13章 拷贝控制 13.5节 动态内存管理类 习题答案 练习13.39:编写你自己版本的StrVec,包括自己版本的reserve.capacity(参见9.4节 ...

  8. 《C++ Primer》第12章 12.3节习题答案

    <C++ Primer>第12章 动态内存 12.3节使用标准库:文本查询程序 习题答案 练习12.27:TextQuery和QueryResult类只使用了我们已经介绍过的语言和标准库特 ...

  9. 《C++ Primer》第5章 5.2节习题答案

    <C++ Primer>第5章 语句 5.2节 语句作用域 练习5.4:说明下列例子的含义,如果存在问题,试着修改它. (a)while(string::iterator iter != ...

最新文章

  1. UI设计培训分享:UI设计师如何准备面试?
  2. linux运维/自动化开发__目录
  3. Jquery Mobile --小知识
  4. 电路基础知识 -- 数模信号
  5. Spring Boot druid监控页添加登录访问权限(用户名+密码)
  6. JEP 181不兼容,嵌套类/ 2
  7. windows下 , py运用了 进程池, 将py打包成exe,出现错误的 解决思路之一
  8. mysql修改engine_mysql下修改engine引擎的方法
  9. iOS--React Native浏览器插件
  10. 写入sql时间_一问SQL优化就无从藏身?那只是你对原理的精髓掌握不深
  11. 二维码加logo demo
  12. excel转word后表格超出页面_原来Excel和Word还能这样互转,完全不会格式错乱!
  13. 包包各部位名称图解_手袋包细节详解
  14. java字母排序_Java实现按照大小写字母顺序排序的方法
  15. H5 嵌入条码和二维码生成
  16. 2D-X光图像重建3D-CT图像项目总结—后续补充
  17. Python Turtle绘图[难度2星]:甜美棒棒糖(基础效果 / 加描边优化)
  18. ICESSL使用备忘
  19. 2017-11-06 日语编程语言抚子 - 第三版特色初探
  20. php 发送邮箱的stmp服务器

热门文章

  1. 单片机c语言必背代码_【典藏】深度剖析单片机程序的运行(C程序版)
  2. pyqt5必须和python对应_python 使用PyQt5
  3. uniapp 定时执行_ftp上传,完成ftp定时上传、下载只需3步
  4. html中正方形列表标签属性,如何在HTML中创建带有方形项目符号的无序列表?
  5. python和sqlserver应用_Windows和Linux下使用Python访问SqlServer的方法介绍
  6. model存储 swift_Swift语言IOS8开发战记10.Data Model
  7. TIMING_03 时序分析原理
  8. android 通知栏按钮,android 通知栏添加按钮点击效果
  9. python中start用法_Start Python 学习笔记(琐碎知识,持续更新。。。)
  10. cookie放在请求头_Web安全:你必须知道的“Cookie安全”