MOOC清华《面向对象程序设计》第3章编程题第2题:重载下标运算符以统计分段人数
为了统计全年级学生考试成绩的分数段分布情况,即1~10、11~20、21~30、...、91~100等各个分数段的学生人数,拟设计实现一个重载了下标运算符的类,该类对象使用元素为考试成绩的数组和数组元素个数来初始化,当使用0~9的整数下标k来访问该对象时,返回
第k分数段(10*k + 1 <= e <= 10*k + 10)中的元素个数。(本题不计入总成绩) 提交要求:请将各个源文件(*.h, *.cpp)合并打印到一个PDF文件上传,要求各文件首行用注释说明文件名称。建议源代码中加上必要的注释,以便阅读。
//main.cpp
#include <iostream>
#include "Test.h"
using namespace std;
int main() {
int array[50] = {98,99,56,53,78, 89,87,86,43,24,
25,67,77,78,79, 65,53,87,24,95,
79,76,77,79,80, 88,87,86,80,87,
96,96,100,76,76, 90,98,97,99,92,
87,89,91,93,95, 98,86,43,7,32};
Test obj(array, 50);
cout << "obj[9] = " << obj[9] << endl << endl;
return 0;
}
//Test.h
#ifndef Test_h
#define Test_h
class Test{
private:
int N;
int array[1000];
int temp[10];
int count;
public:
Test(int* src, int N);
~Test();
int& operator[] (const int n);
};
#endif
//Test.cpp
#include <iostream>
#include "Test.h"
using namespace std;
Test::Test(int* src, int n) {
N = n;
for(int i = 0; i < N; i++)
array[i] = src[i];
}
Test::~Test(){
cout << "析构函数已调用!" << endl;
}
int& Test::operator[] (const int k){
void QuickSort(int* array, int start, int end);
void OutputOfArray(int* array, int n);
QuickSort(array, 0, N);
OutputOfArray(array, N);
int tmp_1 = 10 * k + 1, tmp_2 = 10 * k + 10;
count = 0;
for(int i = 0; i < N; i++){
if((array[i] <= tmp_2)&&(array[i] >= tmp_1))
count++;
if(array[i] < tmp_1) break;
}
return count;
}
void QuickSort(int* array, int start, int end)
{
if(start >= end - 1)
return;
int left = start, right = end;
int pivot = array[left];
int temp = 0.0;
for(int i = left + 1; i < right; )
{
if(array[i] > array[left])
{
temp = array[left];
array[left] = array[i];
array[i] = temp;
left++;
i++;
}
else
{
temp = array[i];
for(int j = i; j < right; j++)
array[j] = array[j + 1];
array[right - 1] = temp;
right--;
}
}
array[left] = pivot;
QuickSort(array, start, left);
QuickSort(array, left + 1, end);
}
void OutputOfArray(int* array, int n)
{
for(int i = 0; i < n; i++)
cout << array[i] << '\t';
cout << endl;
}
测试结果:
智能推荐
使用Xdebug进行远程调试
为什么要用? 方便联调: 和客户端一起联调,是die(); exit(); 会影响其他人员是使用。 关注数据变化: 正常情况下,我们在调试和开发时,更关注数据的变化。频繁断点、效率比较低。 简单: 之前的开发自己比较懒,一直没用,用起来发现很简单。 原理 运行xdebug需要客户端IDE(phpstorm)、远程服务器配合,首先是客户端配置好端口,发送debug请求,请求会通过浏览器或者IDE的h...
【教程向】通过windows在树莓派3B上安装Ubuntu MATE 16.04.2 (Xenial)
本文参考了http://www.ituring.com.cn/article/273613 ================================================================= 1:因为树莓派3B的性能问题,所以使用这个特别为树莓派设计的版本。 2:准备: 树莓派3B * 1 16GB TF/Micro SD卡 *1(尽量用速度快一些的卡,因为以后这相...
Caused by: java.rmi.ConnectIOException: error during JRMP connection establishment; nested exception
启动RMI报如下错误: 最后发现是端口冲突造成的,当时用的5003端口启动服务端的RMI刚好和本地的一个服务端口冲突。 输入netstat -aon|findstr "5003"查询它的pid为3056 继续输入tasklist|findstr "3056",查看是哪个进程或者程序占用了5003端口,结果是:magentproc.exe 找到PID后可以直接...
猜你喜欢
【LeetCode(Java) - 322】零钱兑换
文章目录 1、题目描述 2、解题思路 3、解题代码 1、题目描述 2、解题思路 定义 dp[i] 表示对于组成金额 i 的最少硬币个数。 如果方案存在,那么至少有一个硬币至少出现了一次: 如果是第 0 个硬币出现了一次,则:dp[i] = dp[i-coins[0]] + 1 如果是第 1 个硬币出现了...
在Visual Studio 2013中配置Entity Framework使用MySQL
环境 使用的软件及版本 - Microsoft Visual Studio Ultimate 2013 (版本 12.0.40629.00 Update 5) - Microsoft.Net Framework 版本 4.6.01055 - MySQL版本: 5.6.17 步骤 1. 创建空的MVC项目 2. 安装扩展 3. 在数据库中建立对应的表 必须在数据库内先新建表,否则asp.net mv...
Python才是世界上最好的言语,php,java靠边站
伟大的入门编程语言有什么特征呢?或者换一种方式问,“当我们教他们编程时,应该给予他们什么?”对于成年人和青少年学生,我认为以下五点非常重要。 学生从入门语言获得的五样东西 非常棒的首次体验,就像一本书的第一页,首先需要“入迷”,学习新知识不可避免的会遇到挫折,但要有持续的热情和好奇心,这对于那些从未接触过编码的年轻人来说是至关重要的; Web编程的能...
动态调整docker容器cpu资源
目的:动态调整系统cpu核数后,如何在不停止容器服务的情况下,docker动态使用最新的CPU资源 事件由来: 1、在ucloud上购买了一台可以热升级的机器,热升级指的是动态更改系统cpu和内存资源 2、随着业务的扩展,发现cpu、内存负载过高,需要在不停止业务的情况下动态扩容,因此使用了ucloud提供的热升级服务,从4核12G扩容为8核...
用python itchat包 爬取微信好友头像形成矩形头像集
原创作品,转载请注明作者 abysscarry-袁杰丶 初学python,我们必须干点有意思的事!从微信下手吧! 头像集样例如下: 大家可以发朋友圈开启辨认大赛哈哈~ 话不多说,直接上代码,注释我写了比较多,大家应该能看懂 运行结果: ok!!!...