好吧,我现在要做的目标是调用函数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;*/
}
答案 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;
};