计算一整数组前n项是否按降序排列
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
5.1需求分析:
编写具有如下函数原型的递归与非递归两种函数f,负责判断数组a的前n个元素是否从大到小完全有序了,是则返回true,否则返回false。并编制主函数对它们进行调用,以验证其正确性。
bool f(int a[], int n);
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
程序执行的结果:
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
输入错误时的显示:
5.2 概要设计:
1)非递归函数中只需逐对地判断各a[i]与a[i+1]是否都已从大到小有序排列(i = 0,1,…,n-2)。
(2)递归函数中将问题分解处理为:若n=1(即只有1个元素时)则返回true而递归出口;n>1时,若最后一对元素不顺序则返回false,否则进行递归调用(传去实参a与 n-1,去判断前n-1个元素的顺序性),并返回递归调用的结果(与前n-1个元素的是否顺序性相同)。
5.3 程序流程图(如下图):
///////////////////////////////
5.4 详细设计与编码:
见上传程序。
///////////////////////////////
5.5 调试分析:
随着实验的增加,感觉难度也在相应的加大,这次实验过程中遇到的困难就比上几次的感觉要困难的多,尤其是几个函数的相互的调用的上,在一开始的时候就遇到了,很到的困难,比如在调用f1函数和f2的函数时,其返回的时候老是出现错误,后来经过认真的审查,才发现是因为在返回的时候设置的错误。
///////////////////////////////
5.6 用户使用说明:
用户根据在屏幕上显示的的提示输入数字,便可由程序实现对该数的计算,完成题目的要求,为了在用户的输入错误后能让用户发现,本程序提供了检错功能,在用户输入错误后会显示出提示。比如在上图的显示中就显示的是错误的信息提示。
///////////////////////////////
5.7 设计心得:
通过这些时间的不断的编程,对c++的理解还是有比较深的,感觉在不断的编程的练习过程中,感觉只要是能用心的投入进去,c++的编程还是很容易的上手的,在这次的编程中遇到了比上次的实验中要困难的多,在完成的时间上也比上次多了,虽然费的时间更多了,但是在编程的过程中,得到的收获也更多了。