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;

}

  • 37
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TvT<

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值