《C++程序设计原理与实践》第十二章习题答案

   别的不多说了,贴一张图,exercise 7执行结果:

下面是代码(包含习题3到11):

#include "stdafx.h"

#include <iostream>
//#include  "../../std_lib_facilities.h"

#include "../../GUI/Simple_window.h" // get access to our window library
//#include "../../GUI/Graph.h" // get access to our graphics library facilities

void ex03(Simple_window& win)
{
	Closed_polyline letter_b;
	letter_b.add(Point(100, 100));
	letter_b.add(Point(150, 100));
	letter_b.add(Point(170, 125));
	letter_b.add(Point(170, 150));
	letter_b.add(Point(150, 175));
	letter_b.add(Point(100, 175));
	letter_b.add(Point(150, 175));
	letter_b.add(Point(175, 200));
	letter_b.add(Point(175, 225));
	letter_b.add(Point(150, 250));
	letter_b.add(Point(100, 250));
	letter_b.set_color(Color::blue);
	letter_b.set_style(Line_style(Line_style::solid, 4));
	win.attach(letter_b);
	win.wait_for_button();
}

void ex04(Simple_window& win)
{
	// create squares
	Graph_lib::Rectangle rect1(Point(100, 100), 100, 100);
	rect1.set_fill_color(Color::white);
	win.attach(rect1);

	Graph_lib::Rectangle rect2(Point(200, 100), 100, 100);
	rect2.set_fill_color(Color::red);
	win.attach(rect2);

	Graph_lib::Rectangle rect3(Point(300, 100), 100, 100);
	rect3.set_fill_color(Color::white);
	win.attach(rect3);

	Graph_lib::Rectangle rect4(Point(100, 200), 100, 100);
	rect4.set_fill_color(Color::red);
	win.attach(rect4);

	Graph_lib::Rectangle rect5(Point(200, 200), 100, 100);
	rect5.set_fill_color(Color::white);
	win.attach(rect5);

	Graph_lib::Rectangle rect6(Point(300, 200), 100, 100);
	rect6.set_fill_color(Color::red);
	win.attach(rect6);

	Graph_lib::Rectangle rect7(Point(100, 300), 100, 100);
	rect7.set_fill_color(Color::white);
	win.attach(rect7);

	Graph_lib::Rectangle rect8(Point(200, 300), 100, 100);
	rect8.set_fill_color(Color::red);
	win.attach(rect8);

	Graph_lib::Rectangle rect9(Point(300, 300), 100, 100);
	rect9.set_fill_color(Color::white);
	win.attach(rect9);

	win.wait_for_button();
}

void ex05(Simple_window& win) {
	using Graph_lib::Polygon;
	using Graph_lib::Rectangle;

	int x = x_max() * 2 / 3;
	int y = y_max() * 3 / 4;
	Rectangle r{ Point{ 100,100 }, x, y };
	r.set_fill_color(Color::red);
	r.set_style(Line_style(Line_style::solid, 15));
	win.attach(r);
	win.wait_for_button();
}

void ex07(Simple_window& win)
{
	Line_style house_style(Line_style::solid, 4);
	Graph_lib::Rectangle house(Point(100, 370), 640, 330);
	house.set_style(house_style);
	house.set_fill_color(Color::dark_red);
	win.attach(house);

	Graph_lib::Rectangle door(Point(370, 500), 100, 200);
	door.set_style(house_style);
	door.set_fill_color(Color::dark_green);
	win.attach(door);

	Graph_lib::Rectangle win1(Point(210, 525), 50, 75);
	win1.set_style(house_style);
	win1.set_fill_color(Color::cyan);
	win.attach(win1);

	Graph_lib::Rectangle win2(Point(580, 525), 50, 75);
	win2.set_style(house_style);
	win2.set_fill_color(Color::cyan);
	win.attach(win2);

	Graph_lib::Polygon roof;
	roof.add(Point(50, 370));
	roof.add(Point(420, 270));
	roof.add(Point(790, 370));
	roof.set_style(house_style);
	roof.set_fill_color(Color::dark_blue);
	win.attach(roof);

	Graph_lib::Polygon chimney;
	chimney.add(Point(590, 250));
	chimney.add(Point(620, 250));
	chimney.add(Point(620, 324));
	chimney.add(Point(590, 316));
	chimney.set_style(house_style);
	chimney.set_fill_color(Color::dark_magenta);
	win.attach(chimney);

	win.wait_for_button();
}

