从键盘输入N(N>=5)架战斗机型号和对应的最大飞行高度(如:MiG-31: 25000米、U2: 24000米、F-22: 22000米、Typhoon: 20000米、F-15: 19697米),要求至少自定义2个函数,实现如下功能:
录入和浏览功能:将战斗机的型号和最大飞行高度分别录入到显示系统中,并给出输出。
统计功能:计算战斗机的平均飞行高度,并输出大于平均飞行高度的战斗机型号。
排序功能:按照从大到小的顺序,依次地输出最大飞行高度值。
流程图:
(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;
}
#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]);
}
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!