用指针作函数参数,编程序求一维数组中的最大和最小的元素值。#define N 10main(){ void maxmin(int arr[],int *pt1,int *pt2,int n);int array[N]={10,7,19,29,4,0,7,35,-16,21},*p1,*p2,a,b;p1=&a; p2=&b;maxmin(array,p1,p2,N);printf("max=%d,min=%d",a,b);}void maxmin(int arr[],int *pt1,int *pt2,i

题目

用指针作函数参数,编程序求一维数组中的最大和最小的元素值。

#define N 10

main()

{ void maxmin(int arr[],int *pt1,int *pt2,int n);

int array[N]={10,7,19,29,4,0,7,35,-16,21},*p1,*p2,a,b;

p1=&a; p2=&b;

maxmin(array,p1,p2,N);

printf("max=%d,min=%d",a,b);

}

void maxmin(int arr[],int *pt1,int *pt2,int n)

{ int i;

*pt1=*pt2=arr[0];

for(i=1;i<N;I++)

{ if(arr[i]>*pt1) (9) ;

if(arr[i]<*pt2) (10) ;

}

}


相似考题
参考答案和解析
正确答案:
4.(9) *ptr1=arr[i] (10) *ptr2=arr[i]
更多“用指针作函数参数,编程序求一维数组中的最大和最小的元素值。#define N 10main(){ void maxmin( ”相关问题
  • 第1题:

    请编一个函数void fun( int tt[M][N], int pp[N], tt指向一个M行N列的二维数组,求出二维数组每列中最大元素,并依次放入pp所指的一维数组中。二维数组中的数已在主函数中给出。

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

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

    试题程序:

    include <conio.h>

    include <stdio.h>

    define M 3

    define N 4

    void fun(int tt[M][N],int pp[N])

    {

    }

    main()

    {

    int t[M] [N]={{68,32,54,12},{14,24,88,

    58},{42, 22, 44, 56}};

    int p[N],i,j,k;

    clrscr();

    printf("The riginal data is:\n");

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

    {

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

    printf("%6d",t[i][j]);

    printf("\n");

    }

    fun(t,p);

    printf("\nThe result is:\n");

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

    printf("%4d",p[k]);

    printf("\n");

    }


    正确答案:void fun(int tt[M][N]int pp[N]) { int iimax; for(j=0;jN;j++) { max=tt[0][j]; /*假设各列中的第一个元素最大*/ for(i=0;iM;i++) if(tt[i][j]>max) /*如果各列中的其他元素比最大值大则将这个更大的元素看作当前该列中最大元素*/ max=tt[i][j]; pp[j]=max; /*将各列的最大值依次放入pp数组中*/ } }
    void fun(int tt[M][N],int pp[N]) { int i,i,max; for(j=0;jN;j++) { max=tt[0][j]; /*假设各列中的第一个元素最大*/ for(i=0;iM;i++) if(tt[i][j]>max) /*如果各列中的其他元素比最大值大,则将这个更大的元素看作当前该列中最大元素*/ max=tt[i][j]; pp[j]=max; /*将各列的最大值依次放入pp数组中*/ } } 解析:本题中函数的功能是求出二维数组中每列的最大元素。首先,假设各列中的第一个元素最大,然后利用行标值的移动来依次取得各列中其他元素的值,并与假设的最大值进行比较,如果遇到更大的,则把这个更大的元素看做当前该列中最大的元素,继续与该列中其他元素比较。

  • 第2题:

    请编写一个函数void fun(int p[],int n,int c),其中数组p的元素按由小到大的顺序排列,其元素个数为n。函数fun()的功能是将c插入到数组p中,且保持数组的升序排列。

    注意:部分源程序已存在文件PROC9.cpp中。

    请勿修改主函数和其他函数中的任何内容,仅在函数fun()的花括号中填写若干语句;

    文件PROC9.cpp的内容如下:

    //PROC9.cpp

    include <iostream>

    include <string>

    using namespace std;

    define M 30

    void fun(int p[ ],int n,int c);

    int main ()

    {

    int pp[M],n,i;

    int fg, c;

    cout<<"Please input n:\n";

    cin>>n;

    cout<<"Please input the n data:\n";

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

    cin>>pp [i];

    cout<<"Please input c:\n";

    cin>>c;

    fun (pp, n, c);

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

    cout<<pp [i] << " " ;

    cout<<end1;

    return 0;

    }

    void fun(int p[ ],int n, int c)

    {

    //* * * * * * * * *

    }


    正确答案:

  • 第3题:

    若有函数 void fun(double a[]。int*n) {…} 以下叙述中正确的是( )。

    A.调用fun函数时只有数组执行按值传送,其他实参和形参之间执行按地址传送

    B.形参a和n都是指针变量

    C.形参a是一个数组名,n是指针变量

    D.调用fun函数时将把double型参数组元素一一对应地传送给形参a数组


    正确答案:B
    本题考查函数中数组和指针的传值,数组a[]在参数传递时,是传递的数组a的首地址,所以形参a和n都是指针变量。。

  • 第4题:

    若有函数

    Void fun( double a[ ],int *n)

    { …… }

    以下叙述中正确的是

    A)调用fun函数时只有数组执行按值传送,其他实参和形参之间执行按地址传送

    B)形参a和n都是指针变量

    C)形参a是一个数组名,n是指针变量

    D)调用fun函数时将把double型实参数组元素一一对应地传送给形参a数组


    正确答案:C
    【答案】C
    【知识点】函数参数传递
    【解析】a是形参数组的名字,接收从调用函数中传过来的实参数组的首地址,n是指针变量。

  • 第5题:

    请编写一个函数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,由于它们都是指针变量,所以要引用它所指向的变量时要对它进行指针运算,也即*号运算。

  • 第6题:

    程序定义了M×M的二维数组,并在主函数中自动赋值。请编写函数proc(int a[][M],int n),该函数的功能是使数组左下半三角元素中的值加上n。例如,a数组中的值为:

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

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

    试题程序:


    正确答案:


    【解析】使数组左下半三角元素中的值加上n,首先要找出数组中下半三角元素。数组中下半三角元素的特点是,其列下标小于等于行下标。根据这个特点找出所有的下半三角元素再加上n放在原来的位置上。

  • 第7题:

    下面是一个对整数数组A中的前n个元素求最小值的C程序,函数返回最小元素的位置。 Int minValue(int A[],int n){ int k=0: for(int j=1;j<=n-1;j++) if(A[j]<a[k])k=j; return k: 当n=4时,程序中可能的执行路径数为______。

    A.2

    B.4

    C.8

    D.16


    正确答案:B
    解析:当N=4时,程序中的循环一共执行三次,这样就有三个判定结点,所以需要四个基本的测试用例。

  • 第8题:

    编写程序,求10元素字数组LIST中绝对值最小的数,存入MIN单元。


    正确答案: DATA SEGEMNT
    LIST DW -56,+12,88,-126,-5,16,32,-99,72,-18
    MIN DW ?
    MINABS DW ?
    DATA ENDS
    CODES EGMENT
    ASSUME CS:CODE,DS:DATA
    START:
    MOV AX,DATA
    MOV DS,AX
    MOV AX,LIST
    MOV MIN,AX;将数组第一个元素假设为绝对值最小的数
    MOV MINABS,32767;最小的绝对值假设为32767
    LEA SI,LIST
    MOV CX,10
    AGAIN:
    MOV AX,[SI]
    CMP AX,0
    JGE SKIP1
    NEG AX;求绝对值
    SKIP1:
    CMP AX,MINABS;绝对值与假设的最小绝对值比较
    JGE SKIP2;假设的绝对值较小,跳过
    MOV MINABS,AX;保存新的最小绝对值
    MOV AX,[SI];取出新的绝对值最小的数
    MOV MIN,AX;保留新的绝对值最小的数
    SKIP2:
    ADD SI,2
    LOOP AGAIN
    MOV AX,4C00H
    INT 21H
    CODEENDS
    END START

  • 第9题:

    若数组名作实参而指针变量作形参,函数调用实参传给形参的是()

    • A、数组的长度
    • B、数组第一个元素的值
    • C、数组所有元素的值
    • D、数组第一个元素的地址

    正确答案:D

  • 第10题:

    单选题
    若有函数: void fun(double a[],int *n) {......} 以下叙述中正确的是(  )。
    A

    调用fun函数时只有数组执行按值传送,其他实参和形参之间执行按地址传送

    B

    形参a和n都是指针变量

    C

    形参a是一个数组名,n是指针变量

    D

    调用fun函数时将把double型实参数组元素一一对应地传送给形参a数组


    正确答案: C
    解析:
    A项,用数组名(指向数组首元素的一个指针常量)作为实参可以实现实参和形参之间执行按地址传送;B项,形参a是一个数组名,是指针常量而不是变量;D项,调用fun函数时只是将实参数组的首地址传送给形参a。答案选择C选项。

  • 第11题:

    单选题
    以下函数的功能是:通过键盘输入数据,为数组中的所有元素赋值。#include #define N 10void fun(int x[N]){ int i=0; while(i
    A

    x+i

    B

    &x[i+1]

    C

    x+(i++)

    D

    &x[++i]


    正确答案: A
    解析:
    划线处需要完成两个功能:①给x[i]元素赋值;②i变量加一。A项错误,仅能对x[0]赋值,且会是程序陷入死循环;B项错误,仅能对x[1]赋值,程序陷入死循环;D项错误,不能实现为x[0]赋值,而且还会导致数组越界。答案选择C选项。

  • 第12题:

    问答题
    编一个程序,定义一个n行n列的二维数组,例如,n=4,输入该数组的全部数据。可以在定义数组时赋于常量值。求二维数组中这样元素的位置:它在行上是最小,在列上也是最小。

    正确答案: intn=4;
    int[,]a={{25,12,22,14},{15,16,17,18},{19,20,21,13},{23,24,11,26}};
    inti,j,k,temp,min;
    Console.Write("/n二维数组:");
    for(i=0;i{
    Console.Write("/n/t");
    for(j=0;j}
    Console.WriteLine("/n/n行列最小值");
    for(i=0;ifor(j=0;j{
    temp=a[i,j];
    min=temp;
    /*
    for(k=0;k{
    if(a[i,k]if(a[k,j]}
    */
    for(k=0;kif(a[i,k]for(k=0;kif(a[k,j]if(temp==min)Console.WriteLine("i={0},j={1}{2}",i,j,temp);
    }
    解析: 暂无解析

  • 第13题:

    请补充main函数,该函数的功能是:把一维数组中的元素逆置。结果仍然保存在原数组中。

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

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

    试题程序:

    include <stdio.h>

    define N 10

    main ( )

    {

    int i, j, t;

    int bb[N];

    clrscr ();

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

    bb[i]=i;

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

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

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

    for(【 】; j<=i;【 】)

    {

    t=bb [j ];

    bb [j ] =bb [i];

    bb[i]=t;

    }

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

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

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

    }


    正确答案:j=0--I j++i-
    j=0,--I j++,i-, 解析:第一空:逆置一维数组元素的思路是,将第一个元素与最后一个元素对调,将第二个元素与倒数第二个元素对调,依此类推,直到中间的元素。所以第一次执行循环时,第一个元素的下标为0,最后一个元素的下标为N-1,而此时i等于N,故要将i减1。第二空:每执行一次循环,顺方向元素向后移动一个,反方向元素向前移动一个,故下标j要加1,下标i要减1。

  • 第14题:

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

    End Sub


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

  • 第15题:

    以下程序中,函数 sumColumM的功能是:求出M行N列二维数组每列元素中的最小值,并计算它们的和值。和值通过形参传回主函数输出。请填空。

    define M 2

    define N 4

    void SumColumMin(int a[M][N],int *sum)

    { int i,j,k,s=0;

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

    { k=0;

    for(j=1;j<M;j++)

    if(a[k][i]>a[j][i])k=j;

    s+=【 】;

    }

    【 】 =s;

    }

    main( )

    { int x[M][N]={3,2,5,1,4,1,8,3},s;

    SumColumMin(【 】);

    printf("%d\n",s);

    }


    正确答案:a[k][i] *sum x[M][N]&s
    a[k][i] *sum x[M][N],&s 解析:本题中if(a[k][I] >a [j] [I]) k=j;把一列中值较小的一个元素的索引存储到k中,所以[18]填[k] [i],[19]填返回值,右值为整型,所以应该填。sum,SnmColumMin(  )函数第一个参数为数组a[M][N],第二个参数为一个整型指针,所以[20]填x[M][N],&s。

  • 第16题:

    以下函数的功能是:通过键盘输入数据,为数组中的所有元素赋值。

    #include<stdio.h>

    #define N 10

    void fun(int x[N])

    {int i=0;

    while(i<N)scanf(“%d”,_______);

    }

    在程序中下划线处应填入的是

    A.x+i

    B.&x[i+1]

    C.x+(i++)

    D.&x[++i]


    正确答案:C

  • 第17题:

    请编写一个函数void fun(int a [],int n),其中a为数组,n为数组a的长度。函数fun()的功能是冒泡排序法将数组a元素按从小到大的顺序排列,实现数组a的升序排列。

    注意:部分源程序已存在文件PROC12.cpp中。

    请勿修改主函数和其他函数中的任何内容,仅在函数fun()的花括号中填写若干语句。

    文件PROC12.cpp的内容如下:

    //PROC12. cpp

    include <iostream>

    using namespace std;

    define MAX 100

    void fun(int a[],int n);

    int main ()

    {

    int a[MAX],n,i;

    cout<<"Please enter the array size n:\n";

    do {

    cin>>n;

    if (n>100)

    cout<<"array size flowover! ReEnter a number(0-100)\n";

    }while (n>100);

    cout<<"Enter the array data:\n";

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

    cin>>a [ii;

    fun(a[],n);

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

    cout<<a [i] <<" ";

    cout<<end1;

    return 0;

    }

    void fun(int a[ ],int n)

    {

    // * * * * * * * *

    }


    正确答案:

  • 第18题:

    请编一个函数void proc(int tt[M][N],int pp[N]),tt指向一个M行N列的二维数组,求出二维数组每行中最大元素,并依次放入pp所指的一维数组中。二维数组中的数已在主函数中给出。

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

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

    试题程序:


    正确答案:


    【解析】按照题目中要求,求出二维数组每行中最大元素,并依次放入pp所指的一维数组中。首先比较二维数组中每一行的元素,然后找出每一行中的最大元素,放入一维数组pp中,最后返回到主函数当中。

  • 第19题:

    有关数组名作为函数参数说法错误的是()。

    • A、用数组名作为函数参数时,要求形参和实参类型相同
    • B、用数组名作为函数参数时,实参传给形参的是数组的首地址
    • C、用数组名作为函数参数时,实参将数组各元素的值传给形参
    • D、用数组名作为函数参数时,实参和形参共享同一数组

    正确答案:C

  • 第20题:

    编一个程序,定义一个n行n列的二维数组,例如,n=4,输入该数组的全部数据。可以在定义数组时赋于常量值。求二维数组中这样元素的位置:它在行上是最小,在列上也是最小。


    正确答案: intn=4;
    int[,]a={{25,12,22,14},{15,16,17,18},{19,20,21,13},{23,24,11,26}};
    inti,j,k,temp,min;
    Console.Write("/n二维数组:");
    for(i=0;i{
    Console.Write("/n/t");
    for(j=0;j}
    Console.WriteLine("/n/n行列最小值");
    for(i=0;ifor(j=0;j{
    temp=a[i,j];
    min=temp;
    /*
    for(k=0;k{
    if(a[i,k]if(a[k,j]}
    */
    for(k=0;kif(a[i,k]for(k=0;kif(a[k,j]if(temp==min)Console.WriteLine("i={0},j={1}{2}",i,j,temp);
    }

  • 第21题:

    函数viodfun(doublea[],int*n){………}叙述中正确的是()。()

    • A、调用fun函数时只有数组执行按值传送,其他实参和形参之间执行按地址传送
    • B、形参a和n都是指针变量
    • C、形参a是一个数组名,n是指针变量
    • D、调用fun函数时将把double型实参数组元素一一对应地传送给形参a数组

    正确答案:C

  • 第22题:

    单选题
    若数组名作实参而指针变量作形参,函数调用实参传给形参的是()
    A

    数组的长度

    B

    数组第一个元素的值

    C

    数组所有元素的值

    D

    数组第一个元素的地址


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

  • 第23题:

    单选题
    若有函数声明:void fun(float array[],int*ptr);以下叙述正确的是(  )。
    A

    函数参数array,ptr都是指针变量

    B

    函数参数array不是指针变量,ptr是指针变量

    C

    调用函数时,实参数组的值将一一复制给array数组

    D

    调用函数时,array是按值传送,ptr是按地址传送


    正确答案: D
    解析:
    数组名为数组的首地址,也是指向数组的指针,所以array和ptr都是指针,A项正确,B项错误。调用函数时,将实参数组首地址赋给指针array,而不是传递整个数组元素,C项错误。调用函数时,array与ptr都是按地址传送的,D项错误。答案选择A选项。