从键盘输入N(N>=5)架战斗机型号和对应的最大飞行高度(如:MiG-31: 25000米、U2: 24000米、F-22: 22000米、Typhoon: 20000米、F-15: 19697米),要求至少自定义2个函数,实现如下功能:
录入和浏览功能:将战斗机的型号和最大飞行高度分别录入到显示系统中,并给出输出。
统计功能:计算战斗机的平均飞行高度,并输出大于平均飞行高度的战斗机型号。
排序功能:按照从大到小的顺序,依次地输出最大飞行高度值。
#include <stdio.h>
typedef struct _plane
{
char name[20];
int high;
}plane;
void input(plane p[],int n)
{
for(int i=0;i<n;i++)
scanf("%s:%d",p[i].name,&p[i].high);
}
void print(plane p[],int n)
{
for(int i=0;i<n;i++)
printf("%s:%d\n",p[i].name,p[i].high);
}
void avg(plane p[],int n)
{
int sum = 0;
double avg = 0;
for(int i=0;i<n;i++)
sum += p[i].high;
avg = sum*1.0/n;
for(int i=0;i<n;i++)
if(p[i].high > avg)
printf("%s\n",p[i].name);
}
void sort(plane p[],int n)
{
plane t;
for(int i=0;i<n-1;i++)
for(int j=0;j<n-i-1;j++)
{
if(p[j].high<p[j].high)
{
t = p[j];
p[j] = p[j+1];
p[j+1] = t;
}
}
}
int main()
{
plane p[1000];
int n;
scanf("%d",&n);
input(p,n);
avg(p,n);
sort(p,n);
print(p,n);
return 0;
}
流程图如下:
(1)录入和浏览函数流程图
(2)统计函数流程图
(3)排序函数流程图
代码:
#include <stdio.h>
//定义数据结构体
typedef struct _stdata
{
char name[20]; //型号
int height; //高度
}StData;
//录入功能
void input(StData a[],int* n)
{
int i;
printf("请输入战斗机的数量:");
scanf("%d",n);
for(i=0;i<*n;i++)
{
printf("请输入战斗机%d的型号和高度:",i+1);
scanf("%s %d",a[i].name,&a[i].height);
}
//浏览
printf("战斗机的型号和高度为:\n");
for(i=0;i<*n;i++)
{
printf("%s:\t%d米\n",a[i].name,a[i].height);
}
}
//统计
void Tongji(StData a[],int n)
{
float ave = 0;
int i;
for(i=0;i<n;i++)
ave += a[i].height;
ave = ave/n; //计算平均高度
printf("大于平均飞行高度的战斗机型号:\n");
for(i=0;i<n;i++)
{
if(a[i].height > ave)
printf("%s ",a[i].name);
}
}
//排序
void SortByHeight(StData a[],int n)
{
int i,j;
StData t;
for(i=0;i<n-1;i++)
{
for(j=0;j<n-1-i;j++)
{
if(a[j].height < a[j+1].height)
{
t = a[j];
a[j] = a[j+1];
a[j+1] = t;
}
}
}
//依次输出飞行高度
for(i=0;i<n;i++)
printf("%d ",a[i].height);
}
int main()
{
StData arr[100];
int n;
input(arr,&n); //录入并浏览
Tongji(arr,n); //统计功能
SortByHeight(arr,n); //排序功能
return 0;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!