void ex08(Simple_window& win)
{
	Line_style oly_style(Line_style(Line_style::solid, 40));

	Circle c1(Point(300, 300), 220);
	c1.set_style(oly_style);
	c1.set_color(Color::blue);
	win.attach(c1);

	Circle c2(Point(812, 300), 220);
	c2.set_style(oly_style);
	win.attach(c2);
	
	Circle c3(Point(1324, 300), 220);
	c3.set_style(oly_style);
	c3.set_color(Color::red);
	win.attach(c3);

	Circle c4(Point(556, 540), 220);
	c4.set_style(oly_style);
	c4.set_color(Color::yellow);
	win.attach(c4);

	Circle c5(Point(1068, 540), 220);
	c5.set_style(oly_style);
	c5.set_color(Color::green);
	win.attach(c5);

	win.wait_for_button();
}

void ex09(Simple_window& win)
{
	win.resize(640, 480);

	Image img(Point(50, 50), "image.jpg");
	win.attach(img);
	win.set_label("Breaking the sound barrier");

	Text txt(Point(50, 280), "Breaking the sound barrier");
	win.attach(txt);

	win.wait_for_button();
}

// draw the file diagram from §12.8

void ex10(Simple_window& win)
{
	Graph_lib::Rectangle fltk1(Point(400, 10), 120, 40);
	fltk1.set_fill_color(Color::yellow);
	win.attach(fltk1);

	Graph_lib::Rectangle fltk2(Point(406, 16), 120, 40);
	fltk2.set_fill_color(Color::yellow);
	win.attach(fltk2);

	Graph_lib::Rectangle fltk3(Point(412, 22), 120, 40);
	fltk3.set_fill_color(Color::yellow);
	win.attach(fltk3);

	Text fltk_txt(Point(418, 42), "FLTK headers");
	win.attach(fltk_txt);

	Graph_lib::Rectangle win_rect(Point(389, 130), 166, 80);
	win_rect.set_fill_color(Color::yellow);
	win.attach(win_rect);

	Text win_txt0(Point(389, 127), "Window.h:");
	win_txt0.set_font(Font::helvetica_bold);
	win.attach(win_txt0);

	Text win_txt1(Point(395, 150), "// window interface:");
	win.attach(win_txt1);

	Text win_txt2(Point(395, 170), "class Window {...};");
	win_txt2.set_font(Font::helvetica_bold);
	win.attach(win_txt2);

	Text win_txt3(Point(395, 190), "...");
	win.attach(win_txt3);

	Open_polyline win_fltk;
	win_fltk.add(Point(472, 130));
	win_fltk.add(Point(472, 62));
	win_fltk.set_style(Line_style(Line_style::solid,2));
	win_fltk.set_color(Color::black);
	win.attach(win_fltk);

	Graph_lib::Polygon win_fltk_arw;
	win_fltk_arw.add(Point(472, 62));
	win_fltk_arw.add(Point(475, 69));
	win_fltk_arw.add(Point(469, 69));
	win_fltk_arw.set_fill_color(Color::black);
	win.attach(win_fltk_arw);

	// add rest, would be much easier if not everything were passed by reference
	// and would thus stop existing when leaving a scope
	win.wait_for_button();
}

// draw a series of regular polygons one inside the other
void ex11(Simple_window& win)
{
	Graph_lib::Polygon tri;
	tri.add(Point(200, 20));
	tri.add(Point(300, 20));
	tri.add(Point(250, 106));
	win.attach(tri);

	Open_polyline square;
	square.add(Point(200, 20));
	square.add(Point(200, 120));
	square.add(Point(300, 120));
	square.add(Point(300, 20));
	win.attach(square);

	Open_polyline pentagon;
	pentagon.add(Point(200, 20));
	pentagon.add(Point(169, 115));
	pentagon.add(Point(250, 179));
	pentagon.add(Point(331, 115));
	pentagon.add(Point(300, 20));
	win.attach(pentagon);

	Open_polyline hexagon;
	hexagon.add(Point(200, 20));
	hexagon.add(Point(150, 107));
	hexagon.add(Point(200, 194));
	hexagon.add(Point(300, 194));
	hexagon.add(Point(350, 107));
	hexagon.add(Point(300, 20));

	win.attach(hexagon);
	win.wait_for_button();
}

