1. 编写一个 C++ 程序,将正实数读入一个向量(以随机顺序)。 用一个
    尾随值 -1。 将数字按升序排序并显示排序后的数字。
    您的程序必须包括以下两个功能:
void sort(vector<float> & v);
void display(vector<float> & v);
Solution to Q1:
#include <iostream>
#include <vector>
using namespace std;
vector<float> numbers;
void sort(vector<float> & v);
void display(vector<float> & v);
int main() {float temp;temp = 99.9; // just to start the loopwhile (temp > 0.0) {cout << "Enter a positive real number (-1 to stop) ";cin >> temp;if (temp > 0.0) {numbers.push_back(temp);}}sort(numbers);display(numbers);
}
void sort(vector<float> & v) {int total, pass, i;float temp;total = v.size();for (pass = 0; pass < total; pass++) {for (i = 0; i < total - 1; i++) {if (v[i] > v[i+1]) {temp = v[i];v[i] = v[i+1];v[i+1] = temp;}}}
}
void display(vector<float> & v) {int total, i;total = numbers.size();for (i = 0; i < total; i++) {cout << numbers[i] << ", ";}cout << endl;
}
  1. 在上面的排序程序中,将排序函数的第一行更改为:
    void sort(vector v);
    (请注意,您还必须更改函数定义中的第一行。)
    不要更改任何其他代码。 运行程序。 解释会发生什么。
    Solution to Q2:

向量未排序 – 这由显示屏显示。 发生这种情况是因为排序需要在向量中移动数据,即需要更改向量。 如果要更改参数,则必须使用 call-by-reference 将参数传递给函数。 通过删除 & 符号,我们停止了按引用调用的参数。 额外注意:参数不需要显示为按引用调用。 然而,许多 程序员通常对大型数据结构使用按引用调用,因为这意味着只有一个指针传递给函数。 如果删除 &(将其转换为按值调用),那么整个数据结构将被复制到函数中,这会浪费时间。

  1. 讨论你需要做什么来改变上面的排序程序,以便它使用数组
    而不是向量。 这两个程序之间最大的区别是什么? 这是为了
    仅讨论 - 无需实际使用数组编写程序。
    Solution to Q3:

使用数组与使用向量非常相似。 您需要定义数组: float[500]; 唯一的最大区别是您需要猜测数组的最大大小。 在示例中 上面,最大大小的猜测是500。这可能不够大......

  1. 下面的程序输入银行帐户的数据,然后搜索以查找特定银行
    帐户。 但是,该程序无法运行,因为其中有 6 个错误。 识别
    错误并说明需要做什么来纠正每个错误。
#include <iostream>
#include <cstdio> // for getchar
#include <vector>
using namespace std;
class bank_account {private:int accnumber;string name;float balance;
public:void loaddata();void display();
};
void enteraccounts();
int main() {int search, total, num, i;enteraccounts();cout << "Which account do you want to display? ";cin >> search;total = accounts.size();for (i = 0; i < total; i++) {num = accounts[i].getnum();if (num != search) {accounts[i].display();}}
}
void enteraccounts() {// enter 3 accounts - this could be changedint i;bank_account temp;for (i = 0; i < 3; i++) {temp.loaddata();}
}
//--------------- methods for the bank_account ------------
void loaddata() {cout << "Enter the bank account number ";cin >> accnumber;cout << "Enter the name of the account ";getline(cin, name);cout << "Enter the balance, e.g. 32.45 ";cin >> balance;
}
void bank_account::display() {cout << "Data for Account " << accnumber << endl;cout << "Name: " << name << endl;cout << "Balance: $" << balance << endl << endl;
}

Solution to Q4:

1) method missing from the class, we need:
int getnum() { return accnumber; }
2) vector has not been defined, we need:
vector<bank_account> accounts;
3) incorrect test inside the if statement, it should be:
if (num == search) {4) inside “enteraccounts”, data is not actually placed in the vector. Insert new line:
temp.loaddata();
accounts.push_back(temp);
5) method must have the class name before the function name, as follows:
void bank_account::loaddata() {6) in method “loaddata”, entering a number (accnumber) before a string (name) will cause no data to be
entered for the string. Need to flush the input buffer with an extra line as follows:
cin >> accnumber;
getchar();

5.假设下面的程序有一个函数可以显示堆栈中的所有项(类似于
注释中的“显示和清空”函数)。 写下将显示的值和在
什么顺序。
stack s;
int main() {
s.push(27);
s.push(83);
s.pop();
s.push(56);
– call function here to display all items
}
Solution to Q5:

它将显示 56,然后是 27。56 是放置在堆栈中的最后一个项目,因此它是显示的第一个项目。 83 被放置在堆栈上,但随后被使用 pop 删除

