国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【C++ Primer(第5版) 課后習題題目及答案 第一章】

這篇具有很好參考價值的文章主要介紹了【C++ Primer(第5版) 課后習題題目及答案 第一章】。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1.1:查閱你使用的編譯器的文檔,確定它所使用的文件命名約定。編譯并運行main程序。

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

我使用的是VS2022,命令行可以輸入 cl 文件名 可以在當前目錄下生成.exe文件,然后雙擊打開即可運行。

1.2:改寫程序,讓它返回-1。返回值-1通常被當作程序錯誤的標識。重新編譯并運行你的程序,觀察你的系統(tǒng)如何處理main返回的錯誤標識。

int main() {
	return -1;
}

在Windows操作系統(tǒng)下main函數(shù)沒有報告運行失敗,因此返回0或-1在運行效果沒有什么區(qū)別。

1.3:編寫程序,在標準輸出上打印Hello,World。

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

1.4:我們的程序使用加法運算符+來將兩個數(shù)相加。編寫程序使用乘法運算符*,來打印兩個數(shù)的積。

#include<iostream>
int main()
{
	std::cout << "請輸入兩個數(shù)" << 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 << "請輸入兩個數(shù)" << 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:解釋下面程序片段是否合法。如果程序是合法的,它將輸出什么?如果程序不合法,原因何在?應(yīng)該如何修正?

錯誤代碼

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

不合法
第5行和第6行代碼最后分別有一個分號,表示語句結(jié)束。而第6行和第7行<<操作符為二元操作符,兩行第一個<<操作符沒有左操作數(shù),因此不合法。
修正代碼

#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;
}

【C++ Primer(第5版) 課后習題題目及答案 第一章】

1.8:指出下列哪些輸出語句是合法的(如果有的話):預(yù)測編譯這些語句會產(chǎn)生什么樣的結(jié)果,實際編譯這些語句來驗證你的答案,改正每個編譯錯誤。

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

1.9:編寫程序,使用while循環(huán)將50到100的整數(shù)相加。

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

1.10:除了++運算符將運算對象的值增加1之外,還有一個遞減運算符(–)實現(xiàn)將值減少1。編寫程序,使用遞減運算符在循環(huán)中按遞減順序打印出10到0之間的整數(shù)。

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

1.11:編寫程序,提示用戶輸入兩個整數(shù),打印出這兩個整數(shù)所指定的范圍內(nèi)的所有整數(shù)。

#include<iostream>
int main()
{
	int v1 = 0, v2 = 0;
	std::cout << "請輸入兩個整數(shù):";
	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"); //凍結(jié)屏幕,便于觀察程序的執(zhí)行結(jié)果
	return 0;
}

1.12:下面的for循環(huán)完成了什么功能?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循環(huán)重做1.4.1中所有練習。

