C++PRIMER第五版练习题答案第一章

应该有很多小伙伴和我一样,闲来无事买了本C++的书自己啃,课后的练习题做的很揪心,这里我分享下我写的答案,希望能帮助到你,提供源码,就不跑了哈,毕竟现在是第一章,很很很基础,当看到后面,分享到后面的时候,注释会写详细点方便大家一起讨论思考~~

1.1

int main()
{
return 0;
}

1.2

int main()
{
return -1;
}

1.3

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

1.4

#include <iostream>
int main()
{
int i=0,j=0;
std::cin>>i>>j;
std::cout<<"The ji of "<<i<<" * "<<j<<" is "<<i*j<<std::endl;
return 0;
}

1.5

#include <iostream>
int main()
{
int i=0,j=0;
std::cin>>i>>j;
std::cout<<"The ji of ";
std::cout<<i;
std::cout<<" * ";
std::cout<<j;
std::cout<<" is ";
std::cout<<i*j<<std::endl;
return 0;
}

1.6

/*
不合法,找不到cout输出,<<符号左侧应都加上std::cout
*/

1.7

/*
*下列行为不允许发生,注释界定符不可嵌套
* /* */
*
* / int main()
{
return 0;
}

1.8

#include <iostream>
int main()
{
std::cout<<"/*"; //可
std::cout<<"*/"; //可
std::cout<</*"*/"*/; //不可
std::cout<</*"*/"/*"/*"*/; //可
}

1.9

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

1.10

#include <iostream>
int main()
{
int val=10;
while (val>=0)
{
std::cout<<"value is "<<val<<"\n"<<std::endl;
--val;
}
return 0; }

1.11++

#include <iostream>
int main()
{
int i=0,j=0;
std::cout<<"please input two numbers and i will give you the num in thems"<<std::endl;
std::cin>>i>>j;
if (i>=j)
{
while (i>=j)
{
std::cout<<"value is "<<i<<"\n"<<std::endl;
--i;
}
}
else
{
while (i<=j)
{
std::cout<<"value is "<<j<<"\n"<<std::endl;
--j;
}
}
return 0; }

1.12

#include <iostream>
int main()
{
int sum=0;
for(int i=-100;i<=100;++i)
{
sum+=i;
}
std::cout<<"The sum is "<<sum<<std::endl;
}

1.13

#include <iostream>
int main()
{
int sum=0,val=50;
for(;val<=100;++val)
sum+=val;
std::cout<<"The sum of 50 to 100 is "<<sum<<std::endl; int valu=10;
for (;valu>=0;--valu)
std::cout<<"value is "<<valu<<"\n"<<std::endl;
int i=0,j=0;
std::cout<<"please input two numbers and i will give you the num in thems"<<std::endl;
std::cin>>i>>j;
if (i>=j)
{
for (;i>=j;--i)
std::cout<<"value is "<<i<<"\n"<<std::endl;
}
else
{
for (;i<=j;--j)
std::cout<<"value is "<<j<<"\n"<<std::endl;
}
return 0;
}

1.14

// for循环和while循环的优缺点如下:
// 1、在for循环中,循环控制变量的初始化和修改都放在语句头部分,形式较简洁,且特别适用于循环次数已知的情况。
// 2、在while循环中,循环控制变量的初始化一般放在while语句之前,循环控制变量的修改一般放在循环体中,形式上不如for语句简洁,但它比较适用于循环次数不易预知的情况(用某一条件控制循环)。
// 3、两种形式各有优点,但它们在功能上是等价的,可以相互转换。

1.15

// 编译器各类错误
// 1.语法错误
// 2.类型错误
// 3.声明错误

1.16

#include <iostream>
int main()
{
int sum=0,value = 0;
std::cout<<"I will print your sum and you can input not integer num to end\n";
while (std::cin>>value)
sum+=value;
std::cout<<"The sum is "<<sum<<std::endl;
return 0;
}

1.17&1.18

#include <iostream>
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.19

