求此题的代码和流程图

从键盘输入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)录入和浏览函数流程图

img

(2)统计函数流程图

img

(3)排序函数流程图

img

代码:

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

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632