填空题 1.  下列给定程序中,函数fun的功能是:把形参a所指数组中的最小值放在元素a[0]中,接着把a所指数组中的最大值放在a[1]元素中;再把a所指数组元素中的次小值放在a[2]中,把a所指数组元素中的次大值放在a[3],依此类推。
    例如,若a所指数组中的数据最初排列为:9,1,4,2,3,6,5,8,7;则按规则移动后,数据排列为:1,9,2,8,3,7,4,6,5。形参n中存放a所指数组中数据的个数。
    规定fun函数中的max存放当前所找的最大值,px存放当前所找最大值的下标。
    请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。
    注意:部分源程序给出如下。
    不得增行或删行,也不得更改程序的结构!
    试题程序:
    #include<stdio.h>
    #define N 9
    void fun(int a[], int n)
    {  int i, j, max, min, px, pn, t;
    for (i=0; i<n-1; i+=2)
    {
    /********found********/
    max=min=______;
    px = pn = i;
    for (j = i+1; j<n; j++)  {
    /********found********/
    if (max<______)
    {  max=a[j]; px=j; }
    /********found********/
    if (min>______)
    {  min=a[j]; pn= j; }
    }
    if (pn! =i)
    {t=a[i]; a[i]=min; a[pn]=t;
    if (px==i)px =pn;
    }
    if (px! =i+1)
    {  t=a[i+1]; a[i+1]= max;
    a[px]=t; }
    }
    }
    void main()
    {  int b[N]={9,1,4,2,3,6,5,8,7),i;
    printf("\nThe original data :\n");
    for (i=0; i<N; i++)
    printf("%4d", b[i]);
    printf("\n");
    fun(b,N);
    printf("\nThe data after moving:\n");
    for (i=0; i<N; i++)
    printf("%4d", b[i]);
    printf("\n");
    }
  • 1、
【正确答案】 1、(1)a[i]    (2)a[j]    (3)a[j]    
【答案解析】[考点]
   本题考查:数组的引用;if语句条件表达式,如果表达式的值为真,则执行下面的语句,如果该值为假,则不执行下面的语句。
   
   填空1:for循环语句循环体中将数组元素a[i]赋值给变量max和变量min。
   填空2:通过一次for循环,找到数组中的最大值,if语句的条件表达式是max<a[j]。
   填空3:同理,此处if语句的条件表达式是min>a[j]。
   求最大值或者最小值的题目,一般都是先假设一个元素最大或最小,然后通过if条件语句将该元素和其他元素进行比较操作来完成。