C语言实验报告

1设计主函数,在主函数中应该有正确输入或调用每个学生的学号及各科成绩(输入可以根据不同的情况采用不同的输入方案)
要求:输入时有必要的提示信息
2设计子函数,可以求每个学生的平均成绩,每门课的平均成绩,成绩的最大值,最小值等并保存在数组中
要求:每个学生至少设计两个子函数
3最后结果输出。要求:输出格式要直观,清晰大方,格式规范
谢谢!好的还可以加分

第1个回答  推荐于2016-06-02
// 要求,在输入姓名的时候请不要有空格,比如ZhangSan 不能为Zhang San
//你的题目要求不是很详细,这个大概能满足你的需求
#include <iomanip>
#include <iostream>
#include <string>
using namespace std;
#define MAX_NUM 30

struct STUDENT
{
string stuName; //姓名
string stuSex; //性别 m f
int stuNum; //学号
double stuScore[3]; //成绩
double stuAver; //平均成绩
double stuAll; //总分
};

void inputData(STUDENT stu[],int &ID)
{
cout<<"请分别输入该学生的姓名,性别,学号,3科成绩"<<endl;
cin>>stu[ID].stuName>>stu[ID].stuSex>>stu[ID].stuNum>>stu[ID].stuScore[0];
cin>>stu[ID].stuScore[1]>>stu[ID].stuScore[2];
cin>>stu[ID].stuScore[4];
// 总分,平均分

stu[ID].stuAll=(stu[ID].stuScore[0]+stu[ID].stuScore[1]+stu[ID].stuScore[2]);
stu[ID].stuAver=stu[ID].stuAll/3.0;

cout<<"录入成功!"<<endl;
ID++;
}

void showTable()
{
cout<<" 姓名 性别 学号 课程1 课程2 课程3 总分 平均分"<<endl;
}

void showData(STUDENT stu[],int ID)
{
cout<<setw(8)<<stu[ID].stuName<<setw(7)<<stu[ID].stuSex<<setw(7)<<stu[ID].stuNum<<setw(7)<<stu[ID].stuScore[0];
cout<<setw(7)<<stu[ID].stuScore[1]<<setw(7)<<stu[ID].stuScore[2];
cout<<setw(7)<<stu[ID].stuAll<<setw(7)<<stu[ID].stuAver<<endl;
}

void queryData(STUDENT stu[],int ID)
{
string stuName;
cout<<"请输入要查询的姓名:";
cin>>stuName;
cout<<endl;
for(int i=0;i<ID;i++)
{
if(stu[i].stuName==stuName)
{
cout<<"信息找到"<<endl;
showTable();
showData(stu,i);
system("pause");
return ;

}
}
cout<<"未找到信息"<<endl;
}

//总分排序
void sortByAll(STUDENT stu[],int ID)
{
int i,j;
STUDENT temp;
for(i=0;i<ID-1;i++)
{
for(j=i+1;j<ID;j++)
{
if (stu[i].stuAll > stu[j].stuAll)
{
temp=stu[i];
stu[i]=stu[j];
stu[j]=temp;
}
}
}
cout<<"排序成功!"<<endl;
}

void funTable()
{
cout<<"================================="<<endl;
cout<<" 1---输入学生信息"<<endl;
cout<<" 2---查询学生信息"<<endl;
cout<<" 3---总分排序"<<endl;
cout<<" 4---显示当前学生信息"<<endl;
cout<<" 5---退出"<<endl;
cout<<"=================================="<<endl;
cout<<"请给出你的选择:"<<endl;
}

int main()
{
STUDENT stu[MAX_NUM]; //开辟30个空间来存放学生信息;
int ID=0; //用来计数,记当前学生信息的总数
char ch;
bool flag=true;
int i;
while(flag)
{
funTable();
cin>>ch;

switch (ch)
{
case '1':
inputData(stu,ID);
break;
case '2':
queryData(stu,ID);
break;
case '3':
sortByAll(stu,ID);
break;
case '4':
showTable();
for(i=0;i<ID;i++)
{
showData(stu,i);
}
break;
default:
cout<<"用户选择退出……"<<endl;
system("pause"); //暂停
flag=false;
break;
}
system("pause"); //暂停
system("cls"); //清屏
}
return 0;
}本回答被提问者采纳
相似回答