请补充函数fun(),该函数的功能是;交换数组aa中最大和最小两个元素的位置,结果依然保存在原数组中,其它元素位置不变。注意数组aa中没有相同元素。例如,输入“33,67,42,58,25,76,85,16,41, 56”,则输出“33,67,42,58,25,76,16,85,41,56”。注意;部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。试题程序:include <stdio. h>define N 10void fun(i

题目

请补充函数fun(),该函数的功能是;交换数组aa中最大和最小两个元素的位置,结果依然保存在原数组中,其它元素位置不变。注意数组aa中没有相同元素。

例如,输入“33,67,42,58,25,76,85,16,41, 56”,则输出“33,67,42,58,25,76,16,85,41,56”。

注意;部分源程序给出如下。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。

试题程序:

include <stdio. h>

define N 10

void fun(int aa[])

{

int i, j, t;

int max=0, min=0;

for(i=0; i<N; i++)

{

if(【 】)

max=i;

if(【 】)

min=i;

}

t=aa [max];

【 】;

aa [min] =t;

}

main()

{

int i;

int aa [N] ={33, 67, 42,58,25, 76, 85,16, 41, 56};

clrscr ();

printf("\n*** original list ***\n");

for(i=0; i<N; i++)

printf ("%4d", aa [i] );

fun (aa);

printf ("\n*** new list ***\n");

for(i=0; i<N; i++)

printf ("%4d", aa [i]);

}


相似考题
更多“请补充函数fun(),该函数的功能是;交换数组aa中最大和最小两个元素的位置,结果依然保存在原数组中 ”相关问题
  • 第1题:

    请补充函数fun(),该函数的功能是:把数组aa中元素下标为偶数的元素按从小到大重新保存在原数组中,其它元素位置不变。

    例如,输入“33,67,42,58,25,76,85,16,41, 56”,则输出“25,67,33,58,41,76,42,16,85,56”。

    注意:部分源程序给出如下。

    请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。

    试题程序:

    include<s tdio. h>

    define N 10

    void fun(int aa[])

    {

    int i, j, t;

    for (i=0; i<N;i=i+2)

    {

    for(【 】; j<N; j=j+2)

    if (【 】)

    {

    t=aa [j];

    aa [j] =aa [i];

    aa [i] =t;

    }

    }

    }

    main ()

    {

    int i;

    int aa[N]={33, 67,42, 58, 25, 76, 85, 16,

    41, 56};

    clrscr ();

    printf("\n*** original list ***\n");

    for(i=0; i<N; i++)

    printf ("%4d", aa [i] );

    fun (aa);

    printf("\n*** new list ***\n");

    for(i=0; i<N; i++)

    printf ("%4d", aa [i] );

    }


    正确答案:j=i或j=i+2 aa[i]>aa[j]
    j=i或j=i+2 aa[i]>aa[j] 解析:第一空:本题采用选择法进行排序。选择法的算法思路是:如果有n个数则从头到倒数的第2个数一个一个往后走动,每走动一个数总是将这个数与其后的所有数进行两两比较,在比较时按题目要求的顺序将进行比较的这两个数排序 (即交换)。所以此空填j=i,而填j=i+2也可以,因为如果第一次执行循环体时j=i,则aa[i]和aa[j]是同一个元素,不会引起任何改变,所以可以从它的下一次循环刀:始,即j=i=2。第二空:两两比较时,如果后面的元素比前面的元素小,则将两数交换,实现从小到大排列。

  • 第2题:

    程序定义了NxN的二维数组,并在主函数中自动赋值。请编写函数fun,函数的功能是:使数组右上三角元素中的值乘以m。

    例如:若m的值为2,a数组中的值为:

    注意:部分源程序存在文件PROGl.C文件中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。


    正确答案:
    解析:该程序功能是使数组右上半三角元素中的值乘以m。本题中首先要确定右上角半角元素的特点,然后对元素逐个进行乘以m的操作。其中,右上角的元素是行下标小于等于列下标的元素。

  • 第3题:

    附加改错题:阅读程序,fun函数功能是:交换数组a中最大和最小两个元素的位置,结果依然保存在原数组中,其他元素的位置不变。注:数组中没有相同元素。 程序运行结果示例: original list: 44 55 62 42 35 52 78 95 66 73 new list: 44 55 62 42 95 52 78 35 66 73


    double fun(int m) { double t=1.0; int i; for(i=2;i<=m;i++) t+=1.0/i; return t; }

  • 第4题:

    请编写函数fun,其功能是:找出2×M整型二维数组中最大元素的值,并将此值返回调用函数。 注意:部分源程序在文件PROGl.C中。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。


    正确答案:


    【考点分析】
    本题考查:求数组的最大值,需要运用循环语句,因为数组是二维数组,所以应使用二层for循环嵌套。使用for循环语句时需要注意循环变量的取值范围。
    【解题思路】
    此类求最大值或最小值的问题,我们可以采用逐个比较的方式,要求对数组中所有元素遍历一遍,并且从中找出数组最大值或最小值。首先定义变量max存放数组中的第一个元素的值,然后利用for循环逐个找出数组中的元素,并与max比较,如果元素值大于max,则将该值赋予max,循环结束后max的值即为数组最大值,最后将该值返回。
    【解题宝典】
    该类题目考查较多,要掌握逐行比较的方法。对于m*n二维数组,如采用逐行查找方法,代码实现为:


  • 第5题:

    程序定义了NxN的二维数组,并在主函数中赋值。请编写函数fun,函数的功能是:求出数组周边元素的平均值并作为函数值返给主函数中的s。

    例如:a数组中的值为:

    则返回主程序后s的值应为:3.375。

    注意:部分源程序存在文件PROGl.C文件中。

    请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。


    正确答案:
    解析:该程序功能是求出数组周边元素的平均值。其中周边元素是指第一行的元素的行下标为0,或者第n行的元素行下标为n-1,或者第一列元素的元素列下标为0,或者第n列的元素的列下标为n-1。