C++程序设计基础课程设计报告

程序设计基础课程设计报告


摘要
C++ 可以说是 C 语言的继承,20 世纪 70 年代中期,Bjarne Stroustrup 希望有一门语言既要编程简单、正确可靠,又要运行高效、可移植。1979 年,Bjame Sgoustrup 到了 Bell 实验室,开始从事将 C 改良为带类的 C(C with classes)的工作。1983 年该语言被正式命名为 C++。它既可以进行 C 语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。
自从 C++ 被发明以来,它经历了 3 次主要的修订,每一次修订都为 C++ 增加了新的特征并作了一些修改。C++ 擅长面向对象程序设计的同时,还可以进行基于过程的程序设计,因而 C++ 就适应的问题规模而论,大小由之。C++ 不仅拥有计算机高效运行的实用性特征,同时还致力于提高大规模程序的编程质量与程序设计语言的问题描述能力

第一章 概述
1.1选题的意义
1.1.1 选题
(1)递推法应用
一个人赶着鸭子去每个村庄卖,每经过一个村子卖去所赶鸭子一半又一只。这样他经过了七个村子后还剩两只鸭子,问他出发时共赶多少只鸭子?经过每个村子卖出多少只鸭子?
(2)精确计算及迭代
求一个数的开平方 公式为x i+1=(x i+a/x i)/2
(3)数组类问题
用字符数组实现求数组的最值,平均,排序,查找等功能
1.1.2 选题的意义
递推算法是一种用若干步可重复运算来描述复杂问题的方法。递推是序列计算中的一种常用算法。通常是通过计算前面的一些项来得出序列中的指定项的值。递推是按照一定的规律来计算序列中的每个项,通常是通过计算前面的一些项来得出序列中的指定项的值。其思想是把一个复杂的庞大的计算过程转化为简单过程的多次重复,该算法利用了计算机速度快和不知疲倦的机器特点。“迭代法"也称"辗转法”,是一种不断用变量的旧值递推新值的过程。
迭代算法是用计算机解决问题的一种基本方法。它利用计算机运算速度快、适合做重复性操作的特点,让计算机对一组指令(或一定步骤)进行重复执行,在每次执行这组指令(或这些步骤)时,都从变量的原值推出它的一个新值。利用迭代算法解决问题,需要做好以下三个方面的工作:
一、确定迭代变量。在可以用迭代算法解决的问题中,至少存在一个直接或间接地不断由旧值递推出新值的变量,这个变量就是迭代变量。
二、建立迭代关系式。所谓迭代关系式,指如何从变量的前一个值推出其下一个值的公式(或关系)。迭代关系式的建立是解决迭代问题的关键,通常可以使用递推或倒推的方法来完成。三、对迭代过程进行控制。在什么时候结束迭代过程?这是编写迭代程序必须考虑的问题。不能让迭代过程无休止地重复执行下去。迭代过程的控制通常可分为两种情况:一种是所需的迭代次数是个确定的值,可以计算出来;另一种是所需的迭代次数无法确定。对于前一种情况,可以构建一个固定次数的循环来实现对迭代过程的控制;对于后一种情况,需要进一步分析出用来结束迭代过程的条件。
数组的特点:一个数组只能存储一种数据类型的数据,可以是基本类型,也可以是引用类型的数据。比如定义了int类型的数组,里面就不能存放char类型的数据。数组本身是一种引用类型。这个在数据类型的总结中提到过,引用类型包括类,接口,数组等。例如int是一个基本类型,但是int[]是一种引用类型。

第二章 详细的程序设计报告
2.1 递推法应用
2.1.1 赶鸭子问题
1.题目分析:
将下列题目采用递归和非递归的方式实现
一个人赶着鸭子去每个村庄卖,每经过一个村子卖去所赶鸭子的一半又一只。这样他经过了七个村子后还剩两只鸭子,问他出发时共赶多少只鸭子?经过每个村子卖出多少只鸭子?
2.算法构造:
(1)递归:由于每个村子卖鸭子的规律是相等的,都是卖去所有鸭子的一半又一只。且经过7次后还剩下俩只。所以根据条件可设计递归模型为。
2 n=0 Fun(n)= 2* (f(n-1)+1) n>0
非递归:采用for循环。由于经过几个村子卖几次。所以循环的次数就为n次。然后设置变量sum用来表示鸭子的总数量,每一次循环sum=(sum+1)2;
(2)递归:输入一个自然数。如果非一时,奇数就乘三加一,偶数就除以二。经过多次后总可以得到1.。根据条件可以设计递归模型为,count为该数经过的次数
count m=1
fun(m)= fun(3(m-1)+1) m%2!=0&&m!=1
fun(m/2) m%2==0
非递归:采用while循环,如果输入的数不等于1,就进入循环。如果他是奇数,就执行m=3*m+1.如果是偶数,就执行m=m/2;
3.算法实现
源代码:
#include < iostream>
using namespace std;
int Duck_number2(int coun

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

C0ntr01

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值