![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++语法
elma_tww
这个作者很懒,什么都没留下…
展开
-
C++primer第五版 函数指针
指针在c++中既是重点又是难点,最开始学指针的时候就已经很绕了,然后接触函数指针的时候,就彻底晕了。很多书在编写函数指针这一块时讲得并不清楚,这里推荐一篇总结函数指针还不错的博客,可以学习一下https://www.cnblogs.com/zrtqsk/p/4254765.html函数指针指向的是函数而非对象。和其他指针一样,函数指针指向某种特定类型,函数的类型由它的返回类型和形参类型共同...原创 2018-10-01 09:57:58 · 310 阅读 · 0 评论 -
C++primer第五版 移位运算符练习
如果一台机器上int占32位,char占8位,用的是Latin-1字符集,其中字符'q'的二进制形式是01110001,那么表达式 ‘q’<<6 的值是什么?这个题目基本不涉及算法,只是想分析一下移位运算的过程。代码如下:// primer_4_8.cpp : Defines the entry point for the application.// 如果一台机器上in...原创 2018-09-04 13:35:13 · 366 阅读 · 0 评论 -
C++primer第五版 条件运算符练习
任务如下:1. 编写一段程序,使用条件运算符从vector<int>中找到哪些元素的值是奇数,然后将这些奇数翻倍2. 将成绩分为四档:fail(<60),low pass(60~75),pass(76~90)high pass(91~100),分别用条件运算符和if语句实现附上第一个任务的代码:// primer_4_7.cpp : Defines the ent...原创 2018-09-03 22:08:08 · 426 阅读 · 0 评论 -
C++primer第五版 定义一个二维数组,使用普通for循环分别用下标运算符和指针输出数组元素
这个题目的编程思路上非常简单,不外乎就是遍历所有元素将其输出。不过其中涉及到的下标和指针的知识点是个很好的学习范例。直接附上代码// primer_3_6.cpp : Defines the entry point for the application.// 定义一个二维数组,使用普通for循环分别用下标运算符和指针输出数组元素#include "stdafx.h"#includ...原创 2018-08-31 09:54:37 · 956 阅读 · 0 评论 -
C++primer第五版 字符串、向量和数组重要知识点
1. 标准库类型string(1)string对象上的操作string对象会自动忽略开头的空白(即空格符、换行符、制表符等)并从第一个真正的字符开始读起,直到遇见下一处空白位置。(2)使用getline读取一整行getline函数的参数是一个输入流和一个string对象,函数从给定的输入流中读入内容,直到遇到换行符为止(注意换行符也被读进来了),然后把所读的内容存入到那个strin...原创 2018-08-30 21:26:17 · 204 阅读 · 0 评论 -
C++primer第五版 假设有一组成绩的集合,其中成绩的取值是从0到100.以10分为一个分数段,要求统计各个分数段各有多少个成绩。要求使用下标和迭代器两种方法做。
显然,从0到10总共有101种可能的成绩取值,这些成绩分布在11个分数段上:每10个分数构成一个分数段,这样的分数段有10个,额外还有一个分数段表示满分100。这样一个分数段将统计成绩在0~9之间的数量,第二个分数段统计10~19之间的数量,以此类推,最后一个分数段统计满分100分的数量。具体实现时,可以使用一个含有11个元素的vector对象,每个元素分别用于统计各个分数段上出现的成绩个数...原创 2018-08-30 17:41:53 · 1705 阅读 · 0 评论 -
C++primer第五版 从cin读入一组词并把它们存入一个vector对象,然后设法把所有词都改写为大写形式。输出改变后的结果,每个词占一行
这里要用到 标准库类型vector 和 处理string对象中的字符 这两个知识点。标准类型vector表示对象的集合,其中所有对象的类型都相同,vector也常被称作容器。要想使用vector,必须包含适当的头文件,即 #include <vector>。向vector对象中添加元素需要用到push_back函数,它负责把一个值当成vector对象的尾元素“压到(push)”ve...原创 2018-08-29 14:06:17 · 1192 阅读 · 0 评论 -
C++primer第五版 编写一段程序,读入一个包含标点符号的字符串,将标点符号去除后输出字符串剩余的部分
这是一个关于字符串处理的简单程序,但是里面有一些细节是值得关注的。先附上程序:// primer_3_2_3.cpp : Defines the entry point for the application.// 编写一段程序,读入一个包含标点符号的字符串,将标点符号去除后输出字符串剩余的部分#include "stdafx.h"#include <iostream>...原创 2018-08-29 11:19:12 · 2624 阅读 · 0 评论 -
C++primer第五版 编写一段程序读入两个字符串,比较其是否相等并输出结果。如果不相等,输出较大的那个字符串和长度较大的那个字符串
一个字符串比较的简单程序。string对象相等意味着它们的长度相同且所包含的字符也全都相同。字符串的比较:1.如果两个string对象的长度不同,而且较短string对象的每个字符都与较长string对象对应位置上的字符相同,就说string对象小于较长string对象2.如果两个string对象在某些对应的位置上不一致,则string对象比较的结果其实是string对象中第一对相异字符...原创 2018-08-28 20:56:52 · 4532 阅读 · 0 评论 -
C++primer第五版 变量和基本类型重要知识点
挑选了一些C++primer第五版第二章的一些我认为重要或者看起来两眼冒星星的知识点,感觉目前还是不太理解,但是没关系,放在这里以后慢慢看~1. 字符和字符串字面值由单引号括起来的一个字符称为char型字面值,双引号括起来的零个或多个字符则构成字符型字面值。字符串字面值的类型实际上是由常量字符构成的数组,编译器在每个字符串的结尾处添加一个空字符('\0'),因此,字符串字面值的实际长度...原创 2018-08-28 17:44:10 · 200 阅读 · 0 评论 -
C++primer第五版 书店程序之读入销售记录,生成每本书的销售报告,显示售出册数、总销售额和平均售价
在C++primer第五版的1.6节中,示例了一个书店程序。要求是从一个文件中读取销售记录,生成每本书的销售报告,显示售出册数、总销售额和平均售价,假定每个ISBN书号的所有销售记录在文件中是聚在一起保存的。也就是说,输入销售记录时,要求同一个书号的销售记录要连续一次性全部输入。编程思路和前一篇“统计在输入中每个值连续出现的次数”的思路差不多。这里就不再累述,直接附上书上的代码//假定每...原创 2018-08-28 13:14:16 · 2275 阅读 · 4 评论 -
C++primer第五版 统计在输入中每个值连续出现的次数
// primer_1_4_4.cpp : Defines the entry point for the application.// 统计在输入中每个值连续出现的次数#include "stdafx.h"#include<iostream>using namespace std;int main(){ int currVal=0, val=0; //currV...原创 2018-08-27 16:43:28 · 913 阅读 · 1 评论 -
C++primer第五版 编写一段程序,输出每种内置类型所占空间的大小
本题目旨在练习sizeof运算符的使用以及熟悉各种内置类型所占空间的大小,并不难,因此直接附上程序:// primer_4_9.cpp : Defines the entry point for the application.// 编写一段程序,输出每种内置类型所占空间的大小#include "stdafx.h"#include<iostream>using name...原创 2018-09-04 13:57:51 · 806 阅读 · 0 评论 -
C++primer第五版 表达式相关知识点
以下知识点是我认为需要特别注意或者难以理解的知识点,大部分简单的基础知识我略过了。1. 左值和右值当一个对象被用作右值时,用的是对象的值(内容),当对象被用作左值时,用的是对象的身份。2. 优先级和结合律括号无视优先级和结合律,因此如果对某些运算符的优先级不清楚,最好用括号来强制让表达式的组合关系符合程序逻辑的要求。有4中运算符明确规定了运算对象的求值顺序:逻辑与(&...原创 2018-09-04 14:29:05 · 117 阅读 · 0 评论 -
C++primer第五版 函数重载及函数匹配
函数重载即同一作用域内的几个函数名字相同但形参列表不同,注意,不允许两个函数除了返回类型外其他所有的要素都相同。在大多数情况下,我们容易确定某次调用应该选用哪个重载函数,然而,当几个重载函数的形参数量相等以及某些形参可以由其他类型转换得来时,就比较复杂了。函数匹配首先是确定候选函数和可行函数,再寻找最佳匹配。如果有且只有一个函数满足下列条件,则匹配成功:1. 该函数每个实参的匹配都不劣...原创 2018-09-27 15:48:27 · 289 阅读 · 0 评论 -
C++primer第五版 NDEBUG预处理变量,输出vector内容,有条件地输出指向过程有关的信息。
调试代码时,有时会用到一种类似于头文件保护的技术,这就要用到两项预处理功能:assert和NDEBUG。预处理器定义了几个对于程序调试很有用的名字:__FILE__ 存放文件名的字符串字面值__LINE__ 存放当前行号的整型字面值__TIME__ 存放文件编译时间的字符串字面值__DATE__ 存放文件编译日期的字符串字面值另外还有__func__.输出当前调试的函数的...原创 2018-09-27 14:52:28 · 265 阅读 · 0 评论 -
C++primer第五版 函数返回左值
我们使用函数,一般要么是void类型,在函数中进行一些操作,然后无返回值;要么是有返回类型的,返回右值赋给一个变量。其实函数还可以返回左值,类似于一个变量。稍有不同的是,如果是用于左值,那么应在函数名前加上引用符号(&)。函数的返回类型决定函数调用是否是左值。调用一个返回引用的函数得到左值,其他返回类型得到右值。可以像使用其他左值那样来使用返回引用的函数,特别是,我们能为返回类型是非常...原创 2018-09-27 09:48:41 · 810 阅读 · 0 评论 -
C++primer第五版 编写一个函数,它的参数是vector<int>类型的对象,函数的功能是计算列表中所有元素的和。
首先说明一下,C++primer第五版练习6.27中要求的是用initializer_list<int>类型的对象作为参数,但因为initializer_list是C++11的标准,而我用的VC6.0不支持,因此在这里我将initializer_list换成了vector。之前写函数的时候,遇到的很多情况都是函数参数个数已知,但是如果我们无法提前预知向函数传递的参数个数呢?这里,...原创 2018-09-07 11:37:17 · 565 阅读 · 0 评论 -
C++primer第五版 编写一个函数,令其接收两个参数,一个是int型的数,另一个是int指针。函数比较int的值和指针所指的值,返回较大的那个。
该题目主要是为了熟悉函数参数的几种传递方式。定义函数形参时,可以定义成传值(本身)、传指针(*)、传引用(&)。如果只是访问参数值,不对其进行修改,那么这三种方式都是可以的。例如该题目,就仅仅是比较两个参数的大小,并没有对参数本身进行修改,因此传值和传指针都是可行的。附上代码:// primer_6_2_4.cpp : Defines the entry point for th...原创 2018-09-07 11:23:02 · 1345 阅读 · 0 评论 -
C++primer第五版 编写一个与用户交互的函数,要求用户输入一个数字,计算生成该数字的阶乘,在main函数中调用该函数。
题目中求阶乘的函数我用两种方法来写,第一种不用递归,第二种用递归。(1)不用递归阶乘的计算公式是:a!=a*(a-1)*(a-2)*(a-3)*...*1;因此我们在函数中可以利用while循环来实现连续相乘,同时用自减符保证计算表达式一致。具体代码如下:// primer_6_1.cpp : Defines the entry point for the applicat...原创 2018-09-06 11:02:18 · 6762 阅读 · 1 评论 -
C++primer第五版 读取两个整数,输出相除结果。当第二个数是0时抛出异常,使用try语句去捕获异常。catch子句应该为用户输出一条提示信息,询问其是否输入新数并执行try语句块内容。
该题目主要是为了练习try-throw-catch语句的使用。首先讲一点理论知识。C++处理异常的机制是由3个部分组成的,即检查(try)、抛出(throw)和捕捉(catch)。把需要检查的语句放在try块中,throw用来当出现异常时抛出一个异常信息,而catch则用来捕捉异常信息,如果捕捉到了异常信息,就处理它。总结一下如何进行异常处理:①把可能出现异常的、需要检查的语句或程序...原创 2018-09-05 22:36:08 · 2967 阅读 · 0 评论 -
C++primer第五版 从标准输入中读取若干string对象并查找连续重复出现的单词,要求记录连续出现的最大次数以及对应的单词。
题目:从标准输入中读取若干string对象并查找连续重复出现的单词。要求记录连续出现的最大次数以及对应的单词。如果这样的单词存在,输出重复出现的最大次数;如果不存在,输出一条信息说明任何单词都没有连续出现过。先附上代码:// primer_5_4_1.cpp : Defines the entry point for the application.// 从标准输入中读取若...原创 2018-09-05 20:41:47 · 974 阅读 · 2 评论 -
C++primer第五版 统计从cin读入的文本中含有'ff'两个字符的字符序列数量
题目看似不难,但实际上有一个易错点。一般的思路是连续读入两个字符来和'ff'做比较,但是这就相当于将字符序列每两个进行一个划分,12为一组,34为一组,56为一组...那么,如果ff出现在第2个和第3个位置上呢?按照刚才的思路,这个'ff'就不会被找出来。因此,我们需要换一种方法。用两个字符变量ch1和ch2接收字符,将第一次读进来的字符赋给ch1,第二次读进来的字符赋给ch2,用ch1ch2与'...原创 2018-09-04 18:13:25 · 298 阅读 · 0 评论 -
C++primer第五版 统计从cin读入的文本中元音字母、空格、制表符和换行符的数量
该题目是为了练习switch语句的使用,先附上代码:// primer_5_3_2.cpp : Defines the entry point for the application.// 统计从cin读入的文本中元音字母、空格、制表符和换行符的数量。#include "stdafx.h"#include<iostream>using namespace std;...原创 2018-09-04 17:37:27 · 962 阅读 · 1 评论 -
C++primer第五版 读取数量不定的输入数据进行求和
循环次数已知的情况一般用for循环,循环次数不易预知的情况用while循环。实现对用户输入的一组数据求和,这种情况下,我们预先不知道要对多少个数求和,因此需要不断读取数据直至没有新的输入为止,因此可将读取数据行代码放入while判断语句内。代码如下:// primer_1_4_3.cpp //读取数量不定的输入数据进行求和#include "stdafx.h"#include &...原创 2018-08-09 10:43:20 · 834 阅读 · 2 评论