一道C语言题

求n个整数中的最大的两个元素。要求定义一个函数LargestTow(),求数组a的最大的两个元素,分别存入形参指针pfirst和psecond所指存储单元,函数原型如下:... 求n个整数中的最大的两个元素。要求定义一个函数LargestTow(),求数组a的最大的两个元素,分别存入形参指针pfirst和psecond所指存储单元,函数原型如下:
void LargestTow(int a[],int n,int *pfirst,int *psecond)
{
/*数组a有n个元素,将数组中的最大值存入形参指针pfirst所指内存单元,将数组中第二大的值存入形参指针psecond所指内存单元。 */
}
#include<stdio.h>
#define N 100
void Largesttow (int a[],int n,int*pfirst,int*psecond)
{
int k,j,t;

for(j=0;j<n;j++)
{
for(k=j+1;k<4;k++)
{
if(a[j]<a[k])
{
t=a[j];
a[j]=a[k];
a[k]=t;
}
}
}
*pfirst=a[1];
*psecond=a[2];
}
int main()
{
int i,n,a[N],*pfirst,*psecond;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
Largesttow(a[N],n,&pfirst,&psecond);
printf("%d%d",a[1],a[2]);
return 0;
}
展开
 我来答
White_MouseYBZ
2017-12-13 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6280万
展开全部
#include "stdio.h"
#define N 20
void Largesttow (int a[],int n,int *pfirst,int *psecond){
int i,j,k;
for(i=0;i<n;i++){
for(k=i,j=k+1;j<n;j++)
if(a[k]<a[j])
k=j;
if(k!=i)
j=a[k],a[k]=a[i],a[i]=j;
if(a[i]!=a[0]){
*pfirst=a[0];
*psecond=a[i];
return;
}
else if(i==n-1)
*pfirst=*psecond=a[0];
}
}
int main(int argv,char *argc[]){
int i,n,a[N],max1,max2;
printf("Please enter n(int 0<n<=N)...\nn=");
if(scanf("%d",&n)!=1 || n<1 || n>N){
printf("Input error, exit...\n");
return 0;
}
printf("Please enter %d integers...\n",n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
Largesttow(a,n,&max1,&max2);
if(max1!=max2)
printf("\n%d %d\n",max1,max2);
else
printf("\nOnly one number: %d\n",max1);
return 0; 
}

运行样例:

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式