C++实验报告:构造类型、指针和引用

上海电力学院

实验报告

姓名 肖兆炜 学号 20132219 班级 2013112 专业 通信工程 同组人姓名 指导教师姓名 逄玉叶 实验日期 2014.11.3 一、实验内容

(1) 程序Ex_Sort;采用插入排序的方法,输入10个整数,按升序排列后输出,要求编

写一个通用的插入排序函数InsertSort,它带有三个参数,第一个参数是含n个元素的数组,这n个元素已按升序排序;第二个参数给出当前数组中的元素个数;第三个参数是要插入的整数。该函数的功能是将一个整数插入到数组中,然后进行排序。另外还需要一个用于输出数组元素的函数Print,要求每一行输出5个元素。

(2) 程序Ex_Student ,有5个学生,每个学生的数据结构包括学号、姓名、年龄、C++

成绩、数学成绩和英语成绩、总平均分。用键盘输入5个学生的学号、姓名、三门课的成绩,计算三门课的总平均分,最后将5个同学的数据输出。要求各个功能用函数来实现,例如(设学生数据结构体类型名为STUDENT):

STUDENT InputDatas(); //输入学生数据,返回此结构体类型数据 void CalAverage(STUDENT *data,int nNum); //计算总平均分 void PrintData(STUDENT *data,int nNum) //将学生数据输出 实验准备和说明

(1) 在学习完第1章的“结构、共用和自定义”内容之后进行本次实验。 (2) 编写本次上机所需要的程序。 二、实验步骤 1. 创建工作文件夹

打开计算机,在“D:\\Visual C++ 程序\\xiaozhaowei”文件夹中创建一个新的子文件夹“4”。 2. 输入并运行程序Ex_Sort.cpp (1) 启动Visual C++ 6.0。

(2) 单击标准工具栏中的“New Test File”按钮,在新打开的文档窗口输入下列程序代码:

课程名称 Visual C++ 程序 实验项目 构造类型、指针和引用

#include

void InsertSort(int data[],int &n,int a) //形容n为引用,以便能返回修改后的n值 {

int i;

for(i=0;i

if(a<=data[i]) break; if(i==n) data[n]=a; else {

for(int j=n;j>i;j--) data[j]=data[j-1]; data[i]=a; } n++; }

void Print(int data[],int n) {

for(int i=0;i

cout<

cout<

int main() {

int data[10],nNum=0,m; for(int i=0;i<10;i++) {

cout<<\输入第\个整数:\ cin>>m;

InsertSort(data,nNum,m); }

Print(data,nNum); return 0; }

代码中,插入排序函数InsertSort最需要考虑的是当一个整数n插入到data(设数组元素个数为n)中时满足下列几个条件:

要按升序确定该元素a要插入的位置。

当插入的位置i为最后的n时,直接令data[n]=a,此时数组元素个数为n+1。

当插入的位置i不是最后的n时,则该位置后面的元素要依次后移一个位置,然后令data[i]=a,数

组元素个数为n+1。

(3) 单击标准工具栏的“Save”按钮,弹出“保存为”文件对话框。将文件定位到“D:\\Visual C++

程序\\xiaozhaowei\\4”,文件名为Ex_Sort.cpp。

(4) 编译运行后,输入下列数据进行测试,看看结果是否正确。

3. 输入并运行程序Ex_Student.cpp

(1) 选择“文件”→“关闭工作区”菜单命令,关闭原来的项目。

(2) 单击标准工具栏上的“New Test File”按钮,在新打开的文档窗口中输入下列程序代码:

#include

struct STUDENT //定义结构体类型 {

char name[8]; //姓名 char id[10]; //学号 int score[3]; //三门课的成绩

double ave; //平均分 };

STUDENT InputData() //输入 {

STUDENT stu; cout<<\姓名:\ cin>>stu.name; cout<<\学号:\ cin>>stu.id; int aveResult=0; cout<<\三门成绩:\

cin>>stu.score[0]>>stu.score[1]>>stu.score[2]; return stu; }

void CalAverage(STUDENT *data,int nNum) {

for(int i=0;i

data[i].ave=(data[i].score[0]+data[i].score[1]+data[i].score[0])/3.0; }

void PrintData(STUDENT *data,int nNum) {

cout<<\学号\\t 姓名\\t 成绩 1\\t 成绩 2\\t 成绩 3\\t 平均分\\n\ for(int i=0;i

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4