C++语言学习
文章平均质量分 63
青木落
努力学习的小菜鸟,希望三年后收获不一样的自己
展开
-
cin.clear、cin.sync()与cin.ignore()
一、cin.clear()、cin.sync() cin.clear()是用来更改cin的状态标示符的。 cin.sync()是用来清除缓存区的数据流的。如果标示符没有改变那么即使清除了数据流也无法输入。所以两个要联合起来使用。例如:#include<iostream>using namespace std;int main(){ int a; ...原创 2018-10-11 11:26:26 · 2143 阅读 · 0 评论 -
45.C++for循环的组成部分
5.1.1 for循环的组成部分for循环为执行重复的操作提供了循序渐进的步骤。我们来具体看一看它是如何工作的。for循环的组成部分完成下面这些步骤。设置初始值 执行测试,看看循环是否应当继续进行。 执行循环操作 更新用于测试的值 C++循环设计中包括了这些要素,很容易识别。初始化、测试和更新操作构成了控...原创 2018-09-04 14:22:15 · 618 阅读 · 0 评论 -
学生成绩管理系统C/C++
要求设计一个成绩管理系统,能够完成以下功能:1)每一条记录包括一个学生的学号、姓名、3个成绩(平时成绩、作业成绩、考试成绩);2)成绩信息录入功能:(成绩信息用文件保存,可以一次完成若干条记录的);3)成绩信息显示浏览功能:完成全部学生记录的显示;4)查询功能:完成按姓名查找学生记录,并显示;5)成绩信息的删除:按学号进行删除某学生的成绩; 6)排序功能:按学生总成绩进行排序。原创 2018-09-04 11:19:55 · 1207 阅读 · 0 评论 -
房屋租赁系统C/C++
试设计一房屋租赁信息系统,使之能提供以下功能:房屋信息:房屋编码、房屋地址、房屋门牌号、价格等;要求对房屋信息进行添加、修改、删除、显示、查找等功能;承租者信息:客户ID、姓名、籍贯、入住时间等;要求对承租者信息进行添加、修改、删除、显示等功能;入住管理1:要求从现有房屋中查找一条信息,询问是否租赁(Y/N),如果租赁,保存承租者;入住管理2:要求从承租人中查找一条信息,查看其是否租房,并显示房屋编码。原创 2018-09-04 11:18:49 · 7658 阅读 · 4 评论 -
简易背单词系统C/C++
#include<stdio.h>#include<string.h>int F=20,N=100,k=0;int score[100];int count=0;void hello();void add();void preview();void mdelete();void etc();void cte();void mscore();void...原创 2018-10-06 23:21:47 · 8876 阅读 · 5 评论 -
36-C++-枚举
4.6 枚举C++的enum工具提供了另一种创建符号常量的方式,这种方式可以代替const。它还允许定义新类型,但必须按严格的限制执行。使用enum的句法与使用结构相似。例如,请看下面的语句:enum spectrum {red、orange、yellow、green、blue、violet、indigo、ultraviolet};这种语句完成两项工作。l 让spectrum成为新类型的名称:sp...原创 2018-06-09 21:52:33 · 241 阅读 · 0 评论 -
35-C++-共用体
4.5 共用体共用体是一种数据格式,它能够存储不同的数据类型,但只能同时存储其中的一种类型。也就是说,结构可以同时存储int、long和double,共用体只能存储int、long或double。共用体的句法与结构相似,但含义不同。例如,请看下面的声明:union one4all{int int_val;long long_val;double double_val;};可以使用one4all变量...原创 2018-06-09 17:32:48 · 281 阅读 · 0 评论 -
44-C++-for循环
第5章 循环和关系表达式本章内容包括:l for循环l 表达式和语句l 递增运算符和递减运算符: ++和--l 组合赋值运算符l 复合语句(语句块)l 逗号运算符l 关系运算符:>、>=、==、<=、<和!=l while循环l typedef工具l do while 循环l 字符输入方法get()l 文件尾条件l 嵌套循环和二维数组计算机除了存储数据外,还可以做很多其他的...原创 2018-06-24 16:19:10 · 318 阅读 · 0 评论 -
34-C++-结构简介
4.4结构简介假设要存储有关篮球运动员的信息,则可能需要存储他(她)的姓名、工资、身高、体重、平均得分、命中率、助攻次数等。希望有一种数据格式可以将所有这些信息存储在一个单元中。数组不能完成这项任务,因为虽然数组可以存储多个元素,但所有元素的类型必须相同。也就是说,一个数组可以存储20个int,另一个数组可以存储10个float,但同一个数组不能在一些元素中存储int,在另一些元素中存储float...原创 2018-06-09 17:30:43 · 509 阅读 · 0 评论 -
43-C++数组的替代品vector和array
4.10 数组的替代品本章前面说过,模板类vector和array是数组的替代品。下面简要地介绍它们的用法以及使用它们带来的一些好处。4.10.1 模板类vector模板类vector类似于string类,也是一种动态数组,您可以在运行阶段设置vector对象的长度,可在末尾附加新数据,还可在中间插入新数据。基本上,它是使用new创建动态数组的替代品。实际上,vector类确实使用new和dele...原创 2018-06-16 09:37:57 · 980 阅读 · 0 评论 -
42-C++-类型组合
4.9 类型组合本章介绍了数组、结构和指针。可以各种方式组合它们,下面介绍其中的一些,从结构开始:struct antarctica_years_end{int years;};可以创建这种类型的变量:antarctica_years_end s01,s02,s03;然后使用成员运算符访问其成员:s01.year = 1998;可创建指向这种结构的指针:antarctica_years_end *...原创 2018-06-16 09:24:22 · 547 阅读 · 0 评论 -
41-C++自动存储、静态存储和动态存储
4.8.5 自动存储、静态存储和动态存储根据用于分配内存的方法,C++有3种管理数据内存的方式:自动存储、静态存储和动态存储(有时也叫做自由存储空间或堆)。在存在时间的长短方面,以这3种方式分配的数据对象各不相同。下面简要地介绍每种类型(C++11新增了第四种类型——线程存储,这将在第9章简要地讨论)。1. 自动存储在函数内部定义的常规变量使用自动存储空间,被称为自动变量,这意味着它们在所属的函数...原创 2018-06-15 22:43:20 · 532 阅读 · 0 评论 -
40-C++-使用new创建动态结构
4.8.4使用new创建动态结构 在运行时创建数组优于在编译时创建数组,对于结构也是如此。需要在程序运行时为结构分配所需的空间,这也可以使用new运算符来完成。通过使用new,可以创建动态结构。同样,“动态”意味着内存是在运行时,而不是编译时分配的。由于类与结构非常相似,因此木节介绍的有关结构的技术也适用于类。 将new用于结构由两步组成:创建结构和访问其成员。要创建结构,需要同时使用结构类型和n...原创 2018-06-15 22:42:33 · 9045 阅读 · 2 评论 -
39-C++-指针与字符串
4.8.3 指针和字符串数组和指针的特殊关系可以扩展到C-风格字符串。请看下面的代码:char flower[10] = “rose”;cout<< flower << “s are red\n”;数组名是第一个元素的地址,因此cout语句中的flower是包含字符r的char元素的地址。cout对象认为char的地址是字符串的地址,因此它打印该地址处的字符,然后继续打印后...原创 2018-06-15 22:39:28 · 1899 阅读 · 2 评论 -
38-c++-指针小结
4.8 指针、数组和指针算术指针和数组基本等价的原因在于指针算术和C++内部处理数组的方式。首先,我们来看一看算术。将整数变量加1后,其值将增加1;但将指针变量加1后,增加的量等于它指向的类型的字节数。将指向double的指针加1后,如果系统对double使用8个字节存储,则数组将增加8;将指向short的指针加1后,如果系统对short使用2个字节存储,则指针值将增加2。程序4.19演示了这种令...原创 2018-06-15 22:36:13 · 320 阅读 · 0 评论 -
46-C++表达式和语句
表达式和语句for语句的控制部分使用3个表达式。由于其自身加强的句法限制,C++成为非常具有表现力的语言,任何值或任何有效的值和运算符的组合都是表达式。例如,10是值为10的表达式(一点都不奇怪),28*20是值为560的表达式。在C++中,每个表达式都有值。通常值是很明显的。例如,下面的表达式由两个值和一个加号组成,它的值为49; 22+27有时值不那么明显,例如,下面是一个表达式,...原创 2018-09-04 14:32:25 · 501 阅读 · 0 评论 -
55-C++复合语句(语句块)
编写C++for语句的格式(或句法)看上去可能比较严格,因为循环体必须是一条语句。如果要在循环体中包含多条语句,这将很不方便。所幸的是,C++提供了避开这种限制的方式,通过这种方式可以在循环体中包含任意多条语句。方法是用两个花括号来构造一条复合语句(代码块)。代码块由一对花括号和它们包含的语句组成,被视为一条语句,从而满足句法的要求。例如,下列程序使用花括号将3条语句合并为一个代码块。这样,循环体...原创 2018-09-07 23:46:24 · 3779 阅读 · 0 评论 -
54-c++组合赋值运算符
上一个程序使用了下面的表达式来更新循环计数:i = i + byC++有一种合并了加法和赋值操作的运算符,能够更简洁地完成这种任务:i +=by+=运算符将两个操作数相加,并将结果赋给左边的操作数。这意味着左边的操作数必须能够被赋值,如变量、数组元素、结构成员或通过对指针解除引用来标识的数据:int k=5;k +=3; //k=8;int *pa = new int...原创 2018-09-07 17:33:33 · 853 阅读 · 0 评论 -
53-C++递增/递减运算符和指针
可以将递增运算符用于指针和基本变量。前面介绍过,将递增运算符用于指针时,将把指针的值增加其指向的数据类型占用的字节数,这种规则适用于对指针递增和递减:double arr[5] = { 21.2,32.8 , 23.4 , 45.2 , 37.4};double *pt = arr;++pt;也可以结合使用这些运算符和*运算符来修改指针指向的值。将*和++同时用于指针时提出了这样的...原创 2018-09-07 15:20:56 · 454 阅读 · 1 评论 -
52-C++前缀格式和后缀格式
显然,如果变量被用于某些目的(如用作函数参数或给变量赋值),使用前缀格式和后缀格式的结果将不同。然而,如果递增表达式的值没有被使用,情况又如何呢?例如,下面两条语句的作用是否不同?x++;++x;下面两条语句的作用是否不同?for( n =lim ; n>0;--n)...;和for( n = lim ; n>0;n--)...;从逻辑上说,...原创 2018-09-07 15:04:25 · 952 阅读 · 0 评论 -
61-C++while循环
While循环 While循环是没有初始化和更新部分的for循环,它只有测试条件和循环体:while (test-condition) body; 首先,程序计算圆括号内的测试条件表达式,如果该表达式为true,则执行循环体中的语句。与for循环一样,循环体也由一条语句或两个花括号定义的语句块组成。执行完循环体后,程序返回测试i...原创 2018-09-10 19:48:04 · 7804 阅读 · 0 评论 -
60-C++比较string类字符串
比较string类字符串 如果使用string类字符串而不是C-风格字符串,比较起来将简单些,因为类设计让您能够使用关系运算符进行比较。这之所以可行,是因为类函数重载(重新定义)了这些运算符。后面将介绍如何将这种特性加入到类设计中,但从应用的角度说,我们限制只需直到可以将关系运算符用于string对象即可。下面的程序通过...原创 2018-09-10 19:35:51 · 816 阅读 · 0 评论 -
59-C++C-风格字符串的比较
C-风格字符串的比较假设要直到字符数组中的字符串都不是mate。如果word是数组名,下面的测试可能并不能像我们预想的那样工作:word == “mate”请记住,数组名是数组的地址。同样,用引号括起的字符串常量也是其地址。因此,上面的关系表达式不是判断两个字符串是否相同,而是查看它们是否存储在相同的地址上,两个字符串...原创 2018-09-10 19:28:25 · 527 阅读 · 0 评论 -
51-C++副作用和顺序点
下面更详细地介绍C++就递增运算符何时生效的哪些方面做了规定,哪些方面没有规定。首先,副作用指的是在计算表达式时对某些东西(如存储在变量中的值)进行了修改:顺序点是程序执行过程中的一个点,在这里,进入下一步之前将确保对所有的副作用都进行了评估。在C++中,语句中的分号就是一个顺序点,这意味着程序处理下一条语句之前,赋值运算符、递增运算符和递减运算符执行的所有修改都必须完成。接下来的内容将讨论有些操...原创 2018-09-06 23:34:27 · 452 阅读 · 0 评论 -
50-C++递增递减运算符
C++中有多个常被用在循环中的运算符,因此我们花一点时间来讨论它们。前面已经介绍了两个这样的运算符:递增运算符(++)(名称C++由此得到)和递减运算符(--)。这两个运算符执行两种及其常见的循环操作:将循环计数加1或减1。然而,它们还有很多特点不为读者所知。这两个运算符都有两种变体。前缀版本位于操作数前面,如++x;后缀版本位于操作数后面,如x--。两个版本对操作数的影响是一样的,但是影...原创 2018-09-06 23:14:48 · 1628 阅读 · 0 评论 -
49-C++使用for循环访问字符串
for循环提供了一种一次访问字符串中每个字符的方式。例如,下列程序让用户能够输入一个字符串,然后按相反的方向逐个字符地显示该字符串。在这个例子中,可以使用string对象,也可以使用char数组,因为它们都让您能够使用数组表示法来访问字符串中的字符。下列程序使用的是string对象。string类的size()获得字符串中的字符数;循环在其初始化表达式中使用这个值,将i设置为字符串中最后一...原创 2018-09-06 22:57:17 · 4110 阅读 · 1 评论 -
48-C++修改for中的步长
到现在为止,循环示例每一轮循环都将循环计数加1或减1。可以通过修改更新表达式来修改步长。例如,下列程序中的程序按照用户选择的步长值将循环计数递增。它没有将i++用作更新表达式,而是使用表达式 i = i+by ,其中by是用户选择的步长值。 //bigstep.cpp —— count as directed#include<iostream>int main()...原创 2018-09-06 22:43:32 · 5002 阅读 · 0 评论 -
47-C++非表达式和语句
有些概念对于理解C++至关重要,如了解for循环的结构。不过句法中也有一些相对次要的内容,让认为自己理解语言的人突然觉得不知所措。下面来看看这样的内容。 对任何表达式加上分号都可以成为语句,但是这句话反过来说就不对了。也就是说,从语法中删除分号,并不一定将它转换为表达式。就我们目前使用的语言而言,返回语句、声明语句和for语句都不满足“语句 = 表达式+分号”这种模式。例如,下面...原创 2018-09-06 22:21:21 · 805 阅读 · 0 评论 -
58-C++赋值比较可能犯的错误
赋值比较和可能犯的错误不要混淆等于运算符(= =)与赋值运算符(=)。下面的表达式问了一个音乐问题——musicians是否等于4?musicians == 4该表达式的值为true或false。下面的表达式将4赋给musicians :musicians = 4;在这里,整个表达式的值为4,因为该表达式左边的值为4。for循环的灵活设计让用户很容易出错。如果不小心泄漏了=...原创 2018-09-09 17:03:41 · 680 阅读 · 0 评论 -
57-C++关系表达式
计算机不只是机械的数字计算器。它能够对值进行比较,这种能力是计算机决策的基础。在C++中,关系运算符是这种能力的体现。C++提供了6种关系运算符来对数字进行比较。由于字符用ASCII码所表示,因此也可以将这些运算符用于字符。不能将它们用于C-风格字符串,但可用于string类对象。对于所有的关系表达式,如果比较结果为真,则其值将为true,否则为false,因此可将其用作循环则是表达值。(老式实现...原创 2018-09-08 11:34:48 · 990 阅读 · 0 评论 -
56-C++逗号运算符
正如读者看到的,语句块允许把两条或更多条语句放到按C++语法只能放一条语句的地方。逗号运算符对表达式完成同样的任务,允许将两个表达式放到C++句法只允许放一个表达式的地方。例如,假设有一个循环,每轮都将一个变量加1,而将另一个变量减1.在for玄幻控制部分的更新部分中完成这两项工作将非常方便,但循环句法只允许这里包含一个表达式。在这种情况下,可以使用逗号运算符将两个表达式合并为一个:+...原创 2018-09-08 11:14:43 · 920 阅读 · 0 评论 -
33-C++基础string类介绍
4.3 string类介绍ISO/ANSI C++98标准通过添加string类扩展了C++库,因此现在可以string类型的变量(使用C++的说话是对象)而不是字符数组来存储字符串。您将看到,string类使用起来比数组简单,同时提供了将字符串作为一种数据类型的表示方法。要使用string类,必须在程序中包含头文件string。string类位于名称空间std中,因此您必须提供一条using编译...原创 2018-06-03 10:35:45 · 856 阅读 · 0 评论 -
32-C++基础-混合输入字符串和数字
4.2.5 混合输入字符串和数字混合输入数字和面向行的字符串会导致问题。请看程序4.6中的简单程序。清单4.6 numstr.cpp该程序的运行情况如下:用户根本没有输入地址的机会。问题在于,当cin读取年份,将回车键生成的换行符留在了输入队列中。后面的cin.getline()看到换行符后,将认为是一个空行,并将一个空字符串赋给address数组。解决之道是,在读取地址之前先读取并丢弃换...原创 2018-06-03 10:35:31 · 5649 阅读 · 0 评论 -
31-C++基础-每次读取一行字符串输入
4.2.4 每次读取一行字符串输入每次读取一个单词通常不是最好的选择,例如,假设程序要求用户输入城市名,用户输入New York或Sao Paulo,您希程序读取并存储完整的城市名,而不仅仅是New或Sao.要将整条短语而不是个词作为字符串输入,需要采用另一种字符串读取方法。具体地说,需要采用面向行而不是面向单词的方法,幸运的是,istream 中的类(如cin)提供了些面向行的类成员函数: ...原创 2018-06-03 10:35:06 · 3568 阅读 · 1 评论 -
04-C++基础-第二章-main()函数
2.1.1 main()函数 去掉修饰后,程序2.1.1中的示例程序的基本结构如下:int main(){ statements return 0;} 这几行表明有一个名为main()的函数,并描述了该函数的行为。这几行代码构成了函数定义(function definition)。该定义有两部分组成:第一行int main()叫函数头(function heading),花...原创 2018-05-31 07:20:59 · 1423 阅读 · 0 评论 -
12-C++ 基础-使用有返回值的函数以及函数变体
2.4函数由于函数用于创建C++程序的模块,在C++的OOP定义至关重要,因此必须熟悉它。含火速的某些方面术语高级主题,将在第七章和第八章重点讨论函数。然而,现在了解函数的一些基本特性,将使得在以后的函数学习中更加得心应手。本章剩余的内容将介绍函数的一些基本知识。C++函数分两种:有返回值的和没有返回值的。在标准C++函数库中可以找到这两类函数的例子,您也可以自己创建这两种类型的函数。下面首先来看...原创 2018-06-01 09:07:11 · 4280 阅读 · 1 评论 -
24-C++类型转换
3.4.4 类型转换C++丰富的类型允许根据需求选择不同的类型,这也使计算机的操作更复杂。例如,将两个short值相加涉及到的硬件编译指令可能会与将两个long值相加不同。由于有11种整型和3种浮点类型,因此计算机需要处理大量不同的情况,尤其是对不同的类型进行计算时。为处理这种潜在的混乱,C++自动执行很多类型转换:l 将一种算术类型的值赋给另一种算术类型的变量时,C++对其值进行转换;l 表达式...原创 2018-06-02 00:04:28 · 2746 阅读 · 0 评论 -
23-C++-算术运算符
3.4 C++算术运算符大家可能还对学校里做的算数练习记忆犹新,在计算机上也能够获得同样的乐趣。C++使用算术运算符来运算。它提供了几种运算符来完成5中基本的算术运算:加法、减法、乘法、除法以及求模。每种运算符都使用两个值(操作数)来计算结果。运算符及其操作数构成了表达式。例如,在下面的语句中:int wheels = 4 + 2;4和2都是操作数,+是加法运算符,4+2则是一个表达式,其值为6...原创 2018-06-02 00:04:15 · 4885 阅读 · 0 评论 -
21-C++基础-const限定符
1、成员函数cout.put()cout.put()到底是什么东西?其名称中为何有一个句号?函数cout.put()是一个重要的C++OOP概念——成员函数——的第一个例子。类定义了如何表示和控制数据。成员函数归类所有,描述了操纵类数据的方法。例如类ostream有一个put()成员函数,用来输出字符。只能通过类的特定对象(例如这里的cout对象)来使用成员函数。要通过对象(如cout)使用成员函...原创 2018-06-02 00:03:24 · 366 阅读 · 0 评论 -
18-C++基础-C++如何确定常量的类型
3.1.7 C++如何确定常量的类型程序的声明将特定的整型变量的类型告诉了C++编译器,但编译器如何知道常量的类型呢?假设在程序中使用常量表示一个数字:cout<<”Year = ”<<1492<<”\n”程序将把1492存储为int、long还是其他整型呢?答案是,除非有理由存储为其他类型(如使用特殊的后缀来表示特定的类型,或者值太大,不能存储为int),否则...原创 2018-06-02 00:00:24 · 1759 阅读 · 0 评论