#include <iostream>
int main()
{
int i=0,j=0;
std::cout<<"please input two numbers and i will give you the num in thems"<<std::endl;
std::cin>>i>>j;
if (i>=j)
{
while (i>=j)
{
std::cout<<"value is "<<i<<"\n"<<std::endl;
--i;
}
}
else
{
while (i<=j)
{
std::cout<<"value is "<<j<<"\n"<<std::endl;
--j;
}
}
return 0; }

1.20

#include <iostream>
#include "Sales_item.h"
int main()
{
Sales_item book;
std::cout <<"input Ctrl+Z exit "<<std::endl;
while (std::cin >> book)
{
std::cout << book <<std::endl;
}
return 0;
}

1.21

#include <iostream>
#include "Sales_item.h"
int main()
{
Sales_item book1,book2;
std::cin >> book1 >> book2;
if (book1.isbn() == book2.isbn())
{
std::cout << book1 + book2 << std::endl;
return 0;
}
else
{
std::cout << "Please input have same isbn data" << std::endl;
return -1;
}
}

1.22

#include <iostream>
#include "Sales_item.h"
int main()
{
Sales_item total;
std::cout <<"Please input same data and then input not same data output and then input Ctrl+Z exit "<<std::endl;
if (std::cin >> total)
{
Sales_item trans;
while (std::cin >> trans)
{
if (total.isbn() == trans.isbn())
{
total += trans;
}
else
{
std::cout << total <<std::endl;
}
}
}
return 0;
}

1.23

#include <iostream>
#include "Sales_item.h"
int main()
{
Sales_item total;
std::cout <<"Please input same data and then input not same data output and then input Ctrl+Z exit "<<std::endl;
if (std::cin >> total)
{
Sales_item trans;
int cnt = 1;
while (std::cin >> trans)
{
if (total.isbn() == trans.isbn())
{
//total += trans;
++cnt;
}
else
{
std::cout << total.isbn() << " occours " << cnt << " times " <<std::endl;
total = trans;
cnt = 1;
}
}
std::cout << total.isbn() << " occours " << cnt << " times " <<std::endl;
}
return 0;
}

1.24

#include <iostream>
#include "Sales_item.h"
/**
* @brief 文件重定向: $ addItems <infile>outfile
* 此处我们控制台查看一下测试的文件内容,然后再重定向,再看一下重定向里的内容
* 1. type book_sales.txt
* 2. 1.24.exe <book_sales.txt>1.24.txt
* 3. type 1.24.txt
*
*
*/ int main()
{
Sales_item total;
std::cout <<"Please input same data and then input not same data output and then input Ctrl+Z exit "<<std::endl;
if (std::cin >> total)
{
Sales_item trans;
int cnt = 1;
while (std::cin >> trans)
{
if (total.isbn() == trans.isbn())
{
//total += trans;
++cnt;
}
else
{
std::cout << total.isbn() << " occours " << cnt << " times " <<std::endl;
total = trans;
cnt = 1;
}
}
std::cout << total.isbn() << " occours " << cnt << " times " <<std::endl;
}
return 0;
}

1.25

#include <iostream>
#include "Sales_item.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;
}

最后的这个头文件也就是我们要导入的,买书的应该都知道怎么下,这里贴一下源码~~

Sales_item.h

