C++两个数组前n个数是否按下标对应相等
编写具有如下函数原型的递归与非递归两种函数equ,负责判断数组a与b的前n个元素值是否按下标对应完全相同,是则返回true,否则返回false。并编制主函数对它们进行调用,以验证其正确性。bool equ(int a[], int b[], int n);
(一)需求分析:
这一题跟14题有相似之处,主要的目的是编制bool equ(int a[], int b[], int n);
题目的要求是判断两个数组的前n 个是否都相等,两个数组要在主函数中定义,并且赋值,然后通过调用bool equ()函数来判断是否按序相等。
(二)概要分析:
可以按照14题的方法,用两个形式来编制bool equ()函数,程序的流程图如下:
(三)详细分析
首先定义两个数组并赋值,它们的元素个数可以不同,但是在实验中我设置的数组其方法上边的题目中多次给出,在这里不进行详细的描述个数是相同的
再者,编制bool equ(int a[], int b[], int n) 函数,它有两个方法:
1. 可以用非递归的方法,它可以用for 循环来判断两个数组元素的大小是否按顺序对应相等排列
2. 用递归的方法,中间的循环地调用它自身的函数
(四)调试分析:
由于上个实验在非递归程序的设计过程中出现了,一点小错误这次注意力没有在犯相同的错误。这个实验比较顺利的完成。
(五)用户使用说明:
该程序的用处是判断两个数组的前n 个是否都相等,两个数组要在主函数中定义,并且赋值,然后通过调用bool equ()函数来判断是否按序相等。
(辣)测试结果:
(七) 源程序:
见上传程序15.cpp
(八) 编程体会:
这个题目主要是比较两个数组的前n项是否相等,我们可以利用两种策略解决这个问题,递归和非递归进一步加强对递归的理解。
/*************************************************
Copyright (C), 2008
File name: 软件设计普通题 15(15.cpp)
Author: 计06-1 高战
Description:
Others: ....
Function List: // 主要函数列表,每条记录应包括函数名及功能简要说明
1.main() 完成各种提示与主操作输入输出
2.for 循环
3.equ()equ1() 两种函数
History:
<author> <time> <version > <desc>
*****************************************************/
#include<iostream>
using namespace std;
int main()
{
bool equ(int a[],int b[],int n); /*函数的声明*/
bool equ1(int a[],int b[],int n);
int a[5],b[5];
int q=1,w;
while(q){
cout<<"输入五个数组a的元素"<<endl; /*各种必须操作*/
for(int i=0;i<5;i++)
cin>>a[i];
原文请找腾讯752018766辣,文-论'文.网http://www.751com.cn/ else cout<<"a b数组是不同的"<<endl;};break;
case 2:{if(equ1(a,b,5)) /*非递归函数的调用*/
cout<<"a b数组是相同的"<<endl;
else cout<<"a b数组是不同的"<<endl;};break;
default:cout<<"输入出错!!!"<<endl;}
cout<<"是否继续 继续按1 否按0退出"<<endl;
cin>>q;
}
return 0;
}
bool equ1(int a[],int b[],int n) /*非递归函数的定义*/
{ for(int m=0;m<n;m++)
if(a[m]!=b[m])
return false;
return true;
}
bool equ(int a[],int b[],int n) /*递归函数的定义*/
{ if((n-1)==0)
{if(a[n-1]==b[n-1])
return true;
else return false ;}
else equ(a,b, n-1);1826