c++结构体数组如何把数据录入结构体数组
时间: 2024-06-23 21:00:54 浏览: 127
在C++中,结构体数组是一种数据容器,用于存储多个相同类型的结构体实例。要将数据录入结构体数组,首先需要定义结构体(struct)、创建结构体数组的实例,然后逐个字段赋值。以下是一个简单的例子:
```cpp
// 定义结构体
struct Person {
std::string name;
int age;
};
// 创建结构体数组
const int arraySize = 5;
Person people[arraySize];
// 录入数据到结构体数组
for (int i = 0; i < arraySize; i++) {
// 通过索引访问结构体成员并赋值
people[i].name = "Person " + std::to_string(i+1);
people[i].age = i + 20; // 假设年龄为20岁开始递增
}
// 示例中录入的数据:
// people: name="Person 1", age=20
// people: name="Person 2", age=21
// ...
// people: name="Person 5", age=25
相关问题
学生成绩管理系统结构体数组
### C/C++ 学生成绩管理系统使用结构体数组实现
#### 示例代码及解析
为了展示如何利用结构体数组来构建一个简单的学生成绩管理系统,在此提供一段完整的C语言程序作为例子。这段代码展示了基本的功能,比如录入、显示以及查询学生的成绩信息。
```c
#include <stdio.h>
#include <string.h>
#define MAX_STUDENTS 100 // 定义最大允许的学生数量
// 定义学生信息的数据结构
struct Student {
char id[20]; // 存储学号
char name[50]; // 存储名字
float score; // 成绩字段
};
int main() {
struct Student students[MAX_STUDENTS];
int count = 0;
printf("欢迎来到简易版的成绩管理系统\n");
while (1) {
printf("\n请选择操作:\n");
printf("1. 添加新记录\n");
printf("2. 显示所有记录\n");
printf("3. 查询特定学生\n");
printf("4. 退出系统\n");
int choice;
scanf("%d", &choice);
switch(choice){
case 1: // 添加新的学生条目
if(count >= MAX_STUDENTS){
printf("已达到最大容量!\n");
break;
}
printf("请输入第%d位同学的信息:", count + 1);
getchar(); // 清除缓冲区
printf("输入学号:");
fgets(students[count].id, sizeof(students[count].id), stdin);
strtok(students[count].id, "\n"); // 移除换行符
printf("输入姓名:");
fgets(students[count].name, sizeof(students[count].name), stdin);
strtok(students[count].name, "\n"); // 移除换行符
printf("输入分数:");
scanf("%f", &(students[count].score));
++count;
printf("成功添加一条记录。\n");
break;
case 2:// 打印当前所有的学生列表
for(int i=0;i<count;++i){
printf("ID:%s 名字:%s 分数:%.2f\n",
students[i].id,
students[i].name,
students[i].score);
}
break;
case 3:// 查找并打印指定学生的详情
char targetId[20];
printf("请输入要查找的学号:");
getchar();
fgets(targetId,sizeof(targetId),stdin);
strtok(targetId,"\n");
bool found=false;
for(int j=0;j<count && !found;++j){
if(strcmp(students[j].id,targetId)==0){
printf("找到该名学生,ID:%s 名字:%s 分数:%.2f\n",
students[j].id,
students[j].name,
students[j].score);
found=true;
}
}
if(!found){
printf("未发现匹配项...\n");
}
break;
case 4:
return 0;
default:
printf("无效选项,请重新尝试。\n");
}
}
}
```
上述代码实现了四个主要功能:增加新纪录、查看现有记录、按学号搜索特定学生以及安全退出应用程序[^1]。通过这种方式,不仅能够有效地管理和处理多个学生对象的相关属性,而且还能保持良好的可读性和扩展性。
定义一个包含5个教师成员的结构体数组,教师信息包括职工号、姓名和工资。要求从键盘输入所有教师的信息,并设计一个sort函数实现结构体数组按教师工资由少到多排序。目前,已编辑完成main函数,请编程实现input函数、output函数和sort函数,分别实现教师信息的录入、输出与排序。
以下是代码实现:
```c++
#include<iostream>
#include<string>
using namespace std;
struct Teacher {
string id; //职工号
string name; //姓名
int salary; //工资
};
void input(Teacher *t, int n) {
for (int i = 0; i < n; i++) {
cout << "请输入第" << i+1 << "位教师的职工号、姓名和工资:";
cin >> t[i].id >> t[i].name >> t[i].salary;
}
}
void output(Teacher *t, int n) {
for (int i = 0; i < n; i++) {
cout << "第" << i+1 << "位教师的信息为:" << endl;
cout << "职工号:" << t[i].id << endl;
cout << "姓名:" << t[i].name << endl;
cout << "工资:" << t[i].salary << endl;
}
}
void sort(Teacher *t, int n) {
for (int i = 0; i < n-1; i++) {
for (int j = 0; j < n-i-1; j++) {
if (t[j].salary > t[j+1].salary) {
swap(t[j], t[j+1]);
}
}
}
}
int main() {
const int N = 5;
Teacher teachers[N];
input(teachers, N);
sort(teachers, N);
output(teachers, N);
return 0;
}
```
输入5个教师的信息后,可以通过sort函数实现按工资从少到多排序,并通过output函数输出排序后的教师信息。
阅读全文