程序设计艺术与方法
- 格式:doc
- 大小:103.50 KB
- 文档页数:20
程序设计方法与艺术课程报告班级:计算机科学与技术班指导老师:徐本柱组长:2013211685 黄俊祥组员:2013211684 姜文鹏2013211705 李东明2013211707 袁清高解题报告题目A :First Blood解题思路:我的思路是首先取出俩个数,求出这俩个数的最大公约数,然后再用最大公约数求出这俩个数的最小公倍数。
将这俩个数的最小公倍数与第三个数求最大公约数,再求出最小公倍数即可。
具体解法:首先任取俩个数,比较这俩个数的大小,用大的数除小的数看其是否为零,如果为零,则求出其最大公约数,如果不为零,取其余数继续。
求出最大公约数后用俩个数的乘积除以最大公约数既得最小公倍数。
接着按照这个方法就能求出三个数的最小公倍数。
代码实现:#include<iostream>using namespace std;//最大公约数int maxCommonDivisor(int i, int j){int temp;if (i < j){temp = i;i = j;j = temp;}if (i%j == 0){return j;}else{return maxCommonDivisor(i%j, j);}}//最小公倍数int minCommonMultiplier(int i,int j,int k){int mcd = maxCommonDivisor(i, j);int mcm = i*j / mcd;mcd = maxCommonDivisor(mcm, k);return mcm*k / mcd;}//最大值int maxValue(int val){int mcm = 0;int temp;for (int i = 1; i <= val; i++){for (int j = i; j <= val; j++){for (int k = j; k <= val; k++){temp = minCommonMultiplier(i, j, k);if (mcm < temp)mcm = temp;}}}return mcm;}int main(){int a, b,c;int n;cin >> n;for (int i = 0; i < n; i++){cin >> a;cout << maxValue(a) << endl;}system("pause");return 0;}运行结果:题目B 求和解题思路:首先定义一个函数,让函数满足题目中的条件,用bool来判断isMinus是否正确,定义整数i,j,通过条件循环来完成。
程序设计艺术与方法
程序设计艺术与方法是指在进行程序设计时所要考虑的艺术性和方法论。
它不仅仅是关于具体的编码技巧和算法,还涵盖了程序设计的整个过程,包括需求分析、系统设计、编码实现和测试、代码维护等。
程序设计艺术强调的是代码的可读性、可维护性和可扩展性。
良好的程序设计应该能够清楚地表达作者的意图,使其他人能够容易地理解和修改代码。
艺术性体现在如何通过创造力和审美观点设计出简洁、高效、优雅的解决方案,使代码更易理解和维护。
程序设计方法是一种系统性的方法论,它提供了一套指导原则和步骤,帮助程序员在具体的项目中进行程序设计。
常见的程序设计方法包括结构化程序设计、面向对象程序设计、模块化设计、领域驱动设计等。
这些方法帮助程序员合理地组织代码结构,降低代码的复杂度、提高代码的可维护性和可重用性。
程序设计艺术与方法是相互关联的。
艺术性指导方法,方法则提供了实现艺术性的具体技术和工具。
艺术与方法的结合可以使程序设计更加高效、优雅,并且更符合实际需求。
程序设计方法与风格程序设计方法与风格一、引言二、程序设计方法1. 结构化程序设计结构化程序设计是一种将程序分解为逻辑上独立的模块,并通过控制结构进行组合的方法。
其核心思想是将程序划分为顺序、选择和循环三种基本结构,使程序逻辑清晰、易于理解和维护。
2. 面向对象程序设计面向对象程序设计是一种以对象作为程序设计的基本单位的方法。
它强调抽象、封装、继承和多态等特性,使程序更加模块化、可重用和可扩展。
3. 泛型程序设计泛型程序设计是一种通过参数化类型实现对数据类型的抽象和重用的方法。
它将算法与数据结构的实现解耦,提供了一种通用的方式来编写可重用的代码。
4. 面向服务程序设计面向服务程序设计是一种将程序划分为独立的服务单元,并通过网络进行通信和交互的方法。
它将程序设计视为一系列服务的组合,并强调松耦合、可扩展和可维护。
三、程序设计风格1. 模块化模块化是一种将程序划分为独立的模块,并通过接口进行通信和交互的风格。
每个模块可以独立开发、测试和调试,提高了开发效率和代码的可维护性。
2. 规范化规范化是一种遵循一定的编码规范和命名规范的风格。
它使代码具有统一的风格和命名规则,提高了代码的可读性和可维护性。
3.注释清晰清晰的注释是一种将代码逻辑和功能进行说明的方法。
良好的注释可以提高代码的可读性和可维护性,帮助其他开发人员理解和修改代码。
4. 异常处理良好的异常处理是一种处理程序错误和异常情况的方法。
合理地使用异常处理可以提高代码的稳定性和可靠性,确保程序在异常情况下能够正确地运行。
四、程序设计方法和风格对于代码质量和开发效率都有着重要的影响。
结构化程序设计、面向对象程序设计、泛型程序设计和面向服务程序设计是常用的程序设计方法,它们各有特点和适应的场景。
模块化、规范化、注释清晰和良好的异常处理是常用的程序设计风格,它们有助于提高代码的可读性、可维护性和可扩展性。
通过合理地选择和应用程序设计方法和风格,可以使程序更加健壮、高效和易于维护。
程序设计艺术与方法实验一STL 得熟悉与使用1. 实验目得(1)掌握C++中STL得容器类得使用。
(2) 掌握C++中STL得算法类得使用。
2. 试验设备硬件环境:PC 计算机软件环境: 操作系统:Windows2000 / WindowsXP/ Linux 语言环境:Dev cpp/ gnu c++3. 试验内容(1) 练习vector与list 得使用。
定义一个空得vector,元素类型为int,生成10个随机数插入到vector中,用迭代器遍历vector 并输出其中得元素值。
在vector 头部插入一个随机数,用迭代器遍历vector并输出其中得元素值。
用泛型算法find 查找某个随机数,如果找到便输出,否则将此数插入vector 尾部。
用泛型算法sort将vector 排序,用迭代器遍历vector 并输出其中得元素值。
删除vector 尾部得元素,用迭代器遍历vector 并输出其中得元素值、将vector 清空。
定义一个list,并重复上述实验,并注意观察结果。
(2) 练习泛型算法得使用。
- 149定义一个vector,元素类型为int,插入10 个随机数,使用sort 按升序排序,输出每个元素得值,再按降叙排序,输出每个元素得值。
练习用find查找元素。
用min 与max找出容器中得小元素个大元素,并输出、源代码:#include <iostream>#include<vector>#include<iomanip〉#include<ctime〉#include<algorithm〉using namespacestd;vector<int>myV;boolsortup(intv1,int v2){return v1〈v2;}intmain(int argc,char *argv[]){srand(time(NULL));for(int i=0;i<10;i++)myV.push_back(rand());sort(myV、begin(),myV、end(),sortup);vector<int>::iterator it1;for(it1=myV。
程序设计艺术与方法实验一STL的熟悉与使用1.实验目的(1)掌握C++中STL的容器类的使用。
(2)掌握C++中STL的算法类的使用。
2.试验设备硬件环境:PC计算机软件环境:操作系统:Windows2000/WindowsXP/Linux语言环境:Devcpp/gnuc++3.试验内容(1)练习vector和list的使用。
定义一个空的vector,元素类型为int,生成10个随机数插入到vector中,用迭代器遍历vector并输出其中的元素值。
在vector头部插入一个随机数,用迭代器遍历vector并输出其中的元素值。
用泛型算法find查找某个随机数,如果找到便输出,否则将此数插入vector尾部。
用泛型算法sort将vector排序,用迭代器遍历vector并输出其中的元素值。
删除vector尾部的元素,用迭代器遍历vector并输出其中的元素值。
将vector清空。
定义一个list,并重复上述实验,并注意观察结果。
(2)练习泛型算法的使用。
-149定义一个vector,元素类型为int,插入10个随机数,使用sort按升序排序,输出每个元素的值,再按降叙排序,输出每个元素的值。
练习用find查找元素。
用min和max找出容器中的小元素个大元素,并输出。
源代码:#include<iostream>#include<vector>#include<iomanip>#include<ctime>#include<algorithm>usingnamespacestd;vector<int>myV;boolsortup(intv1,intv2){returnv1<v2;}intmain(intargc,char*argv[]){srand(time(NULL));for(inti=0;i<10;i++)myV.push_back(rand());sort(myV.begin(),myV.end(),sortup);vector<int>::iteratorit1;for(it1=myV.begin();it1!=myV.end();it1++){cout<<(*it1)<<setw(6);}cout<<endl;intmin=myV[0];for(it1=myV.begin()+1;it1!=myV.end();it1++) if((*it1)<min)min=(*it1);cout<<"最小元素为"<<min<<endl;intmax=myV[0];for(it1=myV.begin();it1!=myV.end();it1++)if((*it1)>max)max=(*it1);cout<<"最大元素为"<<max<<endl;cout<<endl;intvalue=rand();it1=find(myV.begin(),myV.end(),value);if((*it1)==value)cout<<"找到了这个随机数"<<endl;elsecout<<"没有找到这个随机数"<<endl;myV.insert(myV.end(),value);cout<<"插入尾部的随机数为"<<value<<endl;for(it1=myV.begin();it1!=myV.end();it1++){cout<<(*it1)<<setw(6);}cout<<"\n"<<endl;intt=rand();myV.insert(myV.begin(),t);cout<<"插入头部的随机数为"<<t<<endl;for(it1=myV.begin();it1!=myV.end();it1++){cout<<(*it1)<<setw(6);}cout<<endl;myV.pop_back();for(it1=myV.begin();it1!=myV.end();it1++){cout<<(*it1)<<setw(6);}cout<<endl;myV.clear();if(myV.empty()){cout<<"It'sempty!"<<endl;}system("PAUSE");return0;}运行截图:2练习泛型算法的使用:源代码:#include<list>#include<iostream>//#inclued<algorithm> usingnamespacestd;typedeflist<int>lin;intvalue[]={1,2,3,4,5};voidprint(lin&l){inti;lin::iteratorlit;for(lit=l.begin();lit!=l.end();lit++) cout<<(*lit)<<"";cout<<endl;}boolsortsp(intv1,intv2){returnv1>v2;}intmain(){linlin2;lin2.push_front(3);lin2.push_front(4);lin2.insert(lin2.begin(),value,value+5);cout<<"lin2内的元素为:";print(lin2);lin2.sort();cout<<"排序后的lin2:";print(lin2);lin2.push_front(10);cout<<"在list头部插入10之后的结果:";print(lin2);lin2.remove(6);cout<<"删除一个数后的lin1:";print(lin2);system("PAUSE");return0;}运行截图:实验二搜索算法的实现1.实验目的(1)掌握宽度优先搜索算法。
计算机程序设计艺术引言计算机程序设计艺术(Computer Programming Art)是一门关于计算机程序设计的艺术学科。
它旨在通过将计算机技术与美学相结合,创造出具有艺术性的程序。
计算机程序设计艺术可以被视为一种创造性的表达方式,使得程序不仅仅是为了功能而存在,更具有审美价值。
背景计算机程序设计在过去的几十年里发生了翻天覆地的变化。
从最早的机器语言编程到现代的高级编程语言,计算机程序设计已经成为了一门广受欢迎的学科。
但是,在追求功能和效率的过程中,计算机程序设计也逐渐遗忘了美学的重要性。
计算机程序设计艺术的诞生正是为了填补这一空白。
特点计算机程序设计艺术具有以下几个特点:创造性计算机程序设计艺术中的程序不仅仅是为了实现某种功能,更要追求创造性的表达。
通过巧妙地运用编程语言的特性和算法,程序员可以创造出独特而令人赏心悦目的程序。
计算机程序设计艺术追求程序的美学价值。
通过合理的排版、界面设计以及图形和音效的应用,程序可以变得更具有吸引力和艺术感。
可读性计算机程序设计艺术强调程序的可读性。
艺术性的程序不仅在功能上精确无误,同时也易于理解和阅读。
通过合理的命名、注释和代码组织,艺术性的程序能够让其他人更容易地理解和维护。
功能与美学的平衡计算机程序设计艺术追求功能和美学的平衡。
艺术性的程序既能够实现所需的功能,又能够提供美学上的享受。
艺术性的程序不应该只追求一时的视觉效果,而是要在满足功能需求的基础上,提供更高层次的审美体验。
实践方法为了实现计算机程序设计艺术的目标,以下是一些实践方法:1. 创造性编程鼓励程序员在编写程序时运用自己的创造力。
可以尝试新的编程技术、算法或设计模式,以实现更为出色的程序。
注重代码的美感。
艺术性的程序应该具有良好的代码结构、合理的命名和注释,以及清晰的逻辑。
代码应该易于阅读和理解,使得他人能够更容易地参与到项目中。
3. 图形与音效设计合理运用图形和音效来增强程序的美感。
常见的程序设计方法在软件开发领域,程序设计是一项重要的工作。
程序设计的目标是根据需求设计出合理、高效的解决方案。
以下是几种常见的程序设计方法。
1. 结构化程序设计结构化程序设计是一种将程序分解为模块化的、易于理解和维护的方法。
它通过使用顺序、选择和循环等结构,将程序分解为较小的独立部分。
这种方法便于团队协作,并且使得程序易于阅读和修改。
2. 面向对象程序设计面向对象程序设计是一种将程序设计为对象的集合,在这种模型中,对象具有状态和行为。
面向对象程序设计强调封装、继承和多态等特性。
这种方法提高了代码的可重用性,也提高了程序的可维护性和扩展性。
3. 响应式程序设计响应式程序设计是一种将程序设计为对外界事件作出快速响应的方法。
在这种模型中,程序会对输入事件作出相应的反应,并展示相应的输出。
响应式程序设计在用户界面和实时系统等领域得到广泛应用。
4. 并行程序设计并行程序设计是一种将程序设计为执行多个任务的方法。
在多核处理器和分布式系统中,利用并行程序设计可以提高程序的性能和效率。
并行程序设计需要考虑任务的划分、通信和同步等问题。
5. 领域驱动设计领域驱动设计是一种将程序设计与领域知识密切结合的方法。
在这种模型中,程序的设计和实现反映了领域的概念和规则。
领域驱动设计可以提高程序的可理解性,并且更好地满足业务需求。
6. 设计模式设计模式是一种常见的程序设计方法,它提供了在特定情境下解决常见问题的通用解决方案。
设计模式可以提高代码的重用性、可读性和可维护性。
常见的设计模式包括单例模式、工厂模式和观察者模式等。
7. 函数式编程函数式编程是一种将程序设计为一系列函数组合的方法。
在函数式编程中,函数是一等公民,可以作为参数传递和返回。
函数式编程强调无状态、不可变性和引用透明等特性。
函数式编程可以简化程序的逻辑,并提高程序的可测试性。
常见的程序设计方法包括结构化程序设计、面向对象程序设计、响应式程序设计、并行程序设计、领域驱动设计、设计模式和函数式编程等。
学习程序设计的技巧和方法在现代社会中,计算机技术日益发展,成为了一个国家信息化建设的重要组成部分,因此学习计算机技术已成为越来越多年轻人的目标。
而学习程序设计,是成为计算机技术人才的必备技能之一。
但是,对于初学者来说,学习程序设计并不容易,需要付出更多努力。
本文将介绍一些学习程序设计的技巧和方法,帮助初学者更快入门。
一. 培养编程思维编程思维是指面向程序设计的思考方式和思维方法。
它是解决问题的一种思维方式,与常规思维方式不同,需要培养和训练。
学习编程前,需要先了解编程思维的概念和方法:1. 需求转化为目标:通过定义问题,将复杂问题转化为具体的目标,分解为具体的步骤。
2. 抽象化:将具体的目标和步骤转化为抽象的模型,以便更好地处理和管理。
3. 自动化:通过编写代码将抽象的模型转化为实现机制的程序,以实现自动化处理。
通过培养编程思维,可以更好地掌握程序设计的实质。
二. 学习语言适合第一门编程语言语言是计算机程序设计语言的基础。
学习什么样的编程语言对初学者很重要。
C++、Java、Python通常被认为是最适合初学者的编程语言。
C++ 和 Java 都是静态语言,它们的语法严谨,但学习曲线较高,需要花费更多的时间去学习。
Python是一种动态语言,其语法简洁、易学,适合初学者学习。
三. 明确学习目标并制定计划在学习编程之前,先要确立学习目标。
可以根据个人情况,选择适合自己的学习目标,如学会写一个网页,学会写一款游戏等等。
之后,为了实现学习目标,需要制定具体的学习计划。
四. 关注实际项目在学习编程的过程中,需要关注一些实际项目。
例如,网站构建、游戏设计、信息仪表盘构建等等。
通过面向实际项目学习,在具体的应用中学习编程,可以加深对编程的理解,更好地应用和掌握编程技术。
五. 多实践,多与他人交流最重要的方法是多实践和多与他人交流。
编程是需要不断实践的,每次实践都能检验个人的学习情况,找出错误和不足。
此外,多与他人交流可以帮助借助他人的经验和技巧,更好地理解和掌握编程技术。
程序设计的艺术程序设计是一门将计算机科学与艺术相结合的学科,它涉及到算法的设计、程序的编写和代码的优化等方面。
艺术与程序设计的结合可以让程序变得更加美观、高效和易于理解。
在本文中,我将探讨程序设计的艺术,并且提供一些技巧和建议来帮助程序员在他们的工作中运用艺术的原则。
一、程序设计的美学程序设计的美学是指将艺术和美学原则应用于程序设计,使其更加优雅、直观和易于理解。
美学在程序设计中的应用包括代码的布局、命名的规范、注释的使用以及程序的整体结构等。
在编写代码时,良好的代码布局可以提高代码的可读性和可维护性。
合理地使用缩进、空行和注释可以使代码更加清晰易读。
命名的规范也是很重要的,变量和函数名应该简洁明了,并且能够准确地反映其功能。
注释的使用应当恰到好处,既能解释代码的意图,又不过多地干扰代码的阅读。
艺术还可以体现在程序的整体结构中。
一个好的程序应该有良好的模块划分,每个模块的功能应该清晰明确。
不同的模块之间应该有良好的交互,使得程序的整体结构更加紧凑和可扩展。
二、提高代码的可读性代码的可读性是程序设计中非常重要的一个方面。
具有良好可读性的代码可以使其他人更容易理解自己的代码,也方便自己日后的维护工作。
首先,要注意代码的缩进和空格的使用。
合理地使用缩进可以清晰地表示代码块的层次关系,使得代码更加易读。
另外,适当地使用空格可以使代码看起来更加整洁。
其次,要注意代码的命名规范。
变量和函数的命名应该简洁明了,并且能够准确地反映其功能。
避免使用过于简单或过于复杂的命名方式。
另外,注释的使用也是非常重要的。
适当地添加注释可以帮助其他人更好地理解代码的意图。
注释应该解释代码的关键部分,而不是简单地重复代码本身。
同时,应该避免过多地使用注释,否则会让代码变得繁琐和难以阅读。
三、艺术与算法设计算法设计是程序设计的核心内容,也是程序设计中最具有创造性和艺术性的部分。
艺术与算法设计的结合可以使得算法更加高效、优雅和易于理解。
程序设计艺术与方法实验一STL 的熟悉与使用1.实验目的(1)掌握C++中STL 的容器类的使用。
(2)掌握C++中STL 的算法类的使用。
2.试验设备硬件环境:PC 计算机软件环境:操作系统:Windows 2000 / Windows XP / Linux 语言环境:Dev cpp / gnu c++3.试验容(1) 练习vector 和list 的使用。
定义一个空的vector,元素类型为int,生成10 个随机数插入到vector 中,用迭代器遍历vector 并输出其中的元素值。
在vector 头部插入一个随机数,用迭代器遍历vector 并输出其中的元素值。
用泛型算法find 查找某个随机数,如果找到便输出,否则将此数插入vector 尾部。
用泛型算法sort 将vector 排序,用迭代器遍历vector 并输出其中的元素值。
删除vector 尾部的元素,用迭代器遍历vector 并输出其中的元素值。
将vector 清空。
定义一个list,并重复上述实验,并注意观察结果。
(2) 练习泛型算法的使用。
- 149定义一个vector,元素类型为int,插入10 个随机数,使用sort 按升序排序,输出每个元素的值,再按降叙排序,输出每个元素的值。
练习用find 查找元素。
用min 和max 找出容器中的小元素个大元素,并输出。
源代码:#include <iostream>#include <vector>#include<iomanip>#include<ctime>#include <algorithm>using namespace std;vector<int> myV;bool sortup(int v1,int v2){return v1<v2;}int main(int argc, char *argv[]){srand(time(NULL));for (int i=0;i<10;i++)myV.push_back(rand());sort(myV.begin(),myV.end(),sortup);vector<int>::iterator it1;for (it1=myV.begin();it1!=myV.end();it1++){cout<<(*it1)<<setw(6);}cout<<endl;int min=myV[0];for (it1=myV.begin()+1;it1!=myV.end();it1++) if((*it1)<min)min=(*it1);cout<<"最小元素为" <<min<<endl;int max=myV[0];for (it1=myV.begin();it1!=myV.end();it1++)if((*it1)>max)max=(*it1);cout<<"最大元素为" <<max<<endl;cout<<endl;int value=rand();it1=find(myV.begin(),myV.end(),value);if((*it1)==value)cout<<"找到了这个随机数"<<endl ;elsecout<<"没有找到这个随机数"<<endl; myV.insert(myV.end(),value);cout<<"插入尾部的随机数为"<<value<<endl; for (it1=myV.begin();it1!=myV.end();it1++) {cout<<(*it1)<<setw(6);}cout<<"\n"<<endl;int t=rand();myV.insert(myV.begin(),t);cout<<"插入头部的随机数为" <<t<<endl;for (it1=myV.begin();it1!=myV.end();it1++) {cout<<(*it1)<<setw(6);}cout<<endl;myV.pop_back ();for (it1=myV.begin();it1!=myV.end();it1++) {cout<<(*it1)<<setw(6);}cout<<endl;myV.clear();if(myV.empty()){cout << "It's empty!" << endl;}system("PAUSE");return 0;}运行截图:2 练习泛型算法的使用:源代码:#include<list>#include<iostream>//#inclued<algorithm>using namespace std;typedef list<int> lin;int value[]={1,2,3,4,5};void print(lin &l){int i;lin::iterator lit;for(lit=l.begin();lit!=l.end();lit++)cout<<(*lit)<<" ";cout<<endl;}bool sortsp(int v1,int v2){return v1>v2;}int main(){lin lin2;lin2.push_front(3);lin2.push_front(4);lin2.insert(lin2.begin(),value,value+5);cout<<"lin2的元素为:";print(lin2);lin2.sort();cout<<"排序后的lin2: ";print(lin2);lin2.push_front(10);cout<<"在list头部插入10之后的结果:";print(lin2);lin2.remove(6);cout<<"删除一个数后的lin1:";print(lin2);system("PAUSE");return 0;}运行截图:实验二搜索算法的实现1. 实验目的(1) 掌握宽度优先搜索算法。
(2) 掌握深度优先搜索算法。
2. 试验设备硬件环境:PC 计算机软件环境:操作系统:Windows 2000 / Windows XP / Linux 语言环境:Dev cpp / gnu c++3. 试验容(1) 将书上的走迷宫代码上机运行并检验结果,并注意体会搜索的思想。
(2) 八皇后问题:在一个国际象棋棋盘上放八个皇后,使得任何两个皇后之间不相互攻击,求出所有的布棋方法。
上机运行并检验结果。
思考:将此题推广到N 皇后的情况,检验在N 比较大的情况下,比方说N=16 的时候,你的程序能否快速的求出结果,如果不能,思考有什么方法能够优化算法。
(3) 骑士游历问题:在国际棋盘上使一个骑士遍历所有的格子一遍且仅一遍,对于任意给定的顶点,输出一条符合上述要求的路径。
(4) 倒水问题:给定 2 个没有刻度容器,对于任意给定的容积,求出如何只用两个瓶装出L 升的水,如果可以,输出步骤,如果不可以,请输出No Solution。
(2)八皇后问题源代码:#include <iostream>using namespace std;#include <math.h>int sum = 0;int upperlimit = 1;void compare(int row,int ld,int rd) {if(row!=upperlimit){int pos=upperlimit&~(row|ld|rd);while(pos!=0){int p=pos&-pos;pos-=p; compare(row+p,(ld+p)<<1,(rd+p)>>1);}}else{sum++;}}int main(){int n;cout<<"请输入皇后的个数:";cin>>n;upperlimit = (upperlimit<<n)-1;compare(0,0,0);cout<<"问题的解如下:"<<sum<<endl;return 0;}运行截图:(4)倒水问题源代码:4.倒水问题:#include"stdio.h"int main(){int ca,cb,cc,x,y;while(scanf("%d%d%d",&ca,&cb,&cc)!=EOF) {if(cb==cc){ printf("fill B\n");}else if(ca==cc){printf("fill A\n");printf("pour A B\n");}else{x=y=0;if(ca<cc){while(1){ if(y==0){y=cb;printf("fill B\n");}if(y>ca-x)//如果b中的水大于a中的剩余容积,就把a灌满//{y-=ca-x;x=ca;printf("pour B A\n");}else//如果b中的水小于a中的剩余容积,那么把b中的水全加入a//{x+=y;y=0;printf("pour B A\n");}if(y==cc)//如果b中的水已经和cc相等,那就结束//{break;}if(ca==x)//如果a中的水满了,就把a倒空//{x=0;printf("empty A\n");}}}else{while(1){if(x==0){x=ca;printf("fill A\n");}if(x>cb-y)//如果a中的水大于b中的剩余容积,就把b灌满//{x-=cb-y;y=cb;printf("pour A B\n");}else//如果a中的水小于b中的剩余容积,那么把a中的水全加入b//{y+=x;x=0;printf("pour A B\n");}if(y==cc)//如果b中的水已经和cc相等,那就结束//{break;}if(y==cb)//如果b中的水满了,就把b倒空//{y=0;printf("empty B\n");}}}}printf("success\n");}return 0;}运行截图:实验三计算几何算法的实现1. 实验目的(1) 理解线段的性质、叉积和有向面积。