C++ vector和stack入门习题(采用排序)相关推荐

  1. 【重难点】【Java集合 03】ArrayList、LinkedList、 Vector 和 Stack 的区别、CopyOnWriteArrayList

    [重难点][Java集合 03]ArrayList.LinkedList 和 Vector 的区别.util 包下的 List.CopyOnWriteArrayList 文章目录 [重难点][Java ...

  2. 1190-1199: 习题6-2 排序

    1190: 习题6-2 排序 题目描述 从键盘上输入10个整数,按照从小到大的顺序对这10个数排序. 采用选择法进行排序. 输入 输入以空格分隔的10个整数 输出 按从小到大排好序的10个数,每个数一 ...

  3. python天天向上3.2-Python入门习题3.天天向上

    例3.1 一年365天,以第一天的能力值为基数,记为1.0,当好好学习时能力值相比前一天提高1%,当没有学习时能力值相比前一天下降1%.每天努力(dayup)和每天放任(daydown),一年下来的能 ...

  4. c语言中描述y是奇数,4章选择结构程序设计C语言入门习题

    C语言入门习题 第四章 选择结构程序设计 一.选择题 1.有以下程序 main() { int i=1,j=2,k=3; if(i++==1&&(++j==3||k++==3)) pr ...

  5. Java入门算法(排序篇)丨蓄力计划

    本专栏已参加蓄力计划,感谢读者支持 往期文章 一. Java入门算法(贪心篇)丨蓄力计划 二. Java入门算法(暴力篇)丨蓄力计划 三. Java入门算法(排序篇)丨蓄力计划 四. Java入门算法 ...

  6. java stack 类 效率_Java中ArrayList、LinkedList、Vector、Stack的比较

    一.介绍 先回顾一下List的框架图 由图中的继承关系,可以知道,ArrayList.LinkedList.Vector.Stack都是List的四个实现类. AbstractList是一个抽象类,它 ...

  7. set、vector与list的构造与排序的耗时测试

    测试目标 测试在成员个数不断递增的情况下,set.vector与list的构造与排序的耗时变化,找出set耗时连续超过其他容器耗时的成员个数 测试方式 set使用直接插入 vector使用assign ...

  8. Python入门习题大全——数字 8

    Python入门习题大全--索引 编写4个表达式,它们分别使用加法.减法.乘法和除法运算,但结果都是数字8.为使用print语句来显示结果,务必将这些表达式用括号括起来,也就是说,你应该编写4行类似于 ...

  9. Python入门习题大全——词汇表2

    Python入门习题大全--索引 既然你知道了如何遍历字典,现在请整理你为完成上一个例题而编写的代码,将其中的一系列 print 语句替换为一个遍历字典中的键和值的循环.确定该循环正确无误后,再在词汇 ...

  10. Python入门习题大全——词汇表

    Python入门习题大全--索引 Python 字典可用于模拟现实生活中的字典,但为避免混淆,我们将后者称为词汇表. 想出你在前面学过的5个编程词汇,将它们用作词汇表中的键,并将它们的含义作为值存储在 ...

最新文章

  1. Xamarin只言片语系列
  2. Eclipse主题更换方法
  3. hibernate查询缓存_Hibernate查询缓存如何工作
  4. 一套 SQL 搞定数据仓库?Flink有了新尝试
  5. python工作岗位要求_Python就业:Python就业岗位职能要求解析
  6. 四川第七届 C Censor (字符串哈希)
  7. Rectangle 属性
  8. Power Spectral Density
  9. VB语言通用基础语句
  10. Linux下nand flash读写测试
  11. ROS串口通信协议解析
  12. java基础中的基础,简单中的简单
  13. 关于音频采样率,音频帧率,每次采集多少字节的理解
  14. 单片机开发产品流程,照这个来没错!
  15. html加载页面转圈圈怎么打,js实现等待加载“转圈圈”效果
  16. 【高效复习】计算机网络重要概念总结
  17. JavaScript的深浅拷贝
  18. 国企计算机技术岗都干什么,大家听说的国企技术岗都是什么样子的?
  19. 将web网站转为App
  20. tcpdump 侦测网络端口数据

热门文章

  1. 基于DEAP库的python进化算法-2.进化算法各元素的DEAP实现
  2. 统计学习方法读书笔记3-感知机SVM
  3. 先有产品管理,后有产品经理
  4. 直播实录丨十年主导15个产品从0到1,她的经验与思考现场拆解
  5. 微软官方的《Power BI权威指南》译版发售
  6. 人工神经网络之Python 实战
  7. pandas小记:pandas数据输入输出
  8. How AI Is Transforming Medical Imaging
  9. python入门必备10个坑_python中的基础坑
  10. DevEco Studio 切换黑色界面(两步搞定)