当前位置: 首页 > news >正文

上海网站建设 网站制作网络营销策划与推广

上海网站建设 网站制作,网络营销策划与推广,深圳手机商城网站设计多少钱,网站的弹窗对话框怎么做C Primer5th 课后习题答案 第一章 1.1:查阅你使用的编译器的文档,确定它所使用的文件命名约定。编译并运行main程序。1.2:改写程序,让它返回-1。返回值-1通常被当作程序错误的标识。重新编译并运行你的程序,观察你的系…

C++ Primer5th 课后习题答案 第一章

    • 1.1:查阅你使用的编译器的文档,确定它所使用的文件命名约定。编译并运行main程序。
    • 1.2:改写程序,让它返回-1。返回值-1通常被当作程序错误的标识。重新编译并运行你的程序,观察你的系统如何处理main返回的错误标识。
    • 1.3:编写程序,在标准输出上打印Hello,World。
    • 1.4:我们的程序使用加法运算符+来将两个数相加。编写程序使用乘法运算符*,来打印两个数的积。
    • 1.5:我们将所有输出操作放在一条很长的语句中。重写程序,将每个运算对象的打印操作放在一条独立的语句中。
    • 1.6:解释下面程序片段是否合法。如果程序是合法的,它将输出什么?如果程序不合法,原因何在?应该如何修正?
    • 1.7:编译一个包含不正确的嵌套注释的程序,观察编译器返回的错误信息。
    • 1.8:指出下列哪些输出语句是合法的(如果有的话):预测编译这些语句会产生什么样的结果,实际编译这些语句来验证你的答案,改正每个编译错误。
    • 1.9:编写程序,使用while循环将50到100的整数相加。
    • 1.10:除了++运算符将运算对象的值增加1之外,还有一个递减运算符(--)实现将值减少1。编写程序,使用递减运算符在循环中按递减顺序打印出10到0之间的整数。
    • 1.11:编写程序,提示用户输入两个整数,打印出这两个整数所指定的范围内的所有整数。
    • 1.12:下面的for循环完成了什么功能?sum的终值是多少?
    • 1.13:使用for循环重做1.4.1中所有练习。
    • 1.14:对比for循环和while循环,两种形式的优缺点各是什么?
    • 1.15:编写程序,包含第14页“再探编译”中讨论的常见错误。熟悉编译器生成的错误信息。
    • 1.16:编写程序,从cin读取一组数,输出其和。
    • 1.17 如果输入的所有值都是相等的,本节的程序会输出什么?如果没有重复值,输出又会是怎样的?
    • 1.18 编译并运行本节的程序,给它输入全都相等的值。再次运行程序,输入没有重复的值。
    • 1.19 修改你为1.4.1节练习1.11(第11页)所编写的程序(打印一个范围内的数),使其能处理用户输入的第一个数比第二个数小的情况。
    • 1.20 在网站http://www.informit.com/title/032174113 上,第1章的代码目录包含了头文件 Sales_item.h。将它拷贝到你自己的工作目录中。用它编写一个程序,读取一组书籍销售记录,将每条记录打印到标准输出上。
    • 1.21 编写程序,读取两个 ISBN 相同的 Sales_item 对象,输出他们的和。
    • 1.22 编写程序,读取多个具有相同 ISBN 的销售记录,输出所有记录的和。
    • 1.23:编写程序,读取多条销售记录,并统计每个ISBN(每本书)有几条销售记录。
    • 1.24 输入表示多个 ISBN 的多条销售记录来测试上一个程序,每个 ISBN 的记录应该聚在一起。
    • 1.25 借助网站上的 Sales_item.h 头文件,编译并运行本节给出的书店程序。

1.1:查阅你使用的编译器的文档,确定它所使用的文件命名约定。编译并运行main程序。

头文件后缀一般是.h或.hpp等,源文件后缀一般是.c或.cpp等。

我使用的是VS2022,命令行可以输入 cl 文件名 可以在当前目录下生成.exe文件,然后双击打开即可运行。

1.2:改写程序,让它返回-1。返回值-1通常被当作程序错误的标识。重新编译并运行你的程序,观察你的系统如何处理main返回的错误标识。

int main() {return -1;
}

在Windows操作系统下main函数没有报告运行失败,因此返回0或-1在运行效果没有什么区别。

1.3:编写程序,在标准输出上打印Hello,World。

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

1.4:我们的程序使用加法运算符+来将两个数相加。编写程序使用乘法运算符*,来打印两个数的积。