/*
* This file contains code from "C++ Primer, Fifth Edition", by Stanley B.
* Lippman, Josee Lajoie, and Barbara E. Moo, and is covered under the
* copyright and warranty notices given in that book:
*
* "Copyright (c) 2013 by Objectwrite, Inc., Josee Lajoie, and Barbara E. Moo."
*
*
* "The authors and publisher have taken care in the preparation of this book,
* but make no expressed or implied warranty of any kind and assume no
* responsibility for errors or omissions. No liability is assumed for
* incidental or consequential damages in connection with or arising out of the
* use of the information or programs contained herein."
*
* Permission is granted for this code to be used for educational purposes in
* association with the book, given proper citation if and when posted or
* reproduced.Any commercial use of this code requires the explicit written
* permission of the publisher, Addison-Wesley Professional, a division of
* Pearson Education, Inc. Send your request for permission, stating clearly
* what code you would like to use, and in what specific way, to the following
* address:
*
* Pearson Education, Inc.
* Rights and Permissions Department
* One Lake Street
* Upper Saddle River, NJ 07458
* Fax: (201) 236-3290
*/ /* This file defines the Sales_item class used in chapter 1.
* The code used in this file will be explained in
* Chapter 7 (Classes) and Chapter 14 (Overloaded Operators)
* Readers shouldn't try to understand the code in this file
* until they have read those chapters.
*/ #ifndef SALESITEM_H
// we're here only if SALESITEM_H has not yet been defined
#define SALESITEM_H // Definition of Sales_item class and related functions goes here
#include <iostream>
#include <string> class Sales_item {
// these declarations are explained section 7.2.1, p. 270
// and in chapter 14, pages 557, 558, 561
friend std::istream& operator>>(std::istream&, Sales_item&);
friend std::ostream& operator<<(std::ostream&, const Sales_item&);
friend bool operator<(const Sales_item&, const Sales_item&);
friend bool
operator==(const Sales_item&, const Sales_item&);
public:
// constructors are explained in section 7.1.4, pages 262 - 265
// default constructor needed to initialize members of built-in type
Sales_item() = default;
Sales_item(const std::string &book): bookNo(book) { }
Sales_item(std::istream &is) { is >> *this; }
public:
// operations on Sales_item objects
// member binary operator: left-hand operand bound to implicit this pointer
Sales_item& operator+=(const Sales_item&); // operations on Sales_item objects
std::string isbn() const { return bookNo; }
double avg_price() const;
// private members as before
private:
std::string bookNo; // implicitly initialized to the empty string
unsigned units_sold = 0; // explicitly initialized
double revenue = 0.0;
}; // used in chapter 10
inline
bool compareIsbn(const Sales_item &lhs, const Sales_item &rhs)
{ return lhs.isbn() == rhs.isbn(); } // 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_item
return lhs.units_sold == rhs.units_sold &&
lhs.revenue == rhs.revenue &&
lhs.isbn() == rhs.isbn();
} inline bool
operator!=(const Sales_item &lhs, const Sales_item &rhs)
{
return !(lhs == rhs); // != defined in terms of operator==
} // assumes that both objects refer to the same ISBN
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
Sales_item
operator+(const Sales_item& lhs, const Sales_item& rhs)
{
Sales_item ret(lhs); // copy (|lhs|) into a local object that we'll return
ret += rhs; // add in the contents of (|rhs|)
return ret; // return (|ret|) by value
} std::istream&
operator>>(std::istream& in, Sales_item& s)
{
double price;
in >> s.bookNo >> s.units_sold >> price;
// check that the inputs succeeded
if (in)
s.revenue = s.units_sold * price;
else
s = Sales_item(); // input failed: reset object to default state
return in;
} std::ostream&
operator<<(std::ostream& out, const Sales_item& s)
{
out << s.isbn() << " " << s.units_sold << " "
<< s.revenue << " " << s.avg_price();
return out;
} double Sales_item::avg_price() const
{
if (units_sold)
return revenue/units_sold;
else
return 0;
}
#endif

