调用函数,只返回0

时间:2015-09-06 17:35:06

标签: c++ function

好吧,我现在要做的目标是调用函数getSingleStudentInfo,其中包含学生的姓,姓和年龄。最后,这个程序旨在做两件事,第一件是单个学生信息,第二件是打印出20名学生的数组。忽略第二部分,因为我还没有真正进入那部分,所以忽略任何涉及向量的部分。

我遇到的问题是,主要是程序要做的第一件事就是要求你按1表示单个信息,或者按2表示完整的20个人信息。程序编译很好,但是发生了什么,无论你输入什么号码,程序都会说“进程返回0(0x0)”并完成,我很难搞清楚它为什么这样做而不是打印单个学生信息,“学生的身份证号码是400”“学生的姓氏是:席梦思”“学生的年龄是:20”

#include <iostream>
#include <vector>
#include <string>
using namespace std;

struct Student {
    int studentNumber = 400;
    string lastName = "Simmons";
    int age = 20;
};

Student s;
int selection;
vector<int> studentNumber (20);
vector<string> lastName;
vector<int> age (20);

void getSingleStudentInfo (int studentNumber, string lastName, int age) {
    cout << "Student's ID number is: ";
    cout << s.studentNumber << endl;
    cout << "Student's last name is: ";
    cout << s.lastName << endl;
    cout << "Student's age is: ";
    cout << s.age << endl;
return;
};

int main()
{
    cout << "Press '1' to see a single student data entry" << endl;
    cout << "Press '2' to see all 20 student records" << endl;
    cin >> selection;
    if (selection == 1) {
    getSingleStudentInfo;
    };
    /*for (vector<int>::size_type i = 0; i <= 20; i++)
    {
        cout << "Student's ID number is: " << 400 + i << endl;
    }
    return 0;*/
}

1 个答案:

答案 0 :(得分:2)

你需要调用这个函数,例如

if (selection == 1)
{
    getSingleStudentInfo(7, "Johnson", 20);
}

然而,似乎通过实施,这应该是学生自己的方法

struct Student {
    int studentNumber = 400;
    string lastName = "Simmons";
    int age = 20;
    void getSingleStudentInfo() const;
};

然后你将其从Student实例

中取消
Student s{400, "Simmons", 20};
s.getSingleStudentInfo();

然后,如果你有Student的向量,你可以做

std::vector<Student> students; // assume this has been populated
std::for_each(begin(students),
              end(students),
              [](const Student& s){s.getSingleStudentInfo();});

要在列中打印,您可以将功能更改为

void Student::getSingleStudentInfo()
{
    cout << s.studentNumber << '\t'
         << s.lastName << '\t'
         << s.age << endl;
};