/*
* Copyright (c) 2013, 烟台大学计算机学院
* All rights reserved.
* 作 者: 李家豪
* 完成日期:2013 年12月16日
* 版 本 号:v1.0
* 问题描述:编写程序,要判断两个有序数组中是否存在相同的数字.
* 样例输入:
* 样例输出:
* 问题分析:
*/
#include<iostream>
using namespace std;
bool existthesame(int *a,int n1,int *b,int n2);
int main()
{
int a[]={1,4,7,8};
int b[]={2,5,6,9,10};
int n1=sizeof(a)/sizeof(a[0]);
int n2=sizeof(b)/sizeof(b[0]);
bool flag=existthesame(a,n1,b,n2);
if(flag==true)
cout<<"两个有序数组中存在相同的数字!\n";
else
cout<<"两个有序数组中不存在相同的数字!\n";
return 0;
}
bool existthesame(int *a,int n1,int *b,int n2)
{
int *p,*q;
bool same=false;
//将两个数组(指针指向的两组值)中的元素两两比较,直至发现有一个是想同的
for(p=a;p<a+n1&&!same;++p) //循环结束条件如是写可以及时终止循环
{
for(q=b;q<b+n2&&!same;++q)
if (*p==*q)
same=true;
}
return same;
}
运行结果:
体会新的:这实际上就是通过两个数组中的数值的循环比较来实现是否有重复数字的