![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++练习
civil_dog985
这个作者很懒,什么都没留下…
展开
-
顺序栈的实现
出现delete释放边界 超出 new创建的内存边界的情况!报错!删去delete后不报错!但未释放内存!暂未得到解决!!!!!!CRT detected that the application wrote to memory after end of heap buffer_wu_lai_314的专栏-CSDN博客看该文章!!!!#pragma onceconst int MAX_SIZE = 100;class stack{private: char* data;//属性.原创 2021-08-20 23:14:29 · 105 阅读 · 0 评论 -
线性表 题1:
原创 2021-08-10 22:22:59 · 85 阅读 · 0 评论 -
C++primer plus 第十章编程练习6:
6. 下面是一个类声明:(……代码省略……)请提供成员函数的定义和测试这个类的程序。// stack.h -- struct and class definition#ifndef STACK_H_#define STACK_H_class Move{private: double x; double y;public: Move(double a = 0,double b = 0); ~Move(); void showmove()co原创 2021-08-08 16:26:31 · 439 阅读 · 0 评论 -
C++primer plus 第十章:编程练习5:
5. 考虑下面的结构声明:struct customer { char fullname[35]; double payment;};编写一个程序,它从栈中添加和删除customer结构(栈用Stack类声明表示)。每次customer结构被删除时,其payment的值都被加入到总数中,并报告总数。注意:应该可以直接使用Stack类而不作修改;只需修改typedef声明,使Item的类型为customer,而不是unsigned long即可。// stac...原创 2021-08-07 18:43:37 · 1201 阅读 · 0 评论 -
C++primer plus 第十章:编程练习2
2. 下面是一个非常简单的类定义:(……代码省略……)它使用了一个string对象和一个字符数组,让您能够比较它们的用法。请提供未定义的方法的代码,以完成这个类的实现。再编写一个使用这个类的程序,它使用了三种可能的构造函数调用(没有参数、一个参数和两个参数)以及两种显示方法。下面是一个使用这些构造函数和方法的例子:Person one; // use default constructorPerson two("Smyt...原创 2021-08-07 17:08:36 · 1245 阅读 · 0 评论 -
C++primer plus 第十章:编程练习1
1.为复习题5描述的类提供方法定义,并编写一个小程序来演示所有特性。头文件(类声明):#pragma once#ifndef BNAK_H_#define BANK_H_#include<string>class Acount {private: std::string name; std::string acc; double deposit;public: Acount(); Acount(const std::string& na, const .原创 2021-08-07 14:18:23 · 397 阅读 · 0 评论 -
C++primer plus 第八章:编程练习7
7. 修改程序清单8.14,使其使用两个名为SumArray()的模板函数来返回数组元素的总和,而不是显示数组的内容。程序应显示thing的总和以及所有debt的总和。// tempover.cpp --- template overloading#include <iostream>template <typename T>T SumArray(T arr[], int n);template <typename T>T SumArray(T* ar.原创 2021-08-05 18:40:52 · 439 阅读 · 0 评论 -
C++primer plus 第八章:编程练习6
6. 编写模板函数maxn(),它将由一个T类型元素组成的数组和一个表示数组元素数目的整数作为参数,并返回数组中的最大的元素。在程序对它进行测试,该程序使用一个包含6个int元素的数组和一个包含4个double元素的数组来调用该函数。程序还包含一个具体化,它将char指针数组和数组中的指针数量作为参数,并返回最长的字符串的地址。如果有多个这样的字符串,则返回其中第一个字符串的地址。使用由5个字符串指针组成的数组来测试该具体化。#include <iostream>using nam..原创 2021-08-05 18:12:09 · 264 阅读 · 0 评论 -
C++primer plus 第八章:编程练习5
5. 编写模板函数max5(),它将一个包含5个T类型元素的数组作为参数,并返回数组中最大的元素(由于长度固定,因此可以在循环中使用硬编码,而不必通过参数来传递)。在一个程序中使用该函数,将T替换为一个包含5个int值的数组和一个包含5个double值的数组,以测试该函数。#include <iostream>using namespace std;template <typename T>T max5(T tl[5]);int main() { int tl1[5]原创 2021-08-05 15:05:14 · 111 阅读 · 0 评论 -
C++primer plus 第八章:编程练习4
4. 下面是一个程序框架:…………(省略,敲起来实在繁琐,大家看书就好)请提供其中描述的函数和原型,从而完成该程序。注意,应有两个show()函数,每个都使用默认参数。请尽可能使用const参数。set()使用new分配足够的空间来存储指定的字符串。这里使用的技术与设计和实现类时使用的相似。(可能还必须修改头文件的名称,删除using编译指令,这取决于所用的编译器)。#include <iostream>#include <cstring>using name...原创 2021-08-05 14:51:58 · 101 阅读 · 0 评论 -
C++primer plus 第八章:编程练习3
3. 编写一个函数,它接受一个指向string对象的引用作为参数,并将该string对象的内容转换为大写,为此可使用表6.4描述的函数toupper()。然后编写一个程序,它通过使用一个循环让您能够用不同的输入来测试这个函数,该程序的运行情况如下:#include <iostream>#include <cctype>#include <string>using namespace std;string Toupp(string& str);in原创 2021-08-05 14:06:33 · 251 阅读 · 0 评论 -
C++primer plus 第八章:编程练习2
2. CandyBar结构包含3个成员,第一个成员存储candy bar的品牌名称;第二个成员存储candy bar的重量(可能有小数);第三个成员存储candy bar的热量(整数)。请编写一个程序,它使用一个这样的函数,即将CandyBar的引用、char指针、double和int作为参数,并用最后3个值设置相应的结构成员。最后3个参数的默认值分别为“Millennium Munch”、2.85和350。另外,该程序还包含一个以CandyBar的引用为参数,并显示结构内容的函数。请尽可能使用const.原创 2021-08-05 13:23:30 · 598 阅读 · 0 评论 -
C++primer plus 第八章:编程练习1
1. 编写通常接受一个参数(字符串的地址),并打印该字符串的函数。然而,如果提供了第二个参数(int类型),且该参数不为0,则该函数打印字符串的次数将为该函数被调用的次数(注意,字符串的打印次数不等于第二个参数的值,而等于函数被调用的次数)。是的,这是一个非常可笑的函数,但它让您能够使用本章介绍的一些技术。在一个简单的程序中使用该函数,以演示该函数是如何工作的。全局变量static int num; 记录被调用次数!#include <iostream>using namespace原创 2021-08-05 12:01:05 · 108 阅读 · 0 评论 -
10. 设计一个名为calculate()的函数,它接受两个double值和一个指向函数的指针,而被指向的函数接受两个double参数,并返回一个double值。calculate()函数的类型也是d
10. 设计一个名为calculate()的函数,它接受两个double值和一个指向函数的指针,而被指向的函数接受两个double参数,并返回一个double值。calculate()函数的类型也是double,并返回被指向的函数使用calculate()的两个double参数计算得到的值。例如,假设add()函数的定义如下:double add(double x, double y){ return x + y;}则下述代码中的函数调用将导致calculate()把2.5...原创 2021-08-01 18:42:30 · 1060 阅读 · 0 评论 -
注意!难!9. 这个练习让您编写处理数组和结构的函数。下面是程序的框架,请提供其中描述的函数,以完成该程序。
第一个函数getinfo(),一个结构体数组,一个int类型参数,结构体数组参数存储了学生的姓名,爱好,oop等级这三个信息,而int类型的参数则是输入数据的数目的上界,也可以通过直接敲回车来提前结束输入,否则就需要输入到上界数目个信息。第二个函数display1(),该函数就只接受一个结构体参数,然后把结构体的内容显示出来。第三个函数display2(),该函数接受一个结构指针,然后显示结构体内容。第四个函数display3(),该函数接受结构体数组和int类型参数,对应于getinfo()函原创 2021-08-01 16:55:49 · 198 阅读 · 0 评论 -
8. 在不使用array类的情况下完成程序清单7.15所做的工作。编写两个这样的版本:
a. 使用const char*数组存储表示季度名称的字符串,并使用double数组存储开支。b. 使用const char*数组存储表示季度名称的字符串,并使用一个结构,该结构只有一个成员——一个用于存储开支的double数组。这种设计与使用array类的基本设计类似。a代码://arrobj.cpp -- functions with array objects#include <iostream>#include <array>#include <s..原创 2021-08-01 11:40:12 · 121 阅读 · 0 评论 -
C++ primer plus 第七章编程练习:7. 修改程序清单7.7中的3个数组处理函数,使之使用两个指针参数来表示区间。
7. 修改程序清单7.7中的3个数组处理函数,使之使用两个指针参数来表示区间。fill_array()函数不返回实际读取了多少个数字,而是返回一个指针,该指针指向最后被填充的位置;其他的函数可以将该指针作为第二个参数,以标识数据结尾。// arrfun3.cpp -- array functions and const#include <iostream>const int Max = 5;// function prototypesdouble* fill_array(doub原创 2021-08-01 09:53:36 · 290 阅读 · 0 评论 -
C++ primer plus 第七章编程练习:6. 编写一个程序,它使用下列函数:Fill_array()将一个double数组的名称和长度作为参数。
Fill_array()将一个double数组的名称和长度作为参数。它提示用户输入double值,并将这些值存储到数组中。当数组被填满或用户输入了非数字时,输入将停止,并返回实际输入了多少个数字。Show_array()将一个double数组的名称和长度作为参数,并显示该数组的内容。Reverse_array()将一个double数组的名称和长度作为参数,并将存储在数组中的值的顺序反转。程序将使用这些函数来填充数组,然后显示数组;反转数组,然后显示数组;反转数组中除第一个和最后一个元素之外的所有原创 2021-08-01 09:31:03 · 368 阅读 · 0 评论 -
C++ primer plus 第七章编程练习:5. 定义一个递归函数,接受一个整数参数,并返回该参数的阶乘。
5. 定义一个递归函数,接受一个整数参数,并返回该参数的阶乘。前面讲过,3的阶乘写作3!,等于3*2!,依此类推;而0!被定义为1。通用的计算公式是,如果n大于零,则n!=n*(n-1)!。在程序中对该函数进行测试,程序使用循环让用户输入不同的值,程序将报告这些值#include <iostream>using namespace std;int Jc(int x) { int result; if (x == 0) result = 1; else { result =原创 2021-07-31 22:01:08 · 853 阅读 · 0 评论 -
C++ primer plus 第七章编程练习:4. 许多州的彩票发行结构都使用如程序清单7.4所示的简单彩票玩法的变体。
4. 许多州的彩票发行结构都使用如程序清单7.4所示的简单彩票玩法的变体。在这些玩法中,玩家从一组被称为域号码(field number)的号码中选择几个。例如,可以从域号码1~47中选择5个号码;还可以从第二个区间(如1~27)选择一个号码(称为特选号码)。要赢得头奖,必须正确猜中所有的号码。中头奖的几率是选中所有域号码的几率与选中号码几率的乘积。例如,在这个例子中,中头奖的几率是从47个号码中正确选取5个号码的几率与从27个号码中正确选择1个号码的几率的乘积。请修改程序清单7.4,以计算中得这种彩票头奖原创 2021-07-31 21:13:28 · 296 阅读 · 0 评论 -
C++ primer plus 第七章编程练习:3. 下面是一个结构声明:
3. 下面是一个结构声明:struct box{ char maker[40]; float height; float width; float length; float volume;};a. 编写一个函数,按值传递box结构,并显示每个成员的值。b. 编写一个函数,传递box结构的地址,并将volume成员设置为其他三维长度的乘积。c. 编写一个使用这两个函数的简单程序。#in...原创 2021-07-31 20:32:34 · 400 阅读 · 0 评论 -
2. 编写一个程序,要求用户输入最多10个高尔夫成绩,并将其存储在一个数组中。程序允许用户提早结束输入,并在一行上显示所有成绩,然后报告平均成绩。
编写一个程序,要求用户输入最多10个高尔夫成绩,并将其存储在一个数组中。程序允许用户提早结束输入,并在一行上显示所有成绩,然后报告平均成绩。请使用3个数组处理函数来分别进行输入、显示和计算平均成绩。本题要求编写3个函数,分别用来输入、显示和计算平均成绩,同时规定最多10个成绩,但也可以允许提早结束输入,对于这个功能,我们可以在提示用户输入时提示输入一个特定字符以结束,而函数内部我们定义用户输入的内容为double类型,这样一旦输入char字符型,就会输入失败,接下来用一个if判断来判断输入是否失败就可以原创 2021-07-31 17:54:37 · 480 阅读 · 0 评论 -
1. 编写一个程序,不断要求用户输入两个数,直到其中的一个为0。对于每两个数,程序将使用一个函数来计算它们的调和平均数,并将结果返回给main(),而后者将报告结果。调和平均数指的是倒数平均值的倒数.
计算公式如下:调和平均数=2.0*x*y/(x+y)#include <iostream>double tp(double x, double y);int main() { double a, b; std::cout << "please enter a and b:\n"; std::cin >> a >> b; while (a != 0 && b != 0) { std::cout << tp(a原创 2021-07-31 17:05:51 · 645 阅读 · 0 评论 -
指针与const!(常量指针和指向常量的指针)
1.指向常量的指针:int a=1;const int*pl =&a;pl:即为指向常量的指针!无法通过pl改变a的值,但可以通过a改变自身的值,同时也可以改变pl所指地址!如下:int a=1;const int*pl =&a;int b=2;pl=&b;此时pl指向b,而不再指向a!注意:C++禁止将const的地址(&a) 赋给 非常量的指针。eg:const int a=1;将const 的地址赋给非常量的指针.原创 2021-07-30 16:35:04 · 93 阅读 · 0 评论 -
8. 编写一个程序,它打开一个文件,逐个字符地读取该文件,直到到达文件末尾,然后指出该文件中包含多少个字符。
本题要求处理文件,所以必须加入fstream头文件,这个头文件中的ifstream和ofstream是用来打开和输出文件的,其中还有很多函数,在这里我用到了.open()、.is_open()、.good()、.eof()、.close()这几个函数。.open()函数是打开文件,比如.open("6.8.txt")就会打开名为“6.8.txt”的文件了;.is_open()函数时用来判断打开文件是否成功,例如.is_open("6.8.txt"),有可能是该程序的目录下找不到名为“6.8.txt”的文件,原创 2021-07-30 09:38:06 · 1112 阅读 · 3 评论 -
7. 编写一个程序,它每次读取一个单词,直到用户只输入q。然后,该程序指出有多少个单词以元音打头,有多少个单词以辅音打头,还有多少个单词不属于这两类。
为此,方法之一是,使用isalpha()来区分字母和其他字符打头的单词,然后对于通过了isalpha()测试的单词,使用if或switch语句来确定哪些以元音打头。该程序的运行情况如下:Enter words (q to quit):The 12 awesome oxen ambledquietly across 15 meters of lawn. q5 words beginning with vowels4 words beginning consotants2 others原创 2021-07-29 23:14:58 · 463 阅读 · 0 评论 -
6. 编写一个程序,记录捐助给“维护合法权利团体”的资金。该程序要求用户输入捐赠者数目,然后要求用户输入每一个捐献者的姓名和款项。这些信息被储存在一个动态分配的结构数组中。每个结构有两个成员:
用来储存姓名和字符数组(或string对象)和用来存储款项的double成员。读取所有的数据后,程序将显示所有捐款超过10000的捐献者的姓名及其捐款数额。该列表前应包含一个标题,指出下面的捐款者是重要捐款人(Grand Patrons)。然后,程序将列出其他的捐款者,该列表要以Patrons开头。如果某种类型没有捐献者,则程序将打印单词“none”。该程序只显示这两种类别,而不进行排序。#include <iostream>using namespace std;struct don原创 2021-07-29 22:47:33 · 437 阅读 · 0 评论 -
5. 在Neutronia王国,货币单位是tvarp,收入所得税的计算方式如下:
5000 tvarps:不收税5001~15000 tvarps:10%15001~35000 tvarps:15%35000 tvarps以上:20%例如,收入为38000 tvarps 时,所得税为5000*0.00+10000*0.10+20000*0.15+3000*0.20,即4600 tvarps。请编写一个程序,使用循环来要求用户输入收入,并报告所得税。当用户输入负数或非数字时,循环将结束。#include <iostream>using namespa.原创 2021-07-29 21:58:15 · 296 阅读 · 0 评论 -
4. 加入Benevolent Order of Programmer后,在BOP大会上,人们便可以通过加入者的真实姓名、头衔或秘密BOP姓名了解他(她)。请编写一个程序,可以使用真实姓名、头衔、秘密
// Benevolent Order of Programmer name structurestruct bop { char fullname[strsize]; // real name char title[strsize]; // job title char bopname[strsize]; // secret BOP name int preference; // 0...原创 2021-07-29 21:20:14 · 302 阅读 · 0 评论 -
编写一个菜单驱动程序的雏形。该程序显示一个提供4个选项的菜单——每个选项用一个字母标记。如果用户使用有效选项之外的字母进行响应,程序将提示用户输入一个有效的字母,直到用户这样做为止。
编写一个菜单驱动程序的雏形。该程序显示一个提供4个选项的菜单——每个选项用一个字母标记。如果用户使用有效选项之外的字母进行响应,程序将提示用户输入一个有效的字母,直到用户这样做为止。然后,该程序使用一条switch语句,根据用户的选择执行一个简单的操作。该程序的运行情况如下: Please enter one of the following choices: c) carnivore p) pianist t) tree g) game f Please .原创 2021-07-29 20:40:22 · 556 阅读 · 0 评论 -
编写一个程序,最多将10个donation值读入到一个double数组中(如果您愿意,也可以使用模板类 array)。程序遇到非数字输入时将结束输入,并报告这些数字的平均值以及数组中有多少个数字大于平
编写一个程序,最多将10个donation值读入到一个double数组中(如果您愿意,也可以使用模板类 array)。程序遇到非数字输入时将结束输入,并报告这些数字的平均值以及数组中有多少个数字大于平均值。#include <iostream>#include <array>#include <cctype>using namespace std;int main() { array<double, 10> donation; double原创 2021-07-29 20:06:26 · 404 阅读 · 0 评论 -
编写一个程序,读取键盘输入,直到遇到@符号为止,并回显输入(数字除外),同时将大写字符转换成小写,将小写字符转换为大写(别忘了cctype函数系列)
#include <iostream>#include <cctype>using namespace std;int main() { char ch; cout << "enter the text words: " << endl; while (cin.get(ch)&&ch!='@') { if (!isdigit(ch)) { if (islower(ch)) cout << char(t.原创 2021-07-29 19:10:25 · 727 阅读 · 0 评论 -
编写一个使用嵌套循环的程序,要求用户输入一个值,指出要显示多少行,然后程序将显是相应的函数的星号,其中第一行包括一个星号,第二行包括两个星号,以此类推,每一行包含的字符数等于用户指定的函数
编写一个使用嵌套循环的程序,要求用户输入一个值,指出要显示多少行,然后程序将显是相应的函数的星号,其中第一行包括一个星号,第二行包括两个星号,以此类推,每一行包含的字符数等于用户指定的函数,在星号不够的情况下,在星号前面加上句点。Enter number of rows: 5....* ...** ..*** .**** *****#include <iostream>using namespace std;int main() { cout ...原创 2021-07-28 21:19:26 · 955 阅读 · 0 评论 -
编写一个程序,它使用一个char数组和循环来每次读取一个单词,直到用户输入done为止。随后,该程序指出用户输入 了多少个单词(不包括done在内)。下面是该程序的运行情况: Enter word
编写一个程序,它使用一个char数组和循环来每次读取一个单词,直到用户输入done为止。随后,该程序指出用户输入 了多少个单词(不包括done在内)。下面是该程序的运行情况: Enter words (to stop, type the word done): anteater birthday category dumpster envy finagle geometry done for sure You entered a toal of 7 words. 您应该在程序中包含头文件cstr...原创 2021-07-28 20:23:24 · 758 阅读 · 0 评论 -
设计一个名为car的结构,用它存储下述有关汽车的信息: 生产商(存储在字符数组或string对象中的字符串)、 生产年份(整数)。编写一个程序,向用户询问有多少辆汽车。随后,程序使用new来创建一个
设计一个名为car的结构,用它存储下述有关汽车的信息: 生产商(存储在字符数组或string对象中的字符串)、 生产年份(整数)。编写一个程序,向用户询问有多少辆汽车。随后,程序使用new来创建一个由相应数量的car结构组成的动态数组。 接下来,程序提示用户输入每辆车的生产商(可能由多个单词组成)和年份信息。请注意,这需要特别小心,因为它将交替读取 数值和字符串(参见第4章)。最后,程序将显示每个结构的内容。#include <iostream>using namespace ...原创 2021-07-28 19:50:01 · 1244 阅读 · 0 评论 -
完成编程练习5,但这一次使用一个二维数组来存储输入——3年中每个月的销售量。程序将报告每年的销售量以及三年的总销售量。
#include <iostream>using namespace std;int main() { int i; char mouth[12][3] = { "1","2","3","4","5","6","7","8","9","10","11","12" }; char year[3][10] = { "第一年", "第二年", "第三年" }; int sum[3] = { 0,0,0 }; for(int j=0;j<3;j++){ for (.原创 2021-07-28 18:03:11 · 170 阅读 · 0 评论 -
假设要销售《C++ For Fools》一书。请编写一个程序,输入全年中每个月的销售量(图书数量,而不是销售额)。程序通过循环,使用初始化为月份字符串的char*数组(或string对象数组)逐月进行
假设要销售《C++ For Fools》一书。请编写一个程序,输入全年中每个月的销售量(图书数量,而不是销售额)。程序通过循环,使用初始化为月份字符串的char*数组(或string对象数组)逐月进行提示,并将输入的数据储存在一个int数组中。然后,程序计算数组中各元素的总数,并报告这一年的销售情况。#include <iostream>using namespace std;int main() { int i; char mouth[12][3] = {"1","2","3.原创 2021-07-28 17:44:39 · 354 阅读 · 0 评论 -
Daphne以10%的单利投资了100美元。也就是说,每一年的利润都是投资额的10%,即每年10美元:利息 = 0.10 * 原始存款而Cleo以5%的复利投资了100美元。也就是说,
Daphne以10%的单利投资了100美元。也就是说,每一年的利润都是投资额的10%,即每年10美元:利息 = 0.10 * 原始存款而Cleo以5%的复利投资了100美元。也就是说,利息是当前存款(包括获得的利息)的5%:利息 = 0.05 * 当前存款Cleo在第一年投资100美元的盈利是5%——得到了105美元。下一年的盈利是105美元的5%——即5.25美元,依次类推。请编写一个程序,计算多少年后,Cleo的投资价值才能超过Daphne的投资价值,并显示此时两个人的投资价值。#in.原创 2021-07-28 17:05:17 · 1566 阅读 · 0 评论 -
使用array对象(而不是数组)和long double(而不是long long)重新编写程序清单5.4,并计算100!的值。
// formore.cpp -- more looping with for#include <iostream>#include <array> //别忘了!using namespace std;const int ArSize = 101; // example of external declarationint main(){ array <long double, ArSize> factorials; fact.原创 2021-07-28 16:39:23 · 347 阅读 · 2 评论 -
编写一个要求用户输入两个整数的程序。该程序将计算并输出这两个整数之间(包括这两个整数)所有整数的和。这里假设先输入较小的整数。例如,如果用户输入的是2和9,则程序将指出2~9之间所有整数和为44.
#include <iostream>int main() { std::cout << "enter two int number: "; int i, j; std::cin >> i >> j; int n = i; int sum; for (sum = 0; i <= j; i++) sum += i; std::cout << "the sum of " << n << " to ".原创 2021-07-28 16:26:57 · 4294 阅读 · 0 评论