C++ 第二次上机作业

记录作业。

题一

1、建立一个对象数组,内放 5 个学生的数据(学号、成绩),设立一个函数 max,用指向对象的指针作为函数参数,在 max 函数中找出5 个学生中成绩最高者,并输出其学号。(50 分)

类声明头文件
#include <iostream>
#include<string>
#include<vector>
using namespace std;

class StudentClass{
public:
	StudentClass(string idCard = "", int score = 0) :mIdCard(idCard), mScore(score) {}
	void setStudentData(string idCard, int score);
	int getStudentScore();
	string getStudentIdCard();
private:
	string mIdCard;
	int mScore;
};

类成员函数定义

#include "StudentClass.h"

void StudentClass::setStudentData(string idCard, int score) {
	this->mIdCard = idCard;
	this->mScore = score;
}

string StudentClass::getStudentIdCard() {
	return mIdCard;
}

int StudentClass::getStudentScore() {
	return mScore;
}

主程序

vector<StudentClass> findMaxScore(StudentClass *arr,int length) {
    vector<StudentClass> stu;
    string idCard = "";
    int maxScore = arr->getStudentScore();
    
    for (int i = 0; i < length; i++){
        if (arr[i].getStudentScore() > maxScore){
            maxScore = arr[i].getStudentScore();
            idCard = arr[i].getStudentIdCard();
        }
    }

    stu.push_back(StudentClass(idCard, maxScore));
    for (int i = 0; i < length; i++){
        if (arr[i].getStudentScore() == maxScore && arr[i].getStudentIdCard() != idCard) {
            stu.push_back(StudentClass(arr[i].getStudentIdCard(), arr[i].getStudentScore()));
        }
    }
    
    return stu;
}

int main(){
    vector<StudentClass> stu = {
        StudentClass("202112702001",85),StudentClass("202112702002",88),
        StudentClass("202112702003",99),StudentClass("202112702004",99),
        StudentClass("202112702005",99)
    };

    vector<StudentClass> maxStu = findMaxScore(&stu[0],stu.size());

    cout << "最高分数为:" << maxStu[0].getStudentScore() << endl;
    for (int i = 0; i < maxStu.size(); i++) {
        cout << "对应学号为:" << maxStu[i].getStudentIdCard() << endl;
    }

    return 0;
}

运行结果

最高分数为:99
对应学号为:202112702003
对应学号为:202112702004
对应学号为:202112702005    

题二

2、商店销售某一商品,允许销售人员在销售时灵活掌握售价,现已知 3 名销售员的销售情况如下:

销售员号(number)销售件数(count)销售单价(price)
101523.5
1021224.5
1031021.5

请编写程序,计算当日此商品的总销售额和每件商品的平均售价。要求使用静态数据成员和静态成员函数。(提示:请同学们认真思考应该建立什么样的类,在类中定义什么样的静态数据成员和成员函数;
在类外,如何使用静态数据成员和静态成员函数)(50 分)

类声明头文件
#include<iostream>
#include<vector>
using namespace std;

class StoreClass{
public:
	StoreClass(int number = 0,int count = 0,float price = 0):mNumber(number), mCount(count), mPrice(price){}
	void compute();
	static void showData();

private:
	int mNumber;
	int mCount;
	float mPrice;
	static int numCount;
	static float totalSales;
	static float avgPrice;
};
类成员函数定义
#include "StoreClass.h"

int StoreClass::numCount = 0;
float StoreClass::totalSales = 0;
float StoreClass::avgPrice = 0;

void StoreClass::compute() {
	totalSales += mCount * mPrice;
	avgPrice += mPrice;
	numCount++;
}

void StoreClass::showData() {
	cout << "总销售额:" << totalSales << endl
		 << "平均售价:" << avgPrice/numCount << endl;
}
主程序
#include "StoreClass.h"

int main() {
    vector<StoreClass> sale = {
        StoreClass(101,5,23.5),
        StoreClass(102,12,24.5),
        StoreClass(103,10,21.5)
    };

    for (int i = 0; i < sale.size(); i++){
        sale[i].compute();
    }

    StoreClass::showData();
    return 0;
}

运行结果

总销售额:626.5
平均售价:23.1667
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值