C++实现最大公约数计算
需积分: 3 44 浏览量
更新于2024-08-24
收藏 8.82MB PPT 举报
"该资源是谭浩强教授的C++课件,主要讲解如何计算两个数的最大公约数(Greatest Common Divisor, GCD)。在C++编程环境中,通过一个简单的函数`gys()`实现这一功能。代码示例中,`main()`函数接收用户输入的两个整数,调用`gys()`函数进行计算,然后将结果输出。`gys()`函数采用欧几里得算法,通过不断取余数直到余数为0,最后返回的余数即为最大公约数。此外,课件还涵盖了C++语言的发展历史和特点,强调了C语言作为C++基础的重要性,以及C语言在结构化编程、可移植性、灵活性和效率方面的优势。对于初学者,虽然C语言的语法结构相对宽松,但理解其规则并编写高质量程序需要一定的实践和调试。"
知识点详解:
1. **最大公约数计算**:
- 最大公约数是两个或多个非零整数共有的最大正因数。在这个例子中,我们使用了欧几里得算法(辗转相除法)来计算两个数的最大公约数。这个算法基于余数原理,即两个整数的最大公约数等于它们任意一个数与另一个数除以它的余数的最大公约数。
2. **C++编程基础**:
- `void main(void)`是C++程序的主入口点,程序从这里开始执行。
- `cin`和`cout`是C++中的输入输出流对象,分别用于从标准输入读取数据和向标准输出打印数据。
- `int x, y;` 定义了两个整型变量x和y,用于存储用户输入的两个数。
- `cin>>x>>y;` 从标准输入读取两个整数赋值给x和y。
- `gys(a, b)` 是一个函数,接受两个整数参数a和b,返回它们的最大公约数。
- `if(a<b){r=a; a=b; b=r;}` 这段代码确保在欧几里得算法中,a始终大于等于b。
- `%` 是模运算符,计算两个数相除后的余数,如`a % b`。
- `while(r=a%b)` 当r不等于0时,继续执行循环。
- `a=b; b=r;` 更新a和b的值,准备进行下一次循环。
- `return b;` 当余数为0时,b就是最大公约数,函数返回b。
3. **C++语言特性**:
- **结构化编程**:C++支持结构化编程,使得代码易于理解和维护。
- **可移植性**:C++编写的程序可以在不同平台和硬件上运行,只需少量或无需修改。
- **灵活性**:C++提供了丰富的数据类型和控制结构,可以编写各种复杂程序。
- **高效性**:C++编译的程序通常运行速度快,因为它们接近机器代码。
- **面向对象编程**:C++是面向对象的,允许类和对象的使用,提供封装、继承和多态等特性,虽然例子中没有涉及。
4. **C语言的发展历史**:
- C++是由C语言发展而来,C语言最初由Dennis Ritchie和Brian Kernighan设计,用于编写UNIX操作系统。
- BCPL和B语言是C语言的前身,它们影响了C语言的设计。
- C++增加了类、模板、异常处理等特性,增强了C语言的功能。
5. **学习C++的挑战**:
- 对于初学者,C++的语法结构较为宽松,可能导致编写程序时出现错误,调试过程可能较为困难。
- 高级语言和汇编语言的特点结合,需要理解二进制位运算和其他低级操作。
- 要编写高质量的C++程序,需要深入理解语言规则和最佳实践。
这个资源适合C++初学者,尤其是对计算两个数的最大公约数有兴趣的人,同时也能了解C++语言的基本概念和发展历程。
2015-08-24 上传
132 浏览量
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
清风杏田家居
- 粉丝: 21
- 资源: 2万+
最新资源
- warrants_dashboard:实时仪表板,用于自定义变量和本地股票代码
- Gxss:用于检查一堆包含反射参数的URL的工具
- json_song_list:COMP 20作业9
- 文件系统中的React-Native图像缓存以及针对iOS和Android的渐进式加载-JavaScript开发
- QCefView:封装了名为QCefView的CEF的QWidget
- IDL.zip_图形图像处理_IDL_
- Api_read_joke
- gophercises:来自courses.calhoun.io的golang练习集
- nubers-eats-frontend
- symphytum:Symphytum个人数据库软件
- event-emitter:发出和监听任何类,对象或函数中的事件,而不会弄乱它们扩展类。 您可以使用Fluent接口或可摇树的函数进行声明
- Win32API.zip_Windows编程_Visual_C++_
- LLE手写体matlab代码.zip
- lazyfoo-sdl2
- Tab Shifter (and Window Mover)-crx插件
- hw0-paxaplenty:GitHub课堂创建的hw0-paxaplenty