#include<iostream>
int main()
{std::cout << "请输入两个数" << std::endl;int v1 = 0, v2 = 0;std::cin >> v1 >> v2;std::cout << v1 << "和" << v2 << "的乘积为" << v1 * v2 << std::endl;return 0;
}

1.5:我们将所有输出操作放在一条很长的语句中。重写程序,将每个运算对象的打印操作放在一条独立的语句中。

#include<iostream>
int main()
{std::cout << "请输入两个数" << std::endl;int v1 = 0, v2 = 0;std::cin >> v1 >> v2;std::cout << v1;std::cout << "和";std::cout << v2;std::cout << "的乘积为";std::cout << v1 * v2 << std::endl;return 0;
}

1.6:解释下面程序片段是否合法。如果程序是合法的,它将输出什么?如果程序不合法,原因何在?应该如何修正?

错误代码

#include<iostream>
int main()
{int v1 = 10, v2 = 20;std::cout << "The sum of" << v1;<< "and" << v2;<< "is" << v1 + v2 << std::endl;
}

不合法
第5行和第6行代码最后分别有一个分号,表示语句结束。而第6行和第7行<<操作符为二元操作符,两行第一个<<操作符没有左操作数,因此不合法。
修正代码

#include<iostream>
int main()
{std::cout << "The sum of" << v1<< "and" << v2<< "is" << v1 + v2 << std::endl;return 0;
}

1.7:编译一个包含不正确的嵌套注释的程序,观察编译器返回的错误信息。

/*
* 注释对/* */不能嵌套。
* “不能嵌套”几个字会被认为是源码,像剩余程序一样处理
*/
int main() {return 0;
}

在这里插入图片描述

1.8:指出下列哪些输出语句是合法的(如果有的话):预测编译这些语句会产生什么样的结果,实际编译这些语句来验证你的答案,改正每个编译错误。

#include<iostream>
int main()
{std::cout << "/*"; //合法 打印/*std::cout << "*/"; //合法 打印*/std::cout<< /* "*/" */; //不合法 缺少右引号//改正代码std::cout << /* "*/" */";std::cout <</* "*/" /* "/*" */; //合法 打印/*return 0;
}

1.9:编写程序,使用while循环将50到100的整数相加。

#include<iostream>
int main()
{int sum = 0, val = 50;while (val <= 100){sum += val;++val;}std::cout << "50-100的整数和为" << sum << std::endl;return 0;
}

1.10:除了++运算符将运算对象的值增加1之外,还有一个递减运算符(–)实现将值减少1。编写程序,使用递减运算符在循环中按递减顺序打印出10到0之间的整数。

#include<iostream>
int main()
{int val = 10;while (val >= 0){std::cout << val << std::endl;--val;			//每次循环val的值减1}return 0;
}

1.11:编写程序,提示用户输入两个整数,打印出这两个整数所指定的范围内的所有整数。

#include<iostream>
int main()
{int v1 = 0, v2 = 0;std::cout << "请输入两个整数:";std::cin >> v1 >> v2;//如果v1大于v2,则交换v1和v2的值if (v1 > v2) {v1 = v1 - v2;v2 = v1 + v2;v1 = v2 - v1;}while (v1 < (v2-1)) {v1++;std::cout << v1 << std::endl;}system("pause"); //冻结屏幕,便于观察程序的执行结果return 0;
}

1.12:下面的for循环完成了什么功能?sum的终值是多少?

sum = (-100)+(-99)+…+(-1)+0+1+…+99+100 = 0

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

1.13:使用for循环重做1.4.1中所有练习。

#include<iostream>
int main()
{int sum = 0, val = 50;for(val = 50;val <= 100; ++val){sum += val;}std::cout << "50-100的整数和为" << sum << std::endl;return 0;
}
#include<iostream>
int main()
{int val = 10;for(val = 10;val >= 0; --val){std::cout << val << std::endl;}return 0;
}
#include<iostream>
int main()
{int v1 = 0, v2 = 0;std::cout << "请输入两个整数:";std::cin >> v1 >> v2;//如果v1大于v2,则交换v1和v2的值if (v1 > v2) {v1 = v1 - v2;v2 = v1 + v2;v1 = v2 - v1;}for (int i = v1 + 1; i < v2; i++) {std::cout << i << std::endl;}system("pause");return 0;
}

1.14:对比for循环和while循环,两种形式的优缺点各是什么?

while的优点和缺点:- 结构不清晰,循环控制变量的初始化在while语句之前,其改变在while循环体中- 适用于不知道具体循环次数的情况for的优点和缺点:- 结构清晰,循环控制变量的初始化和修改都放在语句头部分- 适用于已知循环次数的情况

1.15:编写程序,包含第14页“再探编译”中讨论的常见错误。熟悉编译器生成的错误信息。

请自行尝试。

1.16:编写程序,从cin读取一组数,输出其和。

#include <iostream>int main() {int sum = 0, value = 0;while (std::cin >> value)sum += value;std::cout << "Sum is " << sum << std::endl;system("pause");return 0;
}

