Bootstrap

C++面向对象实验二

实验二

  1. 编写一个将整数扩大十倍的函数func

//func.c

void fun(int *a)

{

  int temp;

  temp = *a * 10;

  *a = temp;

}

/func.h

void func(int *a);

//main.c

#include<stdio.h>

#include <iostream>

#include"func.h"

int main()

{

  int m = 10;

  func(&m);

  printf("%d\n", m);

  system("pause");

  return 0;

}

  1. 1改写为引用参数类型的版本

//func.c

void func(int& a)

{

   int temp;

temp = a * 10;

   a = temp;

}

//func.h

void func(int &a);

//main.c

#include<stdio.h>

#include <iostream>

#include"func.h"

int main()

{

  int m = 10;

  func(m);

  printf("%d\n", m);

  system("pause");

  return 0;

3、形如下面的整型单链表类型:

   struct LinkNode

    {

         int data;

         LinkNode* next;

     };

  1. 编写声明为void headInsert(LinkNode**);的无表头节点头插法函数

  1. 1)改写为引用版本

     3)编写声明为void headInsert(LinkNode*);的有表头节点头插法函数

     4)将3)改写为类封装版本的静态成员函数

headInsert.cpp代码:

#include<malloc.h>

#include<stdio.h>

struct LinkNode

{

    int data;

    LinkNode* next;

};

//无表头

void headInsert(LinkNode** head) {

    LinkNode* newNode = (LinkNode*)malloc(sizeof(LinkNode));

    scanf_s("%d", &(newNode->data));

    newNode->next = *head;

    *head = newNode;

}

void headInsert(LinkNode*& head) {

    LinkNode* newNode = (LinkNode*)malloc(sizeof(LinkNode));

    scanf_s("%d", &(newNode->data));

    newNode->next = head;

    head = newNode;

}

//有表头

void headInsert(LinkNode* head) {

    LinkNode* newNode = (LinkNode*)malloc(sizeof(LinkNode));

    scanf_s("%d", &(newNode->data));

    newNode->next = head->next;

    head->next = newNode;

}

headInsert.h代码:

#pragma once

struct LinkNode

{

    int data;

    LinkNode* next;

};

void headInsert(LinkNode** head);

void headInsert(LinkNode*& head);

void headInsert(LinkNode* head);

4、编写一个Student类,它只具有namechar*类型)和ageint类型)两个属性,要求:

     1)无参构造创建一个Student类型的名为zhangsan的对象,它的两个数据成员都采用默认初始化。

     2)有参构造创建一个Student类型的st对象,其中st.name == “zhangsan” , st.age =18;

//student.h

#pragma once

#include <IOSTREAM>

#include <STRING>

using namespace std;

class Student

{

private:

    string name;

    int age;

public:

    Student()

    {

        name = "";

        age = 0;

    }

    Student(string n, int a)

    {

        name = n;

        age = a;

    }

    void PrintInfo()

    {

        cout << name << " " << age << endl;

    }

};

//main.c

#include<stdio.h>

#include <iostream>

#include"func.h"

#include"headInsert.h"

#include"student.h"

int main()

{

    //int m = 10;

    //func(m);

    //printf("%d\n", m);

    //LinkNode* head = NULL;

    //headInsert(&head);

    Student st("zhangsan",  18);

    st.PrintInfo();

    system("pause");

    return 0;

}

;