有5个学生,每个学生有语文、英语、数学三门课程的成绩,从主函数中输入5个学生的成绩,要求调用函数,用指针作参数,输出每个学生的平均成绩。
时间: 2024-02-21 22:00:25 浏览: 117
好的,这是一个简单的 C++ 代码实现:
```c++
#include <iostream>
using namespace std;
void average(float *score) {
float sum = 0;
for (int i = 0; i < 3; i++) {
sum += *(score + i);
}
cout << "平均成绩为:" << sum / 3 << endl;
}
int main() {
float scores[5][3];
for (int i = 0; i < 5; i++) {
cout << "请输入第" << i + 1 << "个学生的成绩:" << endl;
for (int j = 0; j < 3; j++) {
cin >> scores[i][j];
}
average(scores[i]);
}
return 0;
}
```
这个程序中,我们定义了一个 `average` 函数,它接受一个 `float` 类型的指针作为参数。在函数中,我们使用指针来访问数组中的元素,并计算平均成绩。
在 `main` 函数中,我们首先定义了一个二维数组 `scores`,用来存储每个学生的成绩。然后,我们使用两个循环来输入每个学生的成绩,并调用 `average` 函数来计算平均成绩并输出。
相关问题
2、java定义一个Student类,数据成员包括姓名、学号、性别及语文、数学、英语三门课程成绩,请为该类定义恰当的构造函数及成员方法。在主函数中,定义长度为5的Student对象数组,计算并显示这5个对象每门课程的平均分,以及每门科目的平均分。
在Java中,我们可以定义一个名为`Student`的类来表示学生信息,包含姓名、学号、性别以及三门课程的成绩。首先,我们创建一个构造函数用于初始化学生的属性,然后定义一些辅助方法来获取和计算成绩。
```java
public class Student {
// 数据成员
private String name;
private int studentId;
private char gender;
private double[] grades; // 语文、数学、英语成绩
// 构造函数
public Student(String name, int studentId, char gender, double chineseScore, double mathScore, double englishScore) {
this.name = name;
this.studentId = studentId;
this.gender = gender;
this.grades = new double[3];
grades[0] = chineseScore; // 语文成绩
grades[1] = mathScore; // 数学成绩
grades[2] = englishScore; // 英语成绩
}
// 成员方法
// 获取成绩
public double getGrade(int subjectIndex) {
if (subjectIndex >= 0 && subjectIndex < grades.length) {
return grades[subjectIndex];
}
throw new IllegalArgumentException("Invalid subject index");
}
// 计算所有科目总分
public double calculateTotalScore() {
double total = 0;
for (double score : grades) {
total += score;
}
return total;
}
// 计算单科平均分
public double calculateAverageScore(int subjectIndex) {
if (subjectIndex >= 0 && subjectIndex < grades.length) {
return getGrade(subjectIndex) / grades.length;
}
return -1; // 如果索引错误,返回默认值
}
// 主函数中用于演示如何操作数组
public static void main(String[] args) {
Student[] students = new Student[5]; // 初始化一个长度为5的学生数组
// ...假设已经给每个学生分配了成绩
for (int i = 0; i < students.length; i++) {
System.out.println("学生" + (i+1) + "各科成绩:");
for (int j = 0; j < grades.length; j++) {
double average = students[i].calculateAverageScore(j);
System.out.printf("科目%d: %.2f\n", j+1, average);
}
double totalScore = students[i].calculateTotalScore();
System.out.printf("学生%s 总分: %.2f\n", students[i].name, totalScore);
}
}
}
```
在这个例子中,我们在`main`函数中创建了一个长度为5的`Student`数组,并分别计算了每个学生每门课程的平均分和总分。注意实际应用中需要对每个学生分配具体的课程成绩。
>类的创建和成员函数的调用; >验证类的成员函数操作数据成员 实验(1):定义一个学生类 CStudent ,具有五个数据成员:学号、姓名、语文、数学、英语三门课成绩。成员函数:初始化学生属性的函数 Init (),设置成绩的函数 SetScore (),输出成员值的函数 Print (),求每个学生的平均成绩 CalAvg ()和总分 CalSum ()。在主函数中定义两个学生对象,调用设置其属性和成绩,然后输出其分和平均成绩等详细信息。 实验(2):设计一个矩形类 CRectangle (由两个文件. h 和. cpp 组成),数据成员: m _ nLength (私有)、 m _ nWidth (私有)和 m _ strColor (公有)。成员函数: SetLengthWidth 、 GetLength 、 GetWidth 、 GetArea 、 ShowInfo 。并设计一个主函数来测试编写的类:创建对象→利用函数设置长宽,直接设置颜色→输出信息和面积→长宽扩大2倍→输出信息。
实验(1):
C++代码如下:
```cpp
#include <iostream>
#include <string>
using namespace std;
class CStudent {
public:
void Init(string id, string name) {
m_strID = id;
m_strName = name;
m_nChinese = 0;
m_nMath = 0;
m_nEnglish = 0;
}
void SetScore(int chinese, int math, int english) {
m_nChinese = chinese;
m_nMath = math;
m_nEnglish = english;
}
void Print() {
cout << "ID: " << m_strID << endl;
cout << "Name: " << m_strName << endl;
cout << "Chinese: " << m_nChinese << endl;
cout << "Math: " << m_nMath << endl;
cout << "English: " << m_nEnglish << endl;
cout << "Total score: " << CalSum() << endl;
cout << "Average score: " << CalAvg() << endl;
}
private:
string m_strID;
string m_strName;
int m_nChinese;
int m_nMath;
int m_nEnglish;
int CalSum() {
return m_nChinese + m_nMath + m_nEnglish;
}
double CalAvg() {
return (m_nChinese + m_nMath + m_nEnglish) / 3.0;
}
};
int main() {
CStudent stu1, stu2;
stu1.Init("001", "Alice");
stu2.Init("002", "Bob");
stu1.SetScore(90, 85, 95);
stu2.SetScore(80, 90, 85);
cout << "Student1's info:" << endl;
stu1.Print();
cout << "Student2's info:" << endl;
stu2.Print();
return 0;
}
```
输出结果如下:
```
Student1's info:
ID: 001
Name: Alice
Chinese: 90
Math: 85
English: 95
Total score: 270
Average score: 90
Student2's info:
ID: 002
Name: Bob
Chinese: 80
Math: 90
English: 85
Total score: 255
Average score: 85
```
实验(2):
CRectangle.h 文件代码如下:
```cpp
#pragma once
#include <string>
using namespace std;
class CRectangle {
public:
void SetLengthWidth(double len, double wid);
double GetLength() const;
double GetWidth() const;
double GetArea() const;
void ShowInfo() const;
void SetColor(string color);
private:
double m_nLength;
double m_nWidth;
string m_strColor;
};
```
CRectangle.cpp 文件代码如下:
```cpp
#include <iostream>
#include "CRectangle.h"
using namespace std;
void CRectangle::SetLengthWidth(double len, double wid) {
m_nLength = len;
m_nWidth = wid;
}
double CRectangle::GetLength() const {
return m_nLength;
}
double CRectangle::GetWidth() const {
return m_nWidth;
}
double CRectangle::GetArea() const {
return m_nLength * m_nWidth;
}
void CRectangle::ShowInfo() const {
cout << "Length: " << m_nLength << endl;
cout << "Width: " << m_nWidth << endl;
cout << "Color: " << m_strColor << endl;
cout << "Area: " << GetArea() << endl;
}
void CRectangle::SetColor(string color) {
m_strColor = color;
}
```
main.cpp 文件代码如下:
```cpp
#include <iostream>
#include "CRectangle.h"
using namespace std;
int main() {
CRectangle rect;
rect.SetLengthWidth(3, 4);
rect.SetColor("red");
cout << "Original info:" << endl;
rect.ShowInfo();
rect.SetLengthWidth(rect.GetLength() * 2, rect.GetWidth() * 2);
cout << "Doubled info:" << endl;
rect.ShowInfo();
return 0;
}
```
输出结果如下:
```
Original info:
Length: 3
Width: 4
Color: red
Area: 12
Doubled info:
Length: 6
Width: 8
Color: red
Area: 48
```
阅读全文