在Windows系统中,输入文件结束符的方法是Ctrl+Z,然后按Enter或Return。
在UNIX系统中,文件结束符输入是Ctrl+D。

1.17 如果输入的所有值都是相等的,本节的程序会输出什么?如果没有重复值,输出又会是怎样的?

见1.18

1.18 编译并运行本节的程序,给它输入全都相等的值。再次运行程序,输入没有重复的值。

#include <iostream>int main() {// currVal 是我们正在统计的数;我们将读入的新值存入valint currVal = 0, val = 0;// 读取第一个数,并确保确实有数据可以处理if (std::cin >> currVal) {int cnt = 1; // 保存我们正在处理的当前值的个数while (std::cin >> val) { // 读取剩余的数if (currVal == val) // 如果值相同++cnt; // 将cnt加1else { // 否则,打印前一个值的个数std::cout << currVal << " occurs "<< cnt << " times" << std::endl;currVal = val; // 记住新值cnt = 1; // 重置计数器}} // while循环在这里结束// 记住打印文件中最后一个值的个数std::cout << currVal << " occurs " << cnt << " times" << std::endl;} // 最外层的if语句在这里结束system("pause");return 0;
}

输出:

1 1 1 1 1 1 1 1^Z
1 occurs 8 times
1 2 3 4 5 6 7^Z
1 occurs 1 times
2 occurs 1 times
3 occurs 1 times
4 occurs 1 times
5 occurs 1 times
6 occurs 1 times
7 occurs 1 times

1.19 修改你为1.4.1节练习1.11(第11页)所编写的程序(打印一个范围内的数),使其能处理用户输入的第一个数比第二个数小的情况。

见1.11

1.20 在网站http://www.informit.com/title/032174113 上,第1章的代码目录包含了头文件 Sales_item.h。将它拷贝到你自己的工作目录中。用它编写一个程序,读取一组书籍销售记录,将每条记录打印到标准输出上。

Sales_item.h

#pragma once
#ifndef SALESITEM_H
#define SALESITEM_H
#include <iostream>
#include <string>class Sales_item {
public:Sales_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:Sales_item& operator+=(const Sales_item&);
public:double avg_price() const;bool same_isbn(const Sales_item& rhs)const {return isbn == rhs.isbn;}Sales_item() :units_sold(0), revenue(0.0) {}
public:std::string isbn;unsigned units_sold;double revenue;
};using std::istream;
using std::ostream;
Sales_item operator+(const Sales_item&, const Sales_item&);inline bool operator==(const Sales_item& lhs, const Sales_item& rhs) {return 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);
}inline Sales_item& Sales_item::operator +=(const Sales_item& rhs) {units_sold += rhs.units_sold;revenue += rhs.revenue;return *this;
}inline Sales_item operator+(const Sales_item& lhs, const Sales_item& rhs) {Sales_item ret(lhs);ret += rhs;return ret;
}inline istream& operator>>(istream& in, Sales_item& s) {double price;in >> s.isbn >> s.units_sold >> price;if (in)s.revenue = s.units_sold * price;elses = Sales_item();return 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;elsereturn 0;
}
#endif

1.20.cpp

#include <iostream>
#include "Sales_item.h"int main() {Sales_item book;while (std::cin >> book)std::cout << book << std::endl;system("pause");return 0;
}

结果:

0-201-70353-X 4 24.99
0-201-70353-X   4       99.96   24.99
0-201-70353-X 3 20
0-201-70353-X   3       60      20
0-201-70353-X 1 22
0-201-70353-X   1       22      22
0-201-70353-X 5 23
0-201-70353-X   5       115     23
0-201-70353-X 6 24
0-201-70353-X   6       144     24
0-201-70353-X 8 26
0-201-70353-X   8       208     26
0-201-70353-X 2 20

1.21 编写程序,读取两个 ISBN 相同的 Sales_item 对象,输出他们的和。

