头歌C++面向对象实训一

**

C&C++ 面向过程编程综合练习

**
一、实训目的
熟练以下内容:
(1)函数的定义及使用;
(2)数组的定义及使用;
(3)指针的定义及使用;
(4)结构的定义及使用;
(5)多文件的程序的编译和运行方法。

二、实训内容
1.最大值函数
相关知识:
(1)函数声明与定义
(2)函数重载
(3)调用函数
2.计算阶乘
相关知识:
(1)递归函数
(2)头文件与源文件
3.求矩阵最大元素
相关知识:
(1)数组
(2)二维数据
(3)数组的使用

4.使用链表进行学生信息管理
相关知识:
(1)结构体
(2)单向链表
(3)单向链表的插入
(4)单向链表的删除
(5)头结点的作用
(6)单向链表的遍历
三、实训所实现系统主要功能
1.最大值函数
Max函数重载,分别求两个和三个数中的最大值
2.计算阶乘
利用递归求阶乘,熟悉头文件和源文件的联系
3.求矩阵最大元素
熟悉数组的使用,求矩阵的最大元素和所在的行、列
4.使用链表进行学生信息管理
利用插入、删除、遍历操作对链表操作进而管理和修改学生信息

四、实训系统核心代码及必要说明
1.最大值函数

int Max(int a,int b)
{
    /********* Begin *********/
    //找出两个参数中最大的那个并返回
    return a > b ? a : b;
    
    /********* End *********/
}

int Max(int a,int b,int c)
{
    /********* Begin *********/
    //找出三个参数中最大的那个并返回
    int t = a > b ? a : b;
    return t > c ? t : c;
    
    
    /********* End *********/
}

2.计算阶乘


int Fact(int n)
{
    /********* Begin *********/
    //使用递归计算 n 的阶乘
    if (n == 0) return 0;
    if (n == 1)	return 1;
    return Fact(n - 1) * n;
    
    
    /********* End *********/
}

3.求矩阵最大元素


int MaxEle(int a[3][2],int *r,int *c)
{
    /********* Begin *********/
    //返回最大元素和它所在的行、列号
    int m = a[0][0], x = 0, y = 0;
    for (int i = 0; i < 3; i++)
        for (int j = 0; j < 2; j++)
            if (m < a[i][j])
            {
                m = a[i][j];
                x = i;
                y = j;
            }
    *r = x + 1;
    *c = y + 1;
    return m;
    /********* End *********/
}

4.使用链表进行学生信息管理

#include 
using namespace std;


struct Linked
{
    /********* Begin *********/
    //结构体的成员变量
    int n;
	float grade;
	struct Linked *next;
    

    /********* End *********/
};

Linked* Create()
{
    /********* Begin *********/
    //创建并返回一个新链表
    Linked *L = new Linked[55];
	L -> next = NULL;
	return L;
    
    
    /********* End *********/
}

void InsertAfter(Linked *node,int num,float sc)
{
    /********* Begin *********/
    //在指定节点后插入一个新节点,内容由 num,sc 参数指定
    Linked *a = new Linked;
	a -> n = num;
	a -> grade = sc;
	a -> next = node -> next;
	node -> next = a; 
    
    /********* End *********/
}

void DeleteAfter(Linked *node)
{
    /********* Begin *********/
    //删除此节点之后的一个节点
    Linked * a = node -> next;
	node -> next = a -> next;
	delete a;
    

    /********* End *********/
}

Linked* GetByIndex(Linked *head,int index)
{
    /********* Begin *********/
    //返回指定索引处的节点
    int a = 0;
	Linked *p = head -> next;
	while (a != index)
	{
		a++;
		p = p -> next;
	}
	return p;
    /********* End *********/
}

void PrintAll(Linked *head)
{
    /********* Begin *********/
    //按格式打印此链表中所有节点的成员变量
    Linked *p = head -> next;
	while (p)
	{
		cout << p -> n << " " << p -> grade << endl;
		p = p -> next;
	}
    /********* End *********/
}


你可能感兴趣的:(头歌C++面向对象实训,c++)