填空题
1. 请补充函数proc(),该函数的功能是:交换数组aa中最大和最小两个元素的位置,将结果依然保存在原数组中,其他元素位置不变。(注意:数组aa中没有相同元素)
例如,输入“10,20,30,40,50,60,70,80,90,56”,则输出“90,20,30,40,50,60,70,80,10,56”。
注意:部分源程序如下。
请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的横线上填入所编写的若干表达式或语句。
试题程序:
#include<stdlib.h>
#include<stdio.h>
#define M 10
void proc(int aa[])
{
int i,t;
int max=0,min=0;
for(i=0; i<M; i++)
{
if(______)
max=i;
if(______)
min=i;
}
t=aa[max];
______;
aa[min]=t;
}
void main()
{
int i;
int aa[M]={ 10,20,30,40,50,60,70,80,90,56};
system("CLS");
printf("\n***original list***\n");
for(i=0; i<M; i++)
printf("%4d",aa[i]);
proc(aa);
printf("\n***new list***\n");
for(i=0; i<M; i++)
printf("%4d",aa[i]);
}
【正确答案】
1、aa[max]<aa[i]
aa[min]>aa[i]
aa[max]=aa[min]
【答案解析】 要交换数组中最大和最小两个元素的位置,首先应该找到最大和最小两元素的位置。首先,将最大和最小两元素的位置初始化为0,然后,依次与后面的元素进行比较并改变位置,因此,空一处填“aa[max]<aa[i]”,空二处填“aa[min]>aa[i]”;找到最大和最小两元素的位置后进行交换,因此,空三处填“aa[max]=aa[min]”。