首页 > 解决方案 > 如何在 C++ 中打印动态数组我需要解释这个问题

问题描述

这是老师给我的问题

尽管我不明白,但我试图解决它,这就是我所拥有的,请帮助:

struct Employee
{
    int ID;
    char name[10];
    char degree;
    int age;

};

int fillin()
{   Employee employee;
    cout<<"Enter employee ID, NAME, DEGREE and AGE:\n";
    cin>>employee.ID;
    cin>>employee.name;
    cin>>employee.degree;
    cin>>employee.age;

}

int print()
{
    Employee employee;
    cout<<"ID: "<< employee.ID<<" , ";
    cout<<"NAME: "<< employee.name<<" , ";
    cout<<"Degree: "<< employee.degree<<" , ";
    cout<<"AGE: "<< employee.age<<".\n ";
}

int main()
{
    int num;
    cout<<"Enter number of employees: ";
    cin>> num;

   string *name= new string[num];

    for(int i = 0; i < num;i++)
    {
      name[i]=fillin();
    }


    for(int j : name){
        print();
    }
    return 0;
}

标签: c++arraysdynamic-arrays

解决方案


代码有几个问题,下面是工作示例。

  • 函数应该以某种方式接收和返回参数,代码中使用了引用
  • 数组应该是适当的类型
  • 使用了错误的迭代器

但是,请记住,代码还有更多问题,比如没有边界检查,最好使用 STL 库……把这当作一个起点。

#include <iostream>

using namespace std;

struct Employee
{
    int ID;
    char name[10];
    char degree;
    int age;

};

int fillin(Employee& employee)
{   
    cout<<"Enter employee ID, NAME, DEGREE and AGE:\n";
    cin>>employee.ID;
    cin>>employee.name;
    cin>>employee.degree;
    cin>>employee.age;
}

int print(const Employee& employee)
{
    cout<<"ID: "<< employee.ID<<" , ";
    cout<<"NAME: "<< employee.name<<" , ";
    cout<<"Degree: "<< employee.degree<<" , ";
    cout<<"AGE: "<< employee.age<<".\n ";
}

int main()
{
    int num;
    cout<<"Enter number of employees: ";
    cin>> num;

    Employee *emp= new Employee[num];

    for(int i = 0; i < num;i++)
    {
      fillin(emp[i]);
    }


    for(int j = 0; j< num; j++){
        print(emp[j]);
    }
    return 0;
}

推荐阅读