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. restful设计风格

    restful是一种软件设计风格,并不是标准,它只是提供了一组设计原则和约束条件. ① restful 提倡面向资源编程,url接口尽量要使用名词,不要使用动词 ② 在url中可以体现版本号 ③可以根 ...

  2. 阿里二面,面试官居然把 TCP 三次握手问的这么细致

    TCP 的三次握手和四次挥手,可以说是老生常谈的经典问题了,通常也作为各大公司常见的面试考题,具有一定的水平区分度.看似是简单的面试问题,如果你的回答不符合面试官期待的水准,有可能就直接凉凉了. 本文 ...

  3. Java 读取Word文本/段落格式属性

    本文介绍通过Java后端程序代码来读取Word文本和段落格式的方法. 本次测试环境如下: Word版本:2013 编译环境:IntelliJ IDEA2018 Work库:free spire.doc ...

  4. Kubernetes 常见问题总结

    Kubernetes 常见问题总结 如何删除不一致状态下的 rc,deployment,service 在某些情况下,经常发现 kubectl 进程挂起现象,然后在 get 时候发现删了一半,而另外的 ...

  5. List集合中的交集 并集和差集

    目录 List集合求交集 并集 差集 Set集合 Lambda表达式 List集合求交集 并集 差集 两种方法求集 Set集合 交集 两个集合中有相同的元素 抽取出来的数据就是为交集 @Test pu ...

  6. OO 第二单元

    前言 ​ 第二单元 OO 作业的主题是多线程,课程组通过了电梯调度这个经典问题考察了多线程的调度. ​ 从第五次作业到第七次作业的迭代为,单部多线程可捎带电梯,多部多线程可捎带调度电梯(电梯属性相同) ...

  7. Spring(四)Spring JdbcTemplate&声明式事务

    JdbcTemplate基本使用 01-JdbcTemplate基本使用-概述(了解) JdbcTemplate是spring框架中提供的一个对象,是对原始繁琐的Jdbc API对象的简单封装.spr ...

  8. YARP实现Dapr服务调用的反向代理

    楔子 公司即将新开项目,打算用点时髦的技术,需要探探路.之前没做过微服务项目,没有技术栈方面的积(负)累(债), 干脆就上微软的分布式运行时Dapr......嗯......用来服务发现,然后等测试用 ...

  9. matlab帮助文档

    matlab的纯文本帮助命令有多种,help.lookfor.which.doc.get.type等 help命令  help命令用来查询一个函数的使用方式. help fun %fun是函数名称   ...

  10. Linux下安装Anaconda 并进行用户共享

    下载镜像 wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/ Anaconda3-5.3.1-Linux-x86_64.sh 安装 ...