C++PRIMER第五版练习题答案第一章的更多相关文章

  1. 《C++Primer》第五版习题答案--第一章【学习笔记】

    C++Primer第五版习题解答---第一章 ps:答案是个人在学习过程中书写,可能存在错漏之处,仅作参考. 作者:cosefy Date: 2022/1/7 第一章:开始 练习1.3 #includ ...

  2. 《C++Primer》第五版习题答案--第二章【学习笔记】

    C++Primer第五版习题解答---第二章 ps:答案是个人在学习过程中书写,可能存在错漏之处,仅作参考. 作者:cosefy Date: 2020/1/9 第二章:变量和基本类型 练习2.1: 类 ...

  3. C++Primer第五版——习题答案和解析

    感谢原文博主的分享:https://blog.csdn.net/misayaaaaa/article/details/53786215 新手入门必看的书.知识是一个系统化并且相互关联的体系,零散的东西 ...

  4. Windows程序设计(第五版)学习:第一章 起步

    第一章 起步 1,windows主要的三个动态库: kernel32.dll负责操作系统的传统工作,包括内存管理.文件输入以及任务管理等. user32.dll负责用户界面的操作,即所有窗口的管理 g ...

  5. C++Primer第五版——习题答案目录

    目前正在刷<C++Primer>这本书,会在博客上记录课后习题答案,答案仅供参考. 因为水平有限,如有有误之处,希望大家不吝指教,谢谢! 目录地址 使用的系统为:win 10,编译器:VS ...

  6. C++Primer第五版——习题答案详解(一)

    习题答案目录:https://www.cnblogs.com/Mered1th/p/10485695.html 第1章 开始&&第2章 变量和基本类型 练习1.3 #include&l ...

  7. C++Primer第五版——习题答案详解(五)

    习题答案目录:https://www.cnblogs.com/Mered1th/p/10485695.html 第6章 函数 练习6.4 #include<iostream> using ...

  8. C++Primer第五版——习题答案详解(十)

    习题答案目录:https://www.cnblogs.com/Mered1th/p/10485695.html 第11章 关联容器 练习11.3 #include<iostream> #i ...

  9. C++Primer第五版——习题答案详解(二)

    习题答案目录:https://www.cnblogs.com/Mered1th/p/10485695.html 第3章 字符串.向量和数组 练习3.2 一次读入一整行 #include<iost ...

随机推荐

  1. 什么是SSR SSR有什么用 如何使用使用SSR

    什么是SSR 以下信息来自维基百科: Shadowsocks(简称SS)是一种基于Socks5代理方式的加密传输协议,也可以指实现这个协议的各种开发包.当前包使用Python.C.C++.C#.Go语 ...

  2. Html5新增了什么

    h5新增了些什么 介绍 HTML5 是下一代的 HTML, 将成为 HTML.XHTML 以及 HTML DOM 的新标准. 起步 HTML5 是 W3C 与 WHATWG 合作的结果. 为 HTML ...

  3. CIE标准色度系统(下)

    四.色温与相关色温 根据绝对黑体光谱分布特性的普朗克定律,由普朗克公式可以计算出黑体对应于某一温度的光谱分布,并由此应用CIE标准色度系统可获得该温度下黑体发光的三刺激值和色品坐标,从而在色品图上得到 ...

  4. [面试仓库]HTML面试题汇总

      HTML这一块呢,说简单也简单,说难也不是那么容易.但我们在各个面试要求中,大部分都把HTML这一条摆在了第一位,重要性可想而知.这个位置算是有关HTML的一个汇总点了,亦会在这里及时补充. 1, ...

  5. (四)Struts2的Action(深入讲解版)

    Struts2的Action 开发者需要提供大量的Action,并在struts.xml中配置Action.Action类里包含了对用户请求的处理逻辑,因为我们也称Action为业务控制器. 一.编写 ...

  6. Spring Boot 整合Junit和redis

    14. Spring Boot整合-Junit 目标:在Spring Boot项目中使用Junit进行单元测试UserService的方法 分析: 添加启动器依赖spring-boot-starter ...

  7. 解决CentOS虚拟机无法显示本地IP问题

    1 问题描述 CentOS虚拟机无法显示本地ip,如图: 2 尝试过的方法 参考过此处的解决方法,把网卡配置中的ONBOOT修改为YES: 但是原来的网卡配置也是YES,所以修改的方法没有用,尝试了一 ...

  8. Spring Boot+MySQL+Spring Data JPA一个Web的Demo

    2020.06.23 更新 1 概述 一个简单的web项目配合MySQL+Hibernate+Tomcat的简单示例demo,很容易在此基础上扩展成自己的项目. 2 创建工程 笔者IDE为Intell ...

  9. (十二)docker --privileged

    1. privileged参数作用 --privileged Give extended privileges to this container 大约在0.6版,privileged被引入docke ...

  10. 14. VUE 子组件修改父组件的值

    在 Vue 当中,父组件 -> 子组件 传值,都是通过属性的形式传递的. 子组件 修改 传递数据 直接操作父组件传递过来的值,用是可以用的,但是打开控制台后,会发现 Vue 有个警告:你不要直接 ...