有一个结构体变量stu,内含学生学号、姓名和3门课的成绩。要求在main函数中为 各成员赋值,在另一用指向结构体变量的指针作参数的函数中将它们的值输出。用c++
时间: 2024-03-19 13:45:56 浏览: 102
可以按照以下方式定义结构体,并编写输出函数:
```c++
#include <iostream>
#include <string>
using namespace std;
struct Student {
int id;
string name;
int score[3];
};
void printStudent(Student* s) {
cout << "学号:" << s->id << endl;
cout << "姓名:" << s->name << endl;
cout << "成绩:" << s->score[0] << ", " << s->score[1] << ", " << s->score[2] << endl;
}
int main() {
Student stu;
cout << "请输入学号:";
cin >> stu.id;
cout << "请输入姓名:";
cin >> stu.name;
cout << "请输入3门课的成绩:";
for (int i = 0; i < 3; i++) {
cin >> stu.score[i];
}
printStudent(&stu);
return 0;
}
```
示例输出:
```
请输入学号:1001
请输入姓名:张三
请输入3门课的成绩:80 90 85
学号:1001
姓名:张三
成绩:80, 90, 85
```
相关问题
有一个结构体变量stu,内含学生学号、姓名和两门课的成绩要求通过输人函数为结构体变量赋值,并输出该学生的学号和平均成绩。
可以按照以下步骤完成:
1. 定义结构体类型,包含学号、姓名和两门课的成绩。
2. 声明一个结构体变量stu,用于存储学生信息。
3. 通过输入函数,为结构体变量stu的各个成员赋值。
4. 计算该学生的平均成绩,并输出学号和平均成绩。
代码示例:
```
#include <stdio.h>
// 定义结构体类型
struct student {
int id; // 学号
char name[20]; // 姓名
float score1; // 第一门课成绩
float score2; // 第二门课成绩
};
int main() {
// 声明结构体变量stu
struct student stu;
// 输入学生信息
printf("请输入学生学号:");
scanf("%d", &stu.id);
printf("请输入学生姓名:");
scanf("%s", stu.name);
printf("请输入第一门课成绩:");
scanf("%f", &stu.score1);
printf("请输入第二门课成绩:");
scanf("%f", &stu.score2);
// 计算平均成绩
float avg_score = (stu.score1 + stu.score2) / 2;
// 输出学生学号和平均成绩
printf("学生学号:%d\n", stu.id);
printf("平均成绩:%.2f\n", avg_score);
return 0;
}
```
运用c++求代码,有5个结构体变量,内含学生学号、姓名和3门课程的成绩。要求输出平均成绩最高的学生的信息(包括学号、姓名、3门课程成绩和平均成绩)。要求用结构体变量和结构体变量的指针作函数参数。
好的,下面是一个实现上述功能的C++程序:
```c++
#include <iostream>
#include <string>
using namespace std;
const int NUM = 5; // 学生数
struct Student {
int id;
string name;
float score[3]; // 3门课程的成绩
float avg; // 平均成绩
};
// 计算学生的平均成绩
void calcAvg(Student* stu) {
float sum = 0;
for (int i = 0; i < 3; i++) {
sum += stu->score[i];
}
stu->avg = sum / 3;
}
// 查找平均成绩最高的学生
Student* findMaxAvg(Student stu[]) {
Student* maxStu = &stu[0];
for (int i = 1; i < NUM; i++) {
calcAvg(&stu[i]); // 先计算平均成绩
if (stu[i].avg > maxStu->avg) {
maxStu = &stu[i];
}
}
return maxStu;
}
int main() {
Student stu[NUM]; // 学生数组
for (int i = 0; i < NUM; i++) {
cout << "请输入第" << i + 1 << "个学生的信息:\n";
cout << "学号:";
cin >> stu[i].id;
cout << "姓名:";
cin >> stu[i].name;
for (int j = 0; j < 3; j++) {
cout << "第" << j + 1 << "门课程成绩:";
cin >> stu[i].score[j];
}
}
Student* maxStu = findMaxAvg(stu); // 查找平均成绩最高的学生
cout << "平均成绩最高的学生信息如下:" << endl;
cout << "学号:" << maxStu->id << endl;
cout << "姓名:" << maxStu->name << endl;
cout << "成绩:";
for (int i = 0; i < 3; i++) {
cout << maxStu->score[i] << " ";
}
cout << endl;
cout << "平均成绩:" << maxStu->avg << endl;
return 0;
}
```
上述程序中,我们定义了一个 `Student` 结构体,包含学生的学号、姓名、3门课程的成绩以及平均成绩。我们首先通过输入,得到了5个学生的信息,保存在结构体数组 `stu` 中。然后通过调用 `findMaxAvg` 函数查找平均成绩最高的学生,并将其指针返回。在 `findMaxAvg` 函数中,我们使用了 `calcAvg` 函数计算了每个学生的平均成绩,然后按照平均成绩从高到低的顺序查找最高成绩的学生。最后,输出平均成绩最高的学生的信息。
希望这个程序可以帮助您实现您的需求。
阅读全文