1、 写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果。两个整数由键盘输人
解法一:该题直接使用“试数法”来求解最大公约数和最小公倍数
最大公约数找出两数中的最小值,然后直接相模,当能够同时被两数整除时则为最大公约数。
最小公倍数找出两数中的最大值,然后直接进入死循环,直到找到一个数能够同时被两数整除时,则为最小公倍数
再将这两部分分别用两个函数实现封装,注意在main函数里要记得声明
GCD,LCM是最大公约数和最小公倍数的首字母缩写
代码及运行结果如图:
解法二:利用“辗转相除法”和公约数和公倍数定理解题
最小公倍数 = 两数之积 / 最大公约数
2、写一个判素数的函数
素数是一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做素数
该题可以使用概念直接判断法求解,不过不需要判断所有的数据,只需要判断数据的一半即可
为什么?
因为只要一个数,我们对它左边的一半随意找一个数能把这个数除尽,右边一定也可以
右边一半数相当于都是左边一半的二倍
我们把中位数前的一半数称为第一段,后一半称为第二段;我们仔细分析之后可以发现:
第二段数均小于中位数的二倍,而能被除1外数字整除,这个除数最小是2,因此我们知道如果中位数前都没有满足除1外的除数能把这个数整除,那么我们后半段就不会再出现除数了。
3、写一个函数,使给定的一个3X3的二维整型数组转置,即行列互换
进行数组的行列互换,其关键在于数组互换的表达式ar[i] [j] = ar[j] [i];其次在循环的时候,内层循环不能到达最大列,需要根据此时是第几行的交换来决定循环的次数,否则有可能数组行列交换之后最后又交换回原来的形状了。
4、写一个函数,输人一个4位数字,要求输出这4个数字字符,但每两个数字间空一个空格。如输人1990,应输出“1 9 9 0”。
对字符串进行遍历输出,每输出一个字符,后面就跟着输出一个空格,关键点在于如果输出的是最后一个字符,则不能再输出字符,所以要对是否是最后一个字符的输出进行判断。
5、用递归方法求n阶勒让德多项式的值,递归公式为
递归函数的设计,有一个点非常重要,那就是必须要有返回条件,,此题中的返回条件即为 n==0 和n==1时,因为当 n 为这两值时,程序直接返回相应的值,只有 n>=1 时,才进行递归运算。
N-S图如下:
后记:
●由于作者水平有限,文章难免存在谬误之处,敬请读者斧正,俚语成篇,恳望指教!
——By 作者:天空の乌托邦