求最高同学位置

求最高同学位置

时间: 1ms        内存:128M

描述:

设一维数组存放了n(<100)名同学的身高,编写函数求身高最高同学的位置,如果结果有多个,需要输出所有人的位置。
部分代码已给定如下,只需要提交缺失的代码。

#include <iostream>
using namespace std;

int main()
{
    int getHeight(float height[],int n,float result[]);
    float height[100],result[100];
    int i,num,n;
    cin>>n;
    for(i=0; i<n; i++)
        cin>>height[i];
    num=getHeight( height,n,result);
    for(i=0; i<num; i++)
        cout<<i+1<<":"<<result[i]<<endl;
    return 0;
}

输入:

n和n名同学的身高

输出:

身高最高同学的位置,多个结果每行显示一个。

示例输入:

10
1.7 1.69 1.82 1.59 1.93 1.77 1.93 1.78 1.93 1.72

示例输出:

1:5
2:7
3:9

提示:

参考答案(内存最优[1096]):

#include<stdio.h> 

int main() 
{ 

     int i,n,j;
	 float a[100],b[100],t;
	 scanf("%d",&n);
	 for(i=0;i<n;i++)
		 scanf("%f",&a[i]);
	 for(i=0;i<n;i++)
		 b[i]=a[i];
	 for(j=0;j<n-1;j++)
		 for(i=0;i<n-1-j;i++)
			 if(a[i]>a[i+1])
			 {
				 t=a[i];
				 a[i]=a[i+1];
				 a[i+1]=t;
			 }
	float max=a[n-1];
	int w[100];
    int y=0;

	for(i=0;i<=n-1;i++)
	{
	      if(b[i]==max)
		  {
			  w[y]=i;
		      y++;
		  }
	}
  for(i=0;i<y;i++)
        printf("%d:%d\n",i+1,w[i]+1);

}
	

参考答案(时间最优[0]):


#include <iostream>
using namespace std;

int main()
{
    int getHeight(float height[],int n,float result[]);
    float height[100],result[100];
    int i,num,n;
    cin>>n;
    for(i=0; i<n; i++)
        cin>>height[i];
    num=getHeight( height,n,result);
    for(i=0; i<num; i++)
        cout<<i+1<<":"<<result[i]<<endl;
    return 0;
}
#include<math.h>
#include<iomanip>
#include<stdio.h>
int getHeight(float height[],int n,float result[])
{
	int i,x=0,j,b,c=0;
	float max;
	max=height[0];
	for(i=0;i<n;i++)
	{
		if(height[i]>max)
		{
			max=height[i];
		}
	}
	for(j=0;j<n;j++)
	{
		if(height[j]==max)
		{
			x=x+1;
			b=j+1;
			result[c]=b;
			c++;
		}
	}
	return x;
}

题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。

点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注