1、程序填空题
1、下列给定的程序中,函数fun()的功能是:求出以下分数序列的前n项和。
2/1,3/2,5/3,8/5,13/8,21/13,…
其值通过函数值返回main()函数。例如,若输入n=5,则应输出8.391667。
[注意] 部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。
[试题源程序]
#include<stdio.h>
#include<conio.h>
double fun(int n)
{
int a=2, b=1, c, k;
double[ (1) ];
for(k=1; k<=n; k++)
  ……此处隐藏1978个字…… ;从小到大”的顺序排序,这类题目都可以用选择排序法,即从后N个比较过程中,选择一个最小的与第一个元素交换,以此类推,即用第二个元素与后N-1个进行比较,并进行交换。
错误1:此处错误比较明显,p=j后面应加分号。
错误2:根据选择排序法的思路,此处应将i赋给p。
3、程序设计
3、void fun(int *w, int p, int n)
{
int i, J, t;
for(i=p; i<=n-i; i++)
{
t=w[n-1];
for(j=n-2; j>=0; j--)
w[j+1]=w[j];
w[0]=t;
}
}
[解析] 本题可以采用“循环右移”的算法。