当前访客身份:游客 [ 登录 | 加入 OSCHINA ]

代码分享

当前位置:
代码分享 » C/C++  » 编程基础
分享到: 
收藏 +0
0
<无详细内容>
标签: <无>

代码片段(1) [全屏查看所有代码]

1. [代码][C/C++]代码     跳至 [1] [全屏预览]

#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]);
		}	 
	}
}


开源中国-程序员在线工具:Git代码托管 API文档大全(120+) JS在线编辑演示 二维码 更多»

开源从代码分享开始 分享代码
李健95的其它代码 全部(3)...