递归函数
函数体中可以调用其它函数,如果一个函数题中又调用了自己,这样的函数称为递归函数。显然,函数体中不应该是无条件的递归调用,否则就和“死循环”一样的效果了。也就是在满足某些条件的时候不递归调用自身,这也就是递归函数的“出口”。 一、计算阶乘 对...
函数体中可以调用其它函数,如果一个函数题中又调用了自己,这样的函数称为递归函数。显然,函数体中不应该是无条件的递归调用,否则就和“死循环”一样的效果了。也就是在满足某些条件的时候不递归调用自身,这也就是递归函数的“出口”。 一、计算阶乘 对...
遇到要输入处理较多整数的题目时,用scanf或者cin肯定是不够快的。由于getchar()有速度快的特性,所以可以使用getchar()将整数按照单个字符的方式输入并重新组装,对比scanf,这样做效率可以提高数倍。可以将以“getcha...
一、值传递 来看一个例子,使用函数交换两个变量的值: 运行程序会发现,调用swap(a,b)并不能交换a、b两个变量的值!原因很简单,执行swap函数时,会将实际参数a、b的值赋值(拷贝)给swap函数的形式参数x、y,而 x、y是swap...
我们来看前面累加求和和判断素数的程序代码: ↑控制变量i申明语句放在了for循环语句中↑ ↑控制变量i申明语句放在了for循环语句前↑ 判断素数的程序,在for循环结束后判断循环的条件不成立(说明循环正常结束,没有被break掉)来判断是素...
一、打印字符三角形 打印边长为由字符组成的三角形。用函数实现,很显然函数没有返回值,有两个参数:int类型的参数n,表示字符三角形边长;char类型的参数ch,表示组成三角形的字符: 需要额外注意的是,调用函数时,如果实际参数是变量,那么实...
只使用内置函数往往是不够的,解决实际问题时,很多时候需要我们根据实际情况自定义函数并调用函数解决问题。自定义函数的优势是一次定义,需要的时候调用即可,可以有效避免大量相同或相似的代码重复出现导致程序臃肿繁琐的情况,也能让程序的逻辑结构更加清...
C/C++中有很多可以直接调用的内置函数,例如math头文件中提供的、、等数学函数,又例如stdio头文件中提供的格式化输入输出函数和。所谓内置函数,可以理解为编程语言已经定义好的“工具”,我们先引入函数所在的头文件,然后就可以按照“工具的...
问题:输入()位小组成员姓名(姓名中只有英文字符,每个姓名不超过10个字符),逆序输出所有姓名。 分析:使用string数组存储所有成员姓名,然后逆序输出数组中的string即可。 此外,如果用字符数组存储所有姓名,需要使用二维数组。此时二...
通过本例题介绍sscanf和sprintf函数的使用方法。字符串的处理是应用程序的重要操作,也是竞赛的考点,在编程时需要灵活处理。 这是一道常规问题,但是由于每行中输入的数据个数不一致,数据的处理是一个难点。进一步分析问题可知,每行有3个数...
问题:给定一个单词,如果单词以er、ly或者ing后缀作为结尾,则删除该后缀,否则不做任何处理。输出单词删除er、ly、ing后缀的结果(输入保证保证删除后缀后的单词长度不为0)。 分析:将单词存储在字符数组中,判断字符数组尾部的2个字符或...
问题:统计字符串中单词出现的次数。已知字符串中的单词用一个空格或者多个空格隔开。 输入格式:有2行,第1行是字符串,第2行是不带空格的单词。 分析:使用string来存储字符串和单词。可以通过string的find方法查找子串的方式统计单词...
问题:统计长度不超过1000的字符串中的单词数量。字符串中的单词用一个或者多个空格隔开。 分析:输入的字符串包含空格,不能简单地使用cin或者scanf输入。可以直接遍历字符串中的字符,遍历过程中统计单词首字符的数量,单词首字符的特点是:当...
问题:判断不包含空格且长度不超过1000的字符串是否是回文字符串。所谓回文字符串就是顺着念、倒着念完全相同的字符串。 分析:对于字符串,设其长度为,那么是回文字符串必须要满足:str[0] == str[n-1]、str[1] == str...
问题:输入一个正整数(),计算并输出的逆序数。正整数的逆序数就是倒着念的整数(高位不能有多余的0),例如123的逆序数是321,5700的逆序数是75。 分析:使用循环拆分出存储在long long类型变量每位上的数字,一边拆分一边组装逆序...
问题:判断两个字符串是否相等。 分析:使用char数组存储字符串,可以直接使用strcmp函数来比较两个字符串;如果使用string存储字符串,那么可以直接使用==来判断是否相等: 其实不使用strcmp函数,直接用for循环依次比较字符串...
通过前面的学习可知,可以使用字符数组来存储字符串,也可以直接使用C++的string类型来存储字符串。但是如果要按行输入带有空格的字符串,只是简单地使用cin和scanf是不能实现的。 本小节重点研究字符串的输入,重点处理按行输入有空格的字...
使用字符数组来存储字符串,其实是C的做法,C++除了沿用这样的做法外,还引入了专门的数据类型string来处理字符串。string本质是类,所以有很多字符串处理方法。 因为string是C++中的类,而类是C++的高级用法,所以本节的内容有...
我们的第一个“Hello World”程序使用cout输出了"Hello World"这一句话其实就是字符串。字符串就是连续的字符“串”起来的一段文本,可以看成是若干有序的字符的集合。通过前面的学习,可知char数组就是若干有序的字符的集合...
据说著名犹太历史学家Josephus有过以下的故事:在罗马人占领乔塔帕特后,39 个犹太人与Josephus及他的朋友躲到一个山洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,41个人排成一个圆圈,由第1个人开始报数,...
给定一个的方阵,从右上角开始,依次用1、2、3、…按照蛇形填充方阵的每个方格。以为例,填充结果如下: 输入正整数(),输出方阵蛇形填充结果。 分析:要通过找规律的方式得出阵列第行第列的值太困难,可以通过模拟蛇形填充的过程将阵列每个方格的数填...