下列给定程序中,函数fun的功能是:把数组中的元素按“最小、最大、次小、次大……’’的顺序排列。 例如,若a所指数组中的数据最初排列为:1、2、3、4、5、6、7、8、9;则按规则移动后,数据排列为:1、9、2、8、3、7、4、6、5。形参n中存放a

admin2017-11-24  30

问题 下列给定程序中,函数fun的功能是:把数组中的元素按“最小、最大、次小、次大……’’的顺序排列。   
例如,若a所指数组中的数据最初排列为:1、2、3、4、5、6、7、8、9;则按规则移动后,数据排列为:1、9、2、8、3、7、4、6、5。形参n中存放a所指数组中数据的个数。  
规定fun函数中的max存放当前所找的最大值,px存放当前所找最大值的下标。
请在程序的下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。
注意:部分源程序在文件BLANK1.C中。不得增行或删行,也不得更改程序的结构!
#include
#define N 9
void fun(int a[].int n)
{int i,j,max,min,px,pn,t;
for(i=0;i<n一i;j+=2)
{
/**********found**********/
max=min=【1】
px=pn=i;
for(j=i+1;j<n;j++){
/**********found**********/
if(max<【2】)
{max=a[j];px=j;}
/**********found**********/
if(min>【3】)
{max=a[j];pn=j;}
}
if(pn!=i),
{t=a;a=min;a[pn]=t;
if(px==i)px=pn;
}
if(px!=i+1)
{t=a[i+1];a[i+1]=max;a[px]=t;}
}
}
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);
printf(’’\n’’);
fun(b,N);
printf(’’\nThe data after moving:h\n’’);
for(i=0;i<N;i++)printf(’’%4d’’,b);
printf(’’\n’’);
}  

选项

答案1.a[i]; 2.a[j]; 3.a[j];

解析 填空1:for循环语句循环体中将数组元素a赋值给变量max和变量min。
填空2:通过一次for循环,找到数组中的最大值,if语句的条件表达式是max<a[j]。
填空3:同理,此处if语句的条件表达式是min>a[j]。
求最大值或者最小值的题目,一般都是假设一个元素最大或最小,然后通过if条件语句将该元素和其他元素进行比较操作来完成。
转载请注明原文地址:https://kaotiyun.com/show/ccID777K
0

相关试题推荐
最新回复(0)