1.问题描述:
给出一串数,找出这样的数,比他们前面的数都大,比它后面的数都小。要求:输入的数个数要大于3
解答:思路,写一个函数,该函数的功能是找出指定数组当中以i为下标的数是否满足条件:
比他们前面的数都大,比它后面的数都小。若满足,则返回true,否则返回false.
源程序:
/************* 给出一串数,找出这样的数,比他们前面的数都大,比它后面的数都小。 要求: 输入的数个数要大于3 思路:分别找出比前面都大并且比后面都小的数,两种情况都满足 *************/ #include<stdio.h> #define MAX_SIZE 200 bool Search(int *a ,int Length ,int i) { int j,k; for(j = i-1;j >=0 ;j--){ if(a[i] < a[j]) return false; } for(j = Length-1;j >= i+1 ;j--){ if(a[i] > a[j]) return false; } return true; } int main() { int n,a[MAX_SIZE] ,i; scanf("%d",&n); if(n > MAX_SIZE) return 0; for( i = 0;i < n;i++){ scanf("%d",&a[i]); } for(i = 1;i < n-1; i++){ if(Search(a,n,i)){ printf("%d/n",a[i]); } } return 0; }
运行情况如下:
若有以下输入:
4
1 6 2 9 10 23
则运行结果为:
9 10