求最高同学位置
时间: 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;
}
题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。
