2014年推免上机 C语言

共4题,每题10分。

1 使用欧几里德算法,求给定两个整数的最大公约数。这个算法通过反复的用较小的整数去除较大的整数,并且用余数来代替较大的整数,将一个正整数对(m,n)转换为数队(d,0)。当余数为0时,在数对中的另一个非0的数就是最初的两个数(也是所有的中间数对)的最大公约数。例如,如果m=532,n=112,则欧几里德算法通过下面的过程将数对(532,112)减少为(28,0):(532,112)——(112,84)——(84,28)——(28,0),因此,28就是532和112的最大公约数。

2 编写一个函数,用辗转相除法将一个十进制数转换为二进制、八进制和十六进制数,该函数的原型如下: void Transform(int n,int base);其中,n为十进制数,base为进制的基数。(测试数据 n=97)

3 在主程序中提示输入整数n,编写函数用递归的方法求1 + 2 + … + n的值。(测试数据n=100)

4 编写并测试以下函数:
void rotate(int a[],int n,int k);该函数“旋转”数组a的前n个元素,将其右边k个元素(如果k为负值,则取左边的-k个元素)移动到数组的开始位置。例如,数组a=20,30,40,50,60,70,80,90},则调用rotate(a,8,3)将把数组a变为{70,80,90,20,30,40,50,60},而调用rotate(a,8,-5)的结果与上面相同。





相关文档
最新文档