#include<iostream>
int main()
{
	int sum = 0, val = 50;
	for(val = 50;val <= 100; ++val)
	{
		sum += val;
	}
	std::cout << "50-100的整數(shù)和為" << 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 << "請輸入兩個整數(shù):";
	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循環(huán)和while循環(huán),兩種形式的優(yōu)缺點各是什么?

while的優(yōu)點和缺點:
 - 結(jié)構(gòu)不清晰,循環(huán)控制變量的初始化在while語句之前,其改變在while循環(huán)體中
 - 適用于不知道具體循環(huán)次數(shù)的情況

for的優(yōu)點和缺點:
 - 結(jié)構(gòu)清晰,循環(huán)控制變量的初始化和修改都放在語句頭部分
 - 適用于已知循環(huán)次數(shù)的情況

1.15:編寫程序,包含第14頁“再探編譯”中討論的常見錯誤。熟悉編譯器生成的錯誤信息。

請自行嘗試。

1.16:編寫程序,從cin讀取一組數(shù),輸出其和。

#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系統(tǒng)中,輸入文件結(jié)束符的方法是Ctrl+Z,然后按Enter或Return。
在UNIX系統(tǒng)中,文件結(jié)束符輸入是Ctrl+D。

1.17 如果輸入的所有值都是相等的,本節(jié)的程序會輸出什么?如果沒有重復值,輸出又會是怎樣的?

見1.18

1.18 編譯并運行本節(jié)的程序,給它輸入全都相等的值。再次運行程序,輸入沒有重復的值。

#include <iostream>

int main() {
	// currVal 是我們正在統(tǒng)計的數(shù);我們將讀入的新值存入val
	int currVal = 0, val = 0;
	// 讀取第一個數(shù),并確保確實有數(shù)據(jù)可以處理
	if (std::cin >> currVal) {
		int cnt = 1; // 保存我們正在處理的當前值的個數(shù)
		while (std::cin >> val) { // 讀取剩余的數(shù)
			if (currVal == val) // 如果值相同
				++cnt; // 將cnt加1
			else { // 否則,打印前一個值的個數(shù)
				std::cout << currVal << " occurs "
					<< cnt << " times" << std::endl;
				currVal = val; // 記住新值
				cnt = 1; // 重置計數(shù)器
			}
		} // while循環(huán)在這里結(jié)束
		// 記住打印文件中最后一個值的個數(shù)
		std::cout << currVal << " occurs " << cnt << " times" << std::endl;
	} // 最外層的if語句在這里結(jié)束
	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節(jié)練習1.11(第11頁)所編寫的程序(打印一個范圍內(nèi)的數(shù)),使其能處理用戶輸入的第一個數(shù)比第二個數(shù)小的情況。

見1.11

1.20 在網(wǎng)站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;
    else
        s = 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;
    else
        return 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;
}

結(jié)果:

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;
}

結(jié)果:

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:編寫程序,讀取多條銷售記錄,并統(tǒng)計每個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 的記錄應(yīng)該聚在一起。

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 借助網(wǎng)站上的 Sales_item.h 頭文件,編譯并運行本節(jié)給出的書店程序。

#include <iostream>
#include "Sales_item.h"

int main() {
	Sales_item total; //保存下一條交易記錄的變量
	//讀入第一條交易記錄,并確保有數(shù)據(jù)可以處理
	if (std::cin >> total) {
		Sales_item trans; //保存和的變量
		//讀入并處理剩余交易記錄
		while (std::cin >> trans) {
			//如果我們?nèi)栽谔幚硐嗤臅?/span>
			if (total.isbn == trans.isbn)
				total += trans; //更新總銷售額
			else {
				//打印前一本書的結(jié)果
				std::cout << total << std::endl;
				total = trans; // total現(xiàn)在表示下一本書的銷售額
			}
		}
		std::cout << total << std::endl; // 打印最后一本書的結(jié)果
	}
	else {
		//沒有輸入!警告讀者
		std::cerr << "No data?" << std::endl;
		system("pause");
		return -1; //表示失敗
	}
	system("pause");
	return 0;
}

結(jié)果:文章來源地址http://www.zghlxwxcb.cn/news/detail-429722.html

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

