编写程序求含有N个元素一维数组的最大值、最小值及它们的下标。要求:数组元素的输入、求最大值最小值及它们的下标通过函数实现,结果在主函数中输出。

题目

编写程序求含有N个元素一维数组的最大值、最小值及它们的下标。要求:数组元素的输入、求最大值最小值及它们的下标通过函数实现,结果在主函数中输出。


相似考题
更多“编写程序求含有N个元素一维数组的最大值、最小值及它们的下标。要求:数组元素的输入、求最大值最小值及它们的下标通过函数实现,结果在主函数中输出。”相关问题
  • 第1题:

    阅读以下说明和流程图,回答问题将解答填入对应栏。

    [说明]

    本流程图实现采用递归函数来求一个整数数组中从元素0到元素n中的最小值。该算法思想是这样的,首先我们假设有一个求数组中最小元素的函数,然后,在求某一具有n的元素的数组的最小值时,只要求将前n-1的元素的最小值与第n个元素比较即可。不断地重复这一过程,直到数组中只剩下一个元素,那么它必定是最小值。

    注:int min(int X,int y)为返回两数中最小数的函数。

    int minInArray(int a[],int n)为返回数组中最小数的函数。

    minA为数组中最小值。

    [问题l]

    将流程图的(1)~(4)处补充完整。

    [问题2]

    min()函数的定义为(5)。


    正确答案:(1) minInArray(an); (2) 1; (3) minA=a[n-1]; (4) minA=min(minInArray(an-1)a[n]); (5) xy?x:y;
    (1) minInArray(a,n); (2) 1; (3) minA=a[n-1]; (4) minA=min(minInArray(a,n-1),a[n]); (5) xy?x:y; 解析:本题目考查流程图。
    题目是利用递归来求数组中的最小值,则一定是反复的调用一个求数组最小值的函数,直到比较数组中最后只剩下两个数,则(1)中填入的应是“minlnArray(a,n)”,然后,判断n的值是否为1,如果是,则说明数组中只有一个数,则它一定就是最小值,可以直接输出,所以(2)应填入“1”,(3)应填入“minA=a[n]”;如果n的值不是1,则说明要继续递归,则再次调用求数组最小值的函数,把数组前n-1项的最小值同第n项做比较,所以(4)填入“minA=min(minInArray(a,n-1),a[n])”,由于min()是一个比较函数,返回两数中较小的数,我们可以用三元运算符直接定义为x y?x:y。

  • 第2题:

    下面程序的功能是:用Array函数建立一个含有8个元素的数组,然后查找并在文本框Textl中输出该数组中各元素的最小值。请填空。

    End Sub


    正确答案:
    arrl(1)Min=arrl(i)【解析】本题考查VBA中程序设计的知识。对于这个问题,需要把数组元素依次与最小值比较,如果比当前的最小值还小,则让这个数组元素成为新的最小值,然后继续比较,直至数组元素都比较一遍为止。由于比较的循环从2开始,显然是预先设置最小值为数组的第一个元素即arrlfl);在比较循环内部如果符合If语句的条件,则让这个数组元素成为新的最小值,即Min=arrl(i)。

  • 第3题:

    请编写一个函数fun(),它的功能是:找出一维数组元素中最大的值和它所在的下标,最大值和它所在的下标通过形参传回。数组元素中的值已在主函数中赋予。

    主函数中x是数组名,n是x中的数据个数,max存放最大值,index存放最大值所在元素的下标。

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

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

    试题程序:

    include<stdlib.h>

    include<stdio.h>

    void fun(int a[],int n, int *max,int *d)

    {

    }

    main()

    {

    int i, x[20], max, index, n=10;

    randomize();

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

    {

    x[i]=rand()%50;

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

    /*输出一个随机数组*/

    }

    printf("\n");

    fun(x,n,&max,&index);

    printf("Max=%5d,Index=%4d\n",max,index);

    }


    正确答案:void fun(int a[]int nint *maxint *d) { int i; *max=a[0]; *d=0; for(i=0;in;i++) /*将最大的元素放入指针max所指的单元最大元素的下标放入指针d所指的单元*/ if(*maxa[i]) {*max=a[i];*d=i;} }
    void fun(int a[],int n,int *max,int *d) { int i; *max=a[0]; *d=0; for(i=0;in;i++) /*将最大的元素放入指针max所指的单元,最大元素的下标放入指针d所指的单元*/ if(*maxa[i]) {*max=a[i];*d=i;} } 解析:该程序直接使用形参max和d,由于它们都是指针变量,所以要引用它所指向的变量时要对它进行指针运算,也即*号运算。

  • 第4题:

    将文件in.dat中的200个整数读至数组XX中。请编制js Vralue函数,要求:求出数组XX中的数值为奇数的个数cnt1和数值为偶数的个数cnt2以及数组xx下标为偶数(包括下标为0的元素)的元素值的算术平均值pj。 结果cnt1,cnt2,pJ输出到out.dat中。注意:部分源程序存在test.c文件中。请勿改动数据文件in.dat中的任何数据、主函数main、读函数readdat和输出函数writeDatj的内容。


    正确答案:
    【审题关键句】读入数值,奇数个数,偶数个数,数组下标为偶数的平均值。
    【解题思路】
    ①首先定义循环变量i,并对全局变量cnt1、cnt2和pj赋初值0。
    ②在for循环语句中,将数组xx中的每个数组元素xx[i]对2求余数,如果余数非零,则说明xx[i]是奇数,奇数的个数变量cntl加1,否则,偶数的计数变量cnt2加1;接着将数组XX下标i对2求余,如果余数等于0,则把xx[i]的值累加到变量pj。
    ③退出循环时,变量pJ的值除以100.0就得到数组xx下标i为偶数的元素值的算术平均值pj(因为数组中共有200令数组,下标为奇偶数的元素各占一半,因此直接将累加变量pJ的值直接除100即可得到这些数的平均值)。
    【参考答案】

  • 第5题:

    编程,找出长度为10\的数组中,数组元素的最大值和最小值,并输出。


    答案:public class a{public static void main(String[] args){double x[]={25.3,56.3,15.3,125.25,465.36,456.32,458.21,456.325,4856.3215,41.6};double max=x[0];int i;for(i=0;i<10;i++){ if (max<=x[i])max=x[i];}double min=x[0];int j;for(j=0;i<10;i++){ if (min>=x[j])min=x[j];}System.out.println("最大数是"+max);System.out.println("最小数是"+min);}}

  • 第6题:

    求函数 的最大值与最小值


    答案:
    解析:

  • 第7题:

    使用一维整型数组可以完成的功能不包含()

    • A、求和及平均值
    • B、求最大及最小值
    • C、对数组元素排序
    • D、数组整体引用

    正确答案:D

  • 第8题:

    设有n阶对称矩阵A,用数组s进行压缩存储,当i≥j时,A的数组元素aij相应于数组s的数组元素的下标为()。(数组元素的下标从1开始)


    正确答案:i(i-1)/2+j

  • 第9题:

    一维数组可以实现的功能包含()

    • A、求和
    • B、求平均值
    • C、最大值
    • D、最小值

    正确答案:A,B,C,D

  • 第10题:

    冒泡排序对一维数组进行从大到小排序,一趟排序后会将数组中的()排到最后

    • A、最大值
    • B、最小值
    • C、下标最大的值
    • D、下标最小的值

    正确答案:B

  • 第11题:

    一个有符号字数组以0为结束标志,求这个数组的:最大值、最小值、平均值。


    正确答案: DATASEGEMNT
    LIST DW -56,+12,88,-126,-5,16,32,-99,72,-18,0
    MIN DW ?
    MAX DW ?
    AVG DW ?
    DATA ENDS
    CODESEGMENT
    ASSUME CS:CODE,DS:DATA
    START:
    MOV AX,DATA
    MOV DS,AX
    MOV MIN,32767;将32767假设为最小的数
    MOV MAX,-32768;将-32768假设为最大的数
    MOV AVG,0;AVG用作累加器,清零
    LEA SI,LIST
    MOV CX,0
    AGAIN:
    MOV AX,[SI]
    CMP AX,0
    JZ DONE;找到零元素,转DONE结束处理
    INC CX;纪录非零元素个数
    ADD AVG,AX;累加
    CMP AX,MIN
    JGE SKIP1
    MOV MIN.AX;比预设最小值还小,保留
    SKIP1:
    CMP AX,MAX
    JLE SKIP2
    MOV MAX,AX;比预设最大值还大,保留
    SKIP2:
    ADD SI,2
    JMP AGAIN
    DONE://JCXZNULL;元素个数为零,转NULL处理
    MOV AX,AVG
    CWD
    IDIV CX
    MOV AVG,AX;计算平均值
    JMP EXIT
    NULL:MOV MIN,0;元素个数为0,将“最大值”、“最小值”
    MOV MAX,0;“平均值”清零
    MOV AVG,0
    EXIT:MOV AX,4C00H
    INT 21H
    CODEENDS
    END START

  • 第12题:

    填空题
    设有n阶对称矩阵A,用数组s进行压缩存储,当i≥j时,A的数组元素aij相应于数组s的数组元素的下标为()。(数组元素的下标从1开始)

    正确答案: i(i-1)/2+j
    解析: 暂无解析

  • 第13题:

    线性规划标准型的目标函数是()。

    A、求最大值

    B、求最小值

    C、求最大值和最小值

    D、求最大值或最小值


    参考答案:D

  • 第14题:

    下面函数的功能是找出一维数组元素中最大的值和它所在的下标,最大值的和它所在的下标通过形参传回。#include <stdlib.h>#include <stdio.h>void fun(int a[ ],int n,int *max,int *d){ int i; *max=a[0]; *d=0; for(i=0;;i++) if(*max<) { *max=a[i];*d=i; }}


    正确答案:i<n,a[i]
    在本题中,fun函数的功能是找出一维数组元素中最大的值和它所在的下标,最大的值和它所在的下标通过形参传回。要通过形参传回值,那么需要采用的传值方式是传址传值法,即传递地址,指针或数组能实现传址传值。
    在程序中,fun函数带了四个形参变量,其中数组a是需要被处理的一维数组,n是数组中元素的个数,指针变量max和d分别用于返回最大值和下标。
    在程序体中,定义一个循环变量i,并给指针变量max和d进行赋初值操作,然后执行for循环,从程序中很明显地能看出,第12空所处的位置正是for循环的结束条件,结合题目的要求,我们不难推断出这个循环的作用是找出数组中最大的元素及其下标,那么循环结束的条件是遍历完数组中的元素,即循环变量i小于数组中元素的个数,用表达式表示为i<n。
    第13空是一个条件判断语句的条件部分,条件如果成立,则将当前数组的元素值赋给*max,并用*d记录当前值的数组下标。结合题目的要求,我们不难推断出该条件判断语句的作用是判定当前最大值max与所取数组元素的大小。因此,本空处需要填写的内容是a[i]。

  • 第15题:

    类 myArray定义如下:

    public class myArray

    {

    static int[] a = {21,42,16,31,23,47,35};

    public void sortArray() //对数组从小到大进行排序

    { …… }

    public int getMax() //返回最大的数组元素

    { …… }

    public int getMin() //返回最小的数组元素

    { …… }

    public float getAverage() //返回所有数组元素的平均值

    { …… }

    public static void main(String[] args)

    { myArray myarray = new myArray();

    myarray.sortArray();

    System.out.println(myarray.getMax());

    System.out.println(myarray.getMin());

    System.out.println(myarray.getAverage());

    }

    在 main 方法中实现了数组元素最大值、最小值和平均值的输出。请编程实现 sortArray()、 getMax()、 getMin()、

    getAverage()四个方法。

    提示:排序完成以后,最大值即为最后一个数组元素,最小值为第一个数组元素。

    请在 jsp 网页中利用脚本计算1*2*3*……*10 的值并输出。


    正确答案:
      

  • 第16题:

    以下程序调用fun函数求数组中最大值所在元素的下标。

    在横线处应填入的内容是

    A.*k=i

    B.k=i

    C.*k=i-s

    D.k=i-s


    正确答案:A
    fun函数的功能是求数组中最大值所在元素的下标。通过for循环语句,每次将最大的数给*k,即*k=i。因此A选项正确。

  • 第17题:

    试题三(共15分)

    阅读以下说明和C函数,回答问题 l和问题 2,将解答填入答题纸的对应栏内。

    【说明】

    对于具有n个元素的整型数组a,需要进行的处理是删除a中所有的值为 0的数组元素,并将a中所有的非 O元素按照原顺序连续地存储在数组空间的前端。下面分别用函数CompactArr_v1 和CompactArr v2来实现上述处理要求,函数的返回值为非零元素的个数。 函数CompactArr_vl(int a[],int n)的处理思路是:先申请一个与数组a的大小相同的动态数组空间,然后顺序扫描数组a的每一个元素,将遇到的非O元素依次复制到动态数组空间中,最后再将动态数组中的元素传回数组a中。

    函数CompactArr_v2(int a[],int n)的处理思路是:利用下标i(初值为 0)顺序扫描数组a的每一个元素,下标k(初值为0)表示数组 a中连续存储的非0元素的下标。扫描时,每遇到一个数组元素,i就增 1,而遇到非 0元素并将其前移后k才增 1。

    【问题1】 (12分)

    请根据说明中函数CompactArr_v1的处理思路填补空缺(1)~(3),根据CompactArr_v2的处理

    思路填补空缺(4)。

    【问题2】(3分)

    请说明函数CompactArr vl存在的缺点。


    正确答案:
    试题三参考答案(共 15分)
    【问题 1】 (12分)
    (1) sizeof(int) (3分)
    若考生解答为一个正整数,则给 2分
    (2)temp[k++] 或*(temp+k++)或等价表示 (3分)
    (3) ik 或等价表示 (3分)
    (4)a[k++] 或*(a+k++)或等价表示 (3分)
    【问题 2】(3分)
    可能由于动态内存申请操作失败而导致函数功能无法实现,时间和空间效率低。
    注:考生仅回答出运行速度慢则给 2分,其他含义相同的描述可给满分或酌情给分。

  • 第18题:

    根据函数原型"int MM(int a[],int m)",编写函数定义,计算并返回数组a[m]中元素最大值和最小值之差。

  • 第19题:

    Excel中包括下列哪些函数()。

    • A、求最大值的函数MAX
    • B、求和函数SUM
    • C、求平均值的函数AVERAGE
    • D、求最小值函数MIN

    正确答案:A,B,C,D

  • 第20题:

    avg分组函数的作用是()。

    • A、求平均值
    • B、求最大值
    • C、求最小值
    • D、求累积和

    正确答案:A

  • 第21题:

    若有定义:inta[10];,使用数组元素时,下标的最小值是1,最大值是10。


    正确答案:错误

  • 第22题:

    数组中元素的最大值就是下标最大的那个数组元素无需进行比较


    正确答案:错误

  • 第23题:

    问答题
    一个有符号字数组以0为结束标志,求这个数组的:最大值、最小值、平均值。

    正确答案: DATASEGEMNT
    LIST DW -56,+12,88,-126,-5,16,32,-99,72,-18,0
    MIN DW ?
    MAX DW ?
    AVG DW ?
    DATA ENDS
    CODESEGMENT
    ASSUME CS:CODE,DS:DATA
    START:
    MOV AX,DATA
    MOV DS,AX
    MOV MIN,32767;将32767假设为最小的数
    MOV MAX,-32768;将-32768假设为最大的数
    MOV AVG,0;AVG用作累加器,清零
    LEA SI,LIST
    MOV CX,0
    AGAIN:
    MOV AX,[SI]
    CMP AX,0
    JZ DONE;找到零元素,转DONE结束处理
    INC CX;纪录非零元素个数
    ADD AVG,AX;累加
    CMP AX,MIN
    JGE SKIP1
    MOV MIN.AX;比预设最小值还小,保留
    SKIP1:
    CMP AX,MAX
    JLE SKIP2
    MOV MAX,AX;比预设最大值还大,保留
    SKIP2:
    ADD SI,2
    JMP AGAIN
    DONE://JCXZNULL;元素个数为零,转NULL处理
    MOV AX,AVG
    CWD
    IDIV CX
    MOV AVG,AX;计算平均值
    JMP EXIT
    NULL:MOV MIN,0;元素个数为0,将“最大值”、“最小值”
    MOV MAX,0;“平均值”清零
    MOV AVG,0
    EXIT:MOV AX,4C00H
    INT 21H
    CODEENDS
    END START
    解析: 暂无解析

  • 第24题:

    多选题
    Excel中包括下列哪些函数()。
    A

    求最大值的函数MAX

    B

    求和函数SUM

    C

    求平均值的函数AVERAGE

    D

    求最小值函数MIN


    正确答案: A,C
    解析: 暂无解析