求如下问题的流程图。

从键盘输入N(N>=5)架战斗机型号和对应的最大飞行高度(如:MiG-31: 25000米、U2: 24000米、F-22: 22000米、Typhoon: 20000米、F-15: 19697米),要求至少自定义2个函数,实现如下功能:
录入和浏览功能:将战斗机的型号和最大飞行高度分别录入到显示系统中,并给出输出。
统计功能:计算战斗机的平均飞行高度,并输出大于平均飞行高度的战斗机型号。
排序功能:按照从大到小的顺序,依次地输出最大飞行高度值。

流程图:
(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;
}


#include <stdio.h>
#define N 5
void statistics(char air[N][10],int hei[N]);
void sort(int hei[N]);
int main()
{   
    char air[N][10];  //型号数组 
    int hei[N];       //高度数组 
    //录入和浏览功能 
    for(int i = 0; i < N; i++)
    {
 
           printf("请输入第%d个飞机的型号:", i + 1);
           scanf("%s",&air[i]); 
           printf("请输入第%d架飞机的最高飞行高度:",i+1);
           scanf("%d",&hei[i]);
 
    }
    for(int i = 0; i < N; i++)
    {
 
           printf("%s型号飞机的最大飞行高度是%d米\n",air[i],hei[i]);
 
    }
    statistics(air,hei);
    sort(hei);
    return 0; 
}
//统计功能
void statistics(char air[N][10],int hei[N]){
    int sum=0;
    for(int i=0;i<N;i++){
        sum+=hei[i];
    }
    int ave=sum/N;
    printf("平均飞行高度是%d米\n",ave);
    printf("大于平均飞行高度的战斗机型号有:"); 
    for(int j=0;j<N;j++){
        if(hei[j]>ave) printf("%s ",air[j]);
    } 
}
//排序功能
void sort(int hei[N]){
    //冒泡排序 
    for(int i=0;i<N;i++){
        for(int j=0;j<N-1;j++){
            if(hei[j]<hei[j+1]){
                int temp=hei[j];
                hei[j]=hei[j+1];
                hei[j+1]=temp;
            }
        }
    }
    printf("\n");
    for(int j=0;j<N;j++){
        printf("%d ",hei[j]);
    }
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632