- #include<stdio.h>
- int f1(int a[],int n,int i)
- {
- int k;
- for(k=i-1;k>-1;k--)
- {
- if(a[k]>a[i])
- break;
- }
- return k;
- }
- int f2(int a[],int n,int i)
- {
- int k;
- for(k=i+1;k<n;k++)
- {
- if(a[k]>a[i])
- break;
- }
- return k;
- }
- void printw(int a[],int w)
- {
- printf("大数下标: %d",w);
- printf("\n大数为: %d",a[w]);
- }
- void main()
- {
- int i,j,n,w1,w2;
- printf("输入数组大小: ");
- scanf("%d",&n);
- printf("输入数组元素: ");
- int a[n];
- for(j=0;j<n;j++)
- scanf("%d",&a[j]);
- printf("输入要查询的元素下标: ");
- scanf("%d",&i);
- if(i==0)
- {
- w2=f2(a,n,i);
- if(w2>n-1)
- {
- printf("没有更大的数!\n");
- }
- else
- {
- printw(a,w2);
- }
- }
- if(i==n-1)
- {
- w1=f1(a,n,i);
- if(w1<0)
- {
- printf("没有更大的数!\n");
- }
- else
- {
- printw(a,w1);
- }
- }
- if(0<i&&i<n-1)
- {
- w1=f1(a,n,i);
- w2=f2(a,n,i);
- if(w1<0&&w2>n-1)
- printf("没有更大的数!\n");
- else if(w1>-1&&w2<n)
- {
- if((i-w1)>(w2-i))
- {
- printw(a,w2);
- }
- else if((i-w1)<(w2-i))
- {
- printw(a,w1);
- }
- else
- {
- printf("大数下标: %d %d\n",w1,w2);
- printf("大数为: %d %d",a[w1],a[w2]);
- }
- }
- else if(w1>-1&&w2>n-1)
- {
- printf("大数下标: %d\n",w1);
- printf("大数为: %d\n",a[w1]);
- }
- else
- {
- printf("大数下标: %d\n",w2);
- printf("大数为: %d\n",a[w2]);
- }
- }
- }
来源: https://www.oschina.net/code/snippet_2879488_58523