int main()
{
	try {
		Point p(100, 100);
		Simple_window win(p, 1800, 800, "My window");
		ex07(win);
	}
	catch (exception& e) {
		cerr << "exception: " << e.what() << endl;
		keep_window_open();
	}
	catch (...) {
		cerr << "exception\n";
		keep_window_open();
	}

}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 《C程序设计原理实践 第2版pdf》是一本关于C语言程序设计的教材,旨在帮助读者系统学习C语言的基本原理实践技巧。本书由许莹(Ying Bai)编写,共分为11个章节,内容详实且易于理解。 第一章介绍了C语言的概述,包括其发展历史、特点和应用领域。第二章主要讲解C语言的基本语法和语句结构,如变量、数据类型、运算符、控制结构等。 第三章至第七章侧重于C语言的高级编程技巧和常用函数的使用。这些章节讲解了C语言中的数组、指针、字符串、结构体和文件操作等重要概念和技术。 第八章到第十一章则介绍了C语言的进阶主题,如动态内存分配、多文件编程、位操作和预处理器等。此外,还有一章专门讲解了C语言在面向对象编程中的应用。 本书的优点在于理论与实践相结合,既有详实的示例和实验,又有深入的理论解析和编程技巧分享。读者可以通过实践中的编程练习,巩固所学知识。同时,书中还提供了大量的练习题实践项目,可供读者进一步提升编程水平。 总的来说,《C程序设计原理实践 第2版pdf》是一本全面系统的C语言学习指南,适合初学者和有一定编程经验的读者。通过学习这本教材,读者能够全面掌握C语言的基本原理实践技巧,为日后的软件开发和编程工作打下坚实基础。 ### 回答2: 《C程序设计原理实践 第2版》是一本介绍C程序设计原理实践的书籍,是C语言学习者的必备教材。该书第2版的PDF版本提供了电子版的阅读方式。 该书主要分为三大部分:基本概念与技巧、进阶应用和常用库函数。在基本概念与技巧部分,作者详细介绍了C语言的基本语法、数据类型、运算符、流程控制等内容,帮助读者建立扎实的基础。进阶应用部分则介绍了C语言的高级特性和编程技巧,包括函数、指针、数组、结构体、文件操作等,使读者能够更灵活地运用C语言进行程序开发。常用库函数部分则列举了C语言常用的标准库函数,如字符串处理、数学计算、输入输出等,方便读者在实际编程中使用。 此书与其他C语言教材相比,具有简明易懂、内容全面深入的特点。作者通过实例和练习题的方式,帮助读者巩固知识点并能够灵活运用。此外,书中还提供了一些编程实践的经验和技巧,帮助读者提高编程效率和质量。 第2版的PDF版本提供了电子化的阅读方式,方便读者在电脑、平板或手机上进行学习。电子版的优势在于便携性,读者可以随时随地进行学习。同时,电子版还具有可搜索、可标注、可复制等功能,方便读者进行查找和学习记录。 总而言之,《C程序设计原理实践 第2版》PDF提供了一种便捷的学习方式,内容丰富且易懂。无论是初学者还是有一定编程基础的读者,都能够从中受益。 ### 回答3: 《C程序设计原理实践 第2版》pdf是一本介绍C编程的教材,该教材的第2版是在第1版的基础上进行完善和更新的。 该教材主要分为两个部分,即程序设计原理程序设计实践。在程序设计原理部分,教材详细介绍了C语言的基本概念和语法,包括数据类型、运算符、控制结构等。同时,还介绍了常见的编程错误和调试技巧,帮助读者养成良好的编程习惯。 在程序设计实践部分,教材通过大量的实例演示如何运用C语言进行实际的程序设计。这些实例包括计算机图形学、游戏开发、网络编程等方面,读者可以通过学习这些实例,了解C语言在不同领域的应用。 此外,教材还提供了大量的练习题实践项目,帮助读者巩固所学知识并提高编程能力。教材中还包含了一些实用的编程工具和技巧,帮助读者提高程序的效率和质量。 总的来说,《C程序设计原理实践 第2版》pdf是一本全面介绍C编程的教材,适合初学者和有一定基础的读者阅读。通过学习这本教材,读者能够系统地学习C语言的基础知识和编程技巧,提高自己在程序设计方面的能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值