一、实训目的
1.进一步明确函数在程序设计中的重要作用,掌握利用函数编写程序的方法。
二、实训内容
1.编写一个用字符数组作为形参的函数statistics,该函数的功能是统计并输出字符串中大写字母的个数。编写程序调用该函数,对随机输入的字符串统计所包含的大写字母个数。
提示与分析:
①用字符数组str[],作为统计大写字母个数的函数形参。在该函数的函数体中,需要定义两个整型变量。其中的一个将作为循环变量,另一个的初始值为0,将用来存放大写字母的个数。函数体中使用循环语句,用来统计数组中存放的大写字母个数(当数组的元素值界于'A'与'Z'之间时,该元素值为大写字母)。
②在主函数中定义了字符数组s,并使用了库函数gets()随机输入字符串并将字符串存入到数组s中。用该数组名字作为实参调用函数statistics。
③库函数gets()包含在string.h的内部。
2.已知计算x的n次幂的函数如下:
编写调用该函数,计算2的5次幂的程序。
提示与分析:
①因为函数power的形参为两个整型变量,所以采用值传递方式调用该函数的两个实参的类型、顺序要与形参一致。函数power中的return语句,将该函数值返回到主函数中。
②编写的主函数中,需要定义两个整型变量,并分别赋初值2和5。调用函数power时,要用它们作为实参将2传递给形参x,将5传递给形参n。主函数中用“printf();”输出函数power的返回值。
③如果主函数位于函数power的上方,则在主函数中还应有函数power的说明语句。
3.编写fun函数,其功能是计算一个矩阵主对角线元素的和。调用该函数计算并输出已知矩阵的主对角线元素和。
提示与分析:(www.xing528.com)
函数fun的形参是整型二维数组,函数体内定义两个整型变量,一个标识循环语句中的循环变量,另一个标识矩阵主对角线元素的和。使用循环语句计算矩阵主对角线上元素值的和并用return语句返回函数值。
4.用递归方法编写函数sum(),其功能是返回前n个自然数的和。并编写程序使用该函数输出前n个自然数的和。
提示与分析:
①在调用一个函数的过程中又出现直接或间接地调用该函数本身,称为函数的递归调用。一个递归的问题可以分为“回推”和“递推”两个阶段。
②本问题是在调用函数sum的过程中直接调用函数sum本身。其第一阶段“回推”,是将计算前n个自然数的和表示为计算前n-1个自然数和的函数(sum(n)=n+sum(n-1)),而前n-1个自然数和仍然不知道,还要“回推”到计算前n-2个自然数和……,直到计算前1个自然数的和。此时,sum(1)已知为1,不必再向前推了。然后开始第二阶段“递推”,采用递推方法,从前1个自然数的和为1推算出前2个自然数的和为3,从前2个自然数和为3推算出前3个自然数的和为6……,一直推算出前n个自然数的和为止。
③通常的一个递归过程不是无限制进行下去,必须具有一个结束递归过程的条件,本问题的前1个自然数的和sum(1)=1,就是使递归结束的条件。
④在主函数体内,用“scanf();”随机从键盘给正整数n赋值,该语句后,用n作为调用函数sum的实参。
5.楼梯有n阶台阶,上楼可以一步上1阶,也可以一步上2阶,用调用函数的方法编写程序,计算共有多少不同的走法。
提示与分析:
①有1阶台阶时,只有1种走法:一步上1阶。
有2阶台阶时,有2种走法:一步上1阶;一步上2阶。
……
②有n阶台阶时,有f(n)种走法,可以分两种情况。
●最后1步是迈1阶,那么前n-1阶的走法数是f(n-1)。
●最后1步是迈2阶,那么前n-2阶的走法数是f(n-2)。得到如下的递推公式:
③可以编写递归函数来实现。该函数的形参为整型变量,函数体内使用分支语句。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。