利用函数指针数组实现菜单选择
将下面的程序改写成使用菜单驱动界面。程序提供5个选项如下所示(应在屏幕上显示):
Enter a choice:
0 Print the array of grades
1 Find the minimum grade
2 Find the maximum grade
3 Print the average on all tests for each student
4 End program
当用户按下选择后,得到相应的输出。
#include<iostream>
using namespace std;
//定义学生数组
char student1[]={'A','m','b','e','r'};
char student2[]={'S','u','l','l','i'};
char student3[]={'K','r','y','s','t','a','l'};
char student4[]={'L','u','n','a'};
//定义成绩数组
int grade[4][5]={{8,100,96,96,80},
{89,79,87,68,86},
{79,67,66,89,90},
{97,86,79,60,88}};
//打印成绩数组
void printArray(char student1[5],char student2[5],char student3[7],char student4[4],int grade[4][5])
{
//打印第一位同学的成绩
for(int i=0;i<4;i++)
{
cout<<student1[i];
}
cout<<"'s grades are:";
for(int i=0;i<=4;i++)
{
cout<<grade[0][i]<<" ";
}
cout<<endl;
//打印第二位同学的成绩
for(int i=0;i<4;i++)
{
cout<<student2[i];
}
cout<<"'s grades are:";
for(int i=0;i<=4;i++)
{
cout<<grade[1][i]<<" ";
}
cout<<endl;
//打印第三位同学的成绩
for(int i=0;i<6;i++)
{
cout<<student3[i];
}
cout<<"'s grades are:";
for(int i=0;i<=4;i++)
{
cout<<grade[2][i]<<" ";
}
cout<<endl;
//打印第四位同学的成绩
for(int i=0;i<3;i++)
{
cout<<student4[i];
}
cout<<"'s grades are:";
for(int i=0;i<=4;i++)
{
cout<<grade[3][i]<<" ";
}
cout<<endl;
}
//找到最低成绩
void findMinimun(char student1[5],char student2[5],char student3[7],char student4[4],int grade[4][5])
{
//打印第一位同学的最低成绩
int min1=grade[0][0];
for(int i=1;i<5;i++)
{
if(grade[0][i]<min1)
{
min1=grade[0][i];
}
}
for(int i=0;i<4;i++)
{
cout<<student1[i];
}
cout<<"的最低成绩是:"<<min1<<endl;
//打印第二位同学的最低成绩
int min2=grade[1][0];
for(int i=1;i<5;i++)
{
if(grade[1][i]<min2)
{
min2=grade[1][i];
}
}
for(int i=0;i<4;i++)
{
cout<<student2[i];
}
cout<<"的最低成绩是:"<<min2<<endl;
//打印第三位同学的最低成绩
int min3=grade[2][0];
for(int i=1;i<5;i++)
{
if(grade[2][i]<min3)
{
min3=grade[2][i];
}
}
for(int i=0;i<6;i++)
{
cout<<student3[i];
}
cout<<"的最低成绩是:"<<min3<<endl;
//打印第四位同学的最低成绩
int min4=grade[3][0];
for(int i=1;i<5;i++)
{
if(grade[3][i]<min4)
{
min4=grade[3][i];
}
}
for(int i=0;i<3;i++)
{
cout<<student4[i];
}
cout<<"的最低成绩是:"<<min4<<endl;
int min[4]={min1,min2,min3,min4};
int minimum=min1;
for(int i=1;i<4;i++)
{
if(min[i]<minimum)
{
minimum=min[i];
}
}
cout<<"最低成绩是:"<<minimum<<endl;
}
//找到最高成绩
void findMaximun(char student1[5],char student2[5],char student3[7],char student4[4],int grade[4][5])
{
//打印第一位同学的最高成绩
int max1=grade[0][0];
for(int i=1;i<5;i++)
{
if(grade[0][i]>max1)
{
max1=grade[0][i];
}
}
for(int i=0;i<4;i++)
{
cout<<student1[i];
}
cout<<"的最高成绩是:"<<max1<<endl;
//打印第二位同学的最高成绩
int max2=grade[1][0];
for(int i=1;i<5;i++)
{
if(grade[1][i]>max2)
{
max2=grade[1][i];
}
}
for(int i=0;i<4;i++)
{
cout<<student2[i];
}
cout<<"的最高成绩是:"<<max2<<endl;
//打印第三位同学的最高成绩
int max3=grade[2][0];
for(int i=1;i<5;i++)
{
if(grade[2][i]>max3)
{
max3=grade[2][i];
}
}
for(int i=0;i<6;i++)
{
cout<<student3[i];
}
cout<<"的最高成绩是:"<<max3<<endl;
//打印第四位同学的最高成绩
int max4=grade[3][0];
for(int i=1;i<5;i++)
{
if(grade[3][i]>max4)
{
max4=grade[3][i];
}
}
for(int i=0;i<3;i++)
{
cout<<student3[i];
}
cout<<"的最高成绩是:"<<max4<<endl;
int max[4]={max1,max2,max3,max4};
int maximum=max1;
for(int i=1;i<4;i++)
{
if(max[i]<maximum)
{
maximum=max[i];
}
}
cout<<"最高成绩是:"<<maximum<<endl;
}
//打印每位同学的平均成绩
void printAverage(int grade[][5])
{
//定义总成绩变量
double sum=0.0;
//定义平均成绩
double ave=0.0;
//求第一位同学的总成绩
for(int i=0;i<5;i++)
{
sum+=grade[0][i];
}
//求第一位同学的平均成绩
ave=sum/5;
cout<<"第一位同学的平均成绩是:"<<ave<<endl;
sum=0.0;
ave=0.0;
//求第二位同学的总成绩
for(int i=0;i<5;i++)
{
sum+=grade[1][i];
}
//求第二位同学的平均成绩
ave=sum/5;
cout<<"第二位同学的平均成绩是:"<<ave<<endl;
sum=0.0;
ave=0.0;
//求第三位同学的总成绩
for(int i=0;i<5;i++)
{
sum+=grade[2][i];
}
//求第三位同学的平均成绩
ave=sum/5;
cout<<"第三位同学的平均成绩是:"<<ave<<endl;
sum=0.0;
ave=0.0;
//求第四位同学的总成绩
for(int i=0;i<5;i++)
{
sum+=grade[3][i];
}
//求第四位同学的平均成绩
ave=sum/5;
cout<<"第四位同学的平均成绩是:"<<ave<<endl;
}
int main()
{
//定义查询变量
int number;
//cout<<"请输入一个0~4之间的整数:"<<endl;
cout<<"Enter a choice:"<<endl;
cout<<"0 Print the array of grades"<<endl;
cout<<"1 Find the minimum grade"<<endl;
cout<<"2 Find the maximum grade"<<endl;
cout<<"3 Print the average on all tests for each student"<<endl;
cout<<"4 End program"<<endl;
cin>>number;
//判断number的值
if(number<0||number>4)
{
cout<<"您输入的内容不在查询范围内!"<<endl;
cout<<"请重新输入"<<endl;
cout<<"请输入一个0~4之间的整数:"<<endl;
}
if(number==0)
{
printArray(student1,student2,student3,student4,grade);
}
else if(number==1)
{
findMinimun(student1,student2,student3,student4,grade);
}
else if(number==2)
{
findMaximun(student1,student2,student3,student4,grade);
}
else if(number==3)
{
printAverage(grade);
}
else if(number==4)
{
return 0;
}
system("PAUSE");
return 0;
}
注意:1.调用函数传入数组参数时,只需写数组名即可,数组名即为数组首地址
2.else if语句块中,return 后一定要有一整数值
3.C++中的system为小写