实验4 构造类型、指针何引用

更新时间:2024-01-29 00:39:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

实验内容

(1)程序:采用插入排序的方法,输入10个整数按升序排列后输出。要求编写一个通用的插入排序函数,它带有3个参数:第1个参数是含有个元素的数组,这个元素已按升序排序;第2个参数给出当前数组中元素个数;第3个参数是要插入的整数。该函数的功能是将一个整数插入到数组中,然后进行排序。另外还需要一个用于输出数组元素的函数,要求每一行输出5个元素。

(2)程序Ex_Student:有5个学生,每个学生的数据结构包括学号、姓名、年龄、C++成绩。数学成绩和英语成绩、总平均分,从键盘输入5个学生的学号、姓名、3门课的成绩,计算3门课的总平均分,最后将5个学生的数据输出。要求各个功能用函数来实现,例如(设学生数据结构体类型名为STUDENT):

STUDENTInputDataO; //输入学生数据,返回此结构体类型数据 void CalAverage(STUDENT*data,int nNum); //计算总平均分 void PrintData(STUDENT*data,int nNum); //将学生数据输出

实验准备和说明

(1) 在学习完第一章内容之后进行本次实验。 (2) 编写本次上机说需要的程序。

实验步骤

1.创建工作文件夹

打开计算机,在“D:\\Visual C++程序\\LiNing”文件夹中创建一个新的子文件夹“实验4”

2.输入并运行程序Ex_Sort.cpp

输入并运行程序Ex_Sort.cpp的具体步骤如下。 (1)启动VisualC++6.0.

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

#inclde

viod InsertSort(int data[],int&n,int a) \\\\行参n为引用,以便能返回修改后的n值 { int i;

for(i=0;i

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

{

if(a<= =n)data[n]=a; }

if(i==n)data[n]=a;

else {

for(int j=n;j>i;i--)

data[j]=data[j-1];

data[i]=a; }

n++; \\\\插入后,数组元素个数增加一个

}

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

for(int i=0;i

cout<

if((i+1)%5==0)cout<

}

cout<

void main() {

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

cout<<”输入第”<>m;

insertSort(data,nNum,m); }

print(data,nNum); }

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

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

②当插入的位置i为最后的n时,直接令data [n] =a时。此时数组元素的个数为n+1; ③当插入的位置i不是最后和n时,则该位置的后面元素要依次后移一个位置,然后令data [i]

=a,数组元素为n+1。

(3 )单击标准工具栏Save按钮,弹出“保存为”文件对话框。将文件定位到“D?\\VisualC + + 程序\\LingMing \\实验4”,文件名为ExSort .cpp.

(4 )编译运行后。输入下列进行测试,看看结果是否正确,并分析函数 InsertSort。 25 78 90 12 10 100 33 44 22 55

想一想 若用简单链表实现Ex-Sort的功能,则应如何编程?

3.输入并运行程序Ex?Student.cpp

输入并运行程序Ex?Student.cpp的具体步骤如下。 (1 )选择“文件” →“关闭工作区”,关闭原来的项目。

(2 )单击标准工具栏上的“New Text Fil”的按钮,在心打开的文档窗口中输入下列程序代码? #include〈iostream.h〉

structSTUDENT ??定义结构类型

{

char name[8]; //姓名 char id[10]; //学号

int score[3]; //3门课的成绩 double ave; //平均分 };

STUENT Inputdata() // 输入 {

STUDENT sut

cout<<“姓名:”; cin>>sut.nane; cout<<“学号:”; cin>>stu.id; int avtResult=0; cout<<“三门成绩:”;

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

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<<”\\n学号\\t姓名\\t成绩1\\t成绩2\\t成绩3\\t平均分\\n”; for (int i=0; i

cout<

cout<<”\\t”<

void main() {

const int stuNum=5; STUDENT stu[stuNum=5]; for (int i=0;i

cout<<”输入第” <

CalAverage(,stuNum); //计算平均分 printData(stu,stuNum); //输入学生数据 }

(3)单击标准工具栏的Save 按钮,弹出“保存为“文件对话框,将文件保存为Ex-Student.cpp。 (4) 编译运行并测试。

4.退出 Visual C++ 6.0

5.写出实验报告

结合思考与练习题,写出实验报告。

思考与练习

(1)在Ex-Student程序中,若学生的人数不定,则程序应如何修改?

(2)在Ex-Student程序中,若有一个函数SortPrintData用于对学生数据按平均分

进行排序并输入,则该函数应如何实现?

本文来源:https://www.bwwdw.com/article/0bqw.html

Top