到了這里,關(guān)于【C++ Primer(第5版) 課后習題題目及答案 第一章】的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 《軟件測試》習題答案:第一章

    《軟件測試》習題答案:第一章

    第一章 一、填空題 1. 軟件從“出生”到“消亡”的過程稱為_____。 軟件生命周期 2. 早期的線性開發(fā)模型稱為_____開發(fā)模型。 瀑布 3. 引入風險分析的開發(fā)模型為_____開發(fā)模型。 螺旋 4. ISO/IEC 9126:1991標準提出的質(zhì)量模型包括_____、_____、_____、_____、、_____6大特性。 功能性、可靠

    2023年04月08日
    瀏覽(41)
  • 研究生考試 之 計算機網(wǎng)絡(luò)第七版(謝希仁) 第一章 課后答案

    研究生考試 之 計算機網(wǎng)絡(luò)第七版(謝希仁) 第一章 課后答案

    目錄 研究生考試 之 計算機網(wǎng)絡(luò)第七版(謝希仁) 第一章 課后答案 一、簡單介紹 二、計算機網(wǎng)絡(luò)第七版(謝希仁) 第一章 課后答案 1、 計算機網(wǎng)絡(luò)向用戶可以提供哪些服務(wù)? 2、 試簡述分組交換的要點。 3、 試從多個方面比較電路交換、 報文交換和分組交換的主要優(yōu)缺點。

    2024年02月04日
    瀏覽(94)
  • 《Spark編程基礎(chǔ)Scala版》第一章習題答案

    《Spark編程基礎(chǔ)Scala版》第一章習題答案

    1、請闡述大數(shù)據(jù)處理的基本流程。 2、請闡述大數(shù)據(jù)的計算模式及其代表產(chǎn)品 3、請列舉Hadoop生態(tài)系統(tǒng)的各個組件及其功能。 4、分布式文件系統(tǒng)HDFS的名稱節(jié)點和數(shù)據(jù)節(jié)點的功能分別是什么? 名稱節(jié)點: 數(shù)據(jù)節(jié)點: 5、試闡述MapReduce的基本設(shè)計思想 6、YARN的主要功能是什么?

    2024年02月06日
    瀏覽(25)
  • C++ Primer第五版_第九章習題答案(51~52)

    練習9.51 設(shè)計一個類,它有三個unsigned成員,分別表示年、月和日。為其編寫構(gòu)造函數(shù),接受一個表示日期的string參數(shù)。你的構(gòu)造函數(shù)應(yīng)該能處理不同的數(shù)據(jù)格式,如January 1,1900、1/1/1990、Jan 1 1900 等。

    2023年04月11日
    瀏覽(25)
  • C++ Primer第五版_第十四章習題答案(41~50)

    練習14.41 你認為 C++ 11 標準為什么要增加 lambda?對于你自己來說,什么情況下會使用 lambda,什么情況下會使用類? 使用 lambda 是非常方便的,當需要使用一個函數(shù),而這

    2024年02月01日
    瀏覽(29)
  • C++ Primer第五版_第十六章習題答案(41~50)

    練習16.41 編寫一個新的 sum 版本,它返回類型保證足夠大,足以容納加法結(jié)果。 練習16.42 對下面每個調(diào)用,確定 T 和 val

    2024年02月04日
    瀏覽(26)
  • C++ Primer第五版_第十六章習題答案(51~60)

    練習16.51 調(diào)用本節(jié)中的每個 foo,確定 sizeof…(Args) 和 sizeof…(rest)分別返回什么。 練習16.52 編寫一個程序驗證上一題的答案。 練習16.53 編寫你自己版本的 print 函數(shù),并打印一個、兩個及五個實參來測試它,要打印的每個實參都應(yīng)有不同的

    2024年02月05日
    瀏覽(28)
  • C++ Primer第五版_第十八章習題答案(11~20)

    練習18.11 為什么 what 函數(shù)不應(yīng)該拋出異常? what中如果拋出異常,需要try catch捕獲,再調(diào)用what,一直循環(huán),直達內(nèi)存耗盡。 練習18.12 將你為之前各章練習編寫的程序放置在各自的命名空間中。也就是說,命名空間chapter15包含Query程序的代碼,命名空間chapter10包含TextQuery的代碼

    2024年02月06日
    瀏覽(23)
  • 計算機網(wǎng)絡(luò)原理 謝希仁(第8版)第一章習題答案

    計算機網(wǎng)絡(luò)原理 謝希仁(第8版)第一章習題答案

    1-01 計算機網(wǎng)絡(luò)可以向用戶提供哪些服務(wù)? 1-02 試簡述分組交換的要點。 答:采用了 存儲轉(zhuǎn)發(fā)技術(shù) ,即將報文(要發(fā)送的整塊數(shù)據(jù))劃分為幾個較小的等長數(shù)據(jù)段,在每個數(shù)據(jù)段前加上必要的控制信息組成的 首部 ,這些帶有首部的數(shù)據(jù)段就構(gòu)成了分組。首部中包含了目的地

    2024年02月03日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包