#include <iostream>
#include "Sales_item.h"int main() {Sales_item item1, item2;std::cin >> item1 >> item2; // 读取一对交易记录std::cout << item1 + item2 << std::endl; // 打印它们的和system("pause");return 0;
}

结果:

0-201-70353-X 2 30
0-201-70353-X 3 20
0-201-70353-X   5       120     24

1.22 编写程序,读取多个具有相同 ISBN 的销售记录,输出所有记录的和。

#include <iostream>
#include "Sales_item.h"int main() {Sales_item item, sum;while (std::cin >> item)sum += item;std::cout << sum << std::endl;system("pause");return 0;
}

输出:

1-01 2 100
1-01 2 100
1-01 3 100
1-01 7 700 100^Z
1-01    14      5600    400

1.23:编写程序,读取多条销售记录,并统计每个ISBN(每本书)有几条销售记录。

#include<iostream>
#include "Sales_item.h"int main() {Sales_item currItem, item;int cnt = 1;if (std::cin >> currItem) {while (std::cin >> item) {if(currItem.isbn == item.isbn){cnt++;}else {std::cout << currItem.isbn << " has " << cnt << " records" << std::endl;cnt = 1;currItem = item;}}std::cout << currItem.isbn << " has " << cnt << " records" << std::endl;}system("pause");return 0;
}

1.24 输入表示多个 ISBN 的多条销售记录来测试上一个程序,每个 ISBN 的记录应该聚在一起。

0-201-70353-X 4 24.99
0-201-70353-X 3 20
0-201-70353-X 2 30
0-201-70353-X 5 23
0-201-70353-X 6 24
0-201-70353-X 8 26
0-201-70351-X 2 20
0-201-70352-X 2 20^Z
0-201-70353-X has 6 records
0-201-70351-X has 1 records
0-201-70352-X has 1 records

1.25 借助网站上的 Sales_item.h 头文件,编译并运行本节给出的书店程序。

#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; // total现在表示下一本书的销售额}}std::cout << total << std::endl; // 打印最后一本书的结果}else {//没有输入!警告读者std::cerr << "No data?" << std::endl;system("pause");return -1; //表示失败}system("pause");return 0;
}

结果:

0-201-70351-X 1 20
0-201-70351-X 1 20
0-201-70352-X 2 30
0-201-70352-X 2 30
0-201-70353-X 4 25
0-201-70353-X 5 20
0-201-70353-X 5 23
0-201-70353-X 6 24^Z
0-201-70351-X   2       40      20
0-201-70352-X   4       120     30
0-201-70353-X   20      459     22.95
http://www.mmbaike.com/news/40296.html

相关文章:

  • asp.net mvc6电商网站开发实践餐饮店如何引流与推广
  • 网站 演示代码百度搜索一下百度
  • 服装网站设计门户网站建站系统
  • 套用模板网站dz论坛seo设置
  • 成都网站开发建设推广百度医生在线问诊
  • 如何看一个网站开发语言石家庄整站优化技术
  • 域名弄好了网站怎么建设培训课程设计方案
  • 怎么查网站空间职业教育培训机构排名前十
  • 宁波建站平台网站怎样优化关键词好
  • 什么网站广告做多优秀的软文广告案例
  • iis建立网站长沙服务好的网络营销
  • 我是做装修什么网站可以网站设计制作
  • 政府网站 建设依据学生没钱怎么开网店
  • 杭州高端网站制作搜索引擎最佳化
  • 水果电商网站建设相关文献宣传推广方案怎么写
  • 网站发布服务托管器新闻株洲最新
  • wordpress优化加速插件亚马逊seo是什么意思
  • 阿里巴巴网站建设策略调研泉州seo按天收费
  • 90设计网站官网入口樱桃磁力bt天堂
  • 在线直播系统开发太原优化排名推广
  • 保定网站建设多少钱哪家好长沙seo就选智优营家
  • 网站公安备案有必要吗黑龙江seo关键词优化工具
  • 个人网站建设教学视频百度刷排名seo软件
  • drupal网站建设数据库电脑系统优化工具
  • 网站建设类公深圳百度推广竞价托管
  • 彩票网站 在哪里做培训班有哪些课程
  • 二级建造师挂靠免费seo教程资源
  • 疫情北京最新消息网络营销优化推广公司
  • 鹰潭市城乡建设局老网站品牌推广软文案例
  • 海西州建设局网站百度旗下所有app列表