以下程序调用findmax函数返回数组中的最大值 findmax (inE *a,int n) { int*p,*s; for(p=a,s=a;p-a<n;p++) if(______)s=p; return(*S); } main() { int x[5]={12,21,13,6,18); printf("%d\n",findmax(x'5)); } 在下划线处应填入的是A.p>sB.*p>*sC.a[p]>a[s]D.p-a>p-s

题目

以下程序调用findmax函数返回数组中的最大值 findmax (inE *a,int n) { int*p,*s; for(p=a,s=a;p-a<n;p++) if(______)s=p; return(*S); } main() { int x[5]={12,21,13,6,18); printf("%d\n",findmax(x'5)); } 在下划线处应填入的是

A.p>s

B.*p>*s

C.a[p]>a[s]

D.p-a>p-s


相似考题
更多“以下程序调用findmax函数返回数组中的最大值findmax (inE *a,int n){int*p,*s; for(p=a,s=a;p-a< ”相关问题
  • 第1题:

    主程序调用findmax函数求出数组中最大元素在数组中的下标,括号中需填写的内容是 #include<stdio.h> findmax(int*s,int t,int*k) { int p; for(p=0,*k=p;p<t;p++)if(s[p]>s[*k])( );} main() { int a[10],i,k; for(i=0;i<10;i++)scanf("%d",&a[i]); findmax(a,10,&k); printf("

    A.k=p

    B.*k=p

    C.k=p-s

    D.*k=p-s


    正确答案:B

  • 第2题:

    下面函数返回数组中最大元素的下标,数组中元素个数为t,将程序补充完整。

    int findmax(int s[],int t) {

    int k,p;

    for(p=0,k=p;p<t;p++) {

    if 【 】

    k=p;

    }

    return k;

    }


    正确答案:(s[p]>s[k])
    (s[p]>s[k]) 解析:分析程序其他部分,k存放最大元素的下标。

  • 第3题:

    以下程序段是函数返回a所指数组中最小的值所在的下标值,请在下划线处填空。

    fun(int *a,int n)

    {

    int i,j=0,p;

    p=j;

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

    if(a[i]<a[p]) 【 】;

    return(p);

    }


    正确答案:p=i
    p=i

  • 第4题:

    以下程序调用findmax函数返回数组中的最大值 findmax(int *a,int n) { int *p,*s; for(p=a,s=a;p-a<n; p++) if (______)s=p; return(*s); } main() { int x[5]={12,21,13,6,18}; printf("%d\n",findmax(x,5)); } 在下划线处应填入的是( )

    A.p>s

    B.*p>*s

    C.a[p]>a[s]

    D.p-a>p-s


    正确答案:B

  • 第5题:

    主程序调用findmax函数求出数组中最大元素在数组中的下标,( )中需填写的内容是。 #include<stdio.h> findmax(int*s,int t,int*k) { int p; for(p=0,*k=p;p<t;p++)if(s[p]>s[*k])( );} main() { int a[10],i,k; for(i=0;i<10;i++)scanf("%d",&a[i]); findmax(a,10,&k); printf("%d%d\n" ,k,a[k]);}

    A.k=p

    B.*k=p

    C.k=p-s

    D.*k=p-s


    正确答案:B
    解析:数组元素可以通过数组首地址和下标的方式来引用,数组元素的下标是从0开始的,也可以将数组首地址赋给一个指针变量,通过指针和下标的方式来引用数组元素。注意:通过数组的首地址引用数组元素。

  • 第6题:

    以下程序调用findmax函数求数组中值最大的元素在数组中的下标,请选择填空:includefind

    以下程序调用findmax函数求数组中值最大的元素在数组中的下标,请选择填空: #include<stdio.h> findmax(int*s,int t,int*k) { int p; for(p=0,*k=p;p<t;p++) if(s[p]>s[*k])________; } main() { int a[10],i,k; for(i=0;i<10;i++)scanf("%d",&a[i]); findmax(a,10,&k); printf("%d,%d\n",k,a[k]); }

    A.k=p

    B.*k=p-s

    C.k=p-s

    D.*k=p


    正确答案:D
    解析:k是—个指针,它的值是—个地址,要通过它为主函数的变量改变数据,必须使用*p,边样就可以把—个下标数赋给p指针指向的那个内存单元,所以横线处应填入*k=p。

  • 第7题:

    以下函数返回a所指数组中最大值所在的下标值fun(int *a,int n){ int i,j=0,p; p=j; for(i=j;i<n;i++) if(a[i]>a[p])_________; return(p);}在下画线处应填入的内容是A.i=p B.a[p]=a[i] C.p=i D.p=j


    正确答案:C
    该题目所要求的是最大数的位置(下标),而不是最大数的数值。因此,在进行逐个比较的过程中,需要记录最大数的下标i。根据给出的程序可知,该下标记录在变量p中,所以,如果a[i]>a[p]这一关系成立,应该把i的值赋给p,这样才满足题目的要求。

  • 第8题:

    阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。

    [说明1]

    函数void fun(char*w,char x,int*n)用来在w数组中插入x,w数组中的数已按由小到大顺序存放,n指存储单元中存放数组中数据的个数,插入后数组中的数仍有序。

    [C函数1]

    void fun(char*W,char x,int*n)

    { int i,P;

    p=0;

    w[*n]=x;

    while(x>w[p]) (1) ;

    for(i=*n,i>p;i--)w[i]=(2);

    w[p]=x;

    ++*n;

    }

    [说明2]

    函数void revstr(char*s)将字符串s逆置。例如:字符串“abcde”,经过逆置后变为“edcba”。

    [C函数2]

    void revstr(char*s)

    { char*p,c;

    if(s==NULL)return;

    p=(3); /*p指向字符串s的最后一个有效字符*/

    while(s<p){ /*交换并移动指针*/

    C=*s;

    (4)=*p;

    (5)=c;

    }

    }


    正确答案:(1) p++ (2) w[i-1] (3) s+strlen(s)-1 (4) *s++或*(s++) (5) *p-或*(p--)
    (1) p++ (2) w[i-1] (3) s+strlen(s)-1 (4) *s++或*(s++) (5) *p-或*(p--) 解析:函数1的fun()中的while循环是为了找到x的插入位置,因此(1)填“p++”,for循环是移动数组中的元素,因此(2)填“w[i-1]”。
    对于函数2,设字符串的长度为n,则该函数的思想为将*(s+j)与*(s+n-1+i)对换,i=0....n/2。采用指针来实现,s为起始地址,p定位为最后一个字符的位置,所以空(3)应填“s+strlen(s)-1”;采用*s与*p交换后为s++与P--。即空(4)填“*s++”或“*(s++)”,空(5)填“*p-”或“*(p--)”。

  • 第9题:

    以下程序中,能够通过调用函数fun,使main函数中的指针变量p指向一个合法的整型单元的是

    A.main() { int *p; fun(p); … } int fun(int *p) { ints; p=&s;}

    B.main() { int *p; fun(&p); … } int fun(int **p) { int s; *p=&s;)

    C.#include main() { int *p; fun(&p); … } int fun(int **p) *p=(int*)malloc(2);}

    D.#include main() { iht *p; fun(p); … } iht fun(iht *p) { p=(int*)malloc(sizeof(int)); }


    正确答案:C
    解析:本题考核的知识点是指针变量作为函数的参数以及变量的作用域。在选项A中,main()函数中定义了一个指针变量p,调用fun()函数时把p传给形参p,在函数中让p指向局部变量s,由于函数调用返回后,局部变量s将被释放,因此无法实现让实参p指向一个整型单元,故选项A错误.选项B中实现的也是让实参p,指向一个在函数fun()定义的局部变量s,因此也是错误的;选项C在函数fun()中分配了两个字节的内存单元并把首地址赋值给形参p指向的变量,即main()函数的指针变量p中,由于整型变量占两个字节,因此,选项C是正确的;选项D在主函数中定义了一个指针地址变量p,并把指针变量的值传给形参变量p,在fun()函数分配了一个整型单元并把首地址赋值给行参指针变量p,由于C语言中变量作为参数是传值的,所以并没有改变对应实参指针变量的值,因此选项D也是错误的.所以,C选项为所选。

  • 第10题:

    以下函数返回a所指数组中最大值所在的下标值: fun(int *a,int n) { int i,j=0,p; p=j; for(i=j;i<n;i++) if(a[i]>a[p])______; return(p); } 在下划线处应填入的内容是( )。

    A.i=p

    B.a[p]=a[i]

    C.p=j

    D.p=i


    正确答案:D
    解析:该题目要求的是最大数的位置(下标)。程序通过对a所指数组中的元素进行逐个比较,记录最大数的下标i,并把该下标记录在变量p中,所以,如果a[i]>a[p]关系成立,应该把i的值赋给p,这样才满足题目的要求。

  • 第11题:

    单选题
    有以下程序: #include  main() {  int findmax(int,int,int),m;  …  m=findmax(a,b,c);  … } int findmax(int x,int y,int z) {  … } 则以下叙述正确的是(  )。
    A

    在main函数中声明了findmax函数

    B

    在main函数中定义了findmax函数

    C

    在main函数中两次调用了findmax函数

    D

    在main函数内、外重复定义了findmax函数


    正确答案: D
    解析:
    程序中函数findmax定义放在主函数之后,主函数中声明了findmax函数。“int findmax(int,int,int);”为函数声明,“m=findmax(a,b,c);”为函数调用,“int findmax(int x,int y,int z){}”为函数定义。B选项是在main函数外定义的findmax函数,错误。在main函数中,出现了一次findmax函数的声明和一次findmax函数的调用,不是两次调用,C选项错误。D选项在main函数内不是定义findmax函数而是声明findmax函数。答案选择A选项。

  • 第12题:

    单选题
    有以下程序#include struct S{ int n; int a[20];};void f(struct S *p){ int i,j,t; for(i=0;in-1;i++)  for(j=i+1;jn;j++)   if(p->a[i]>p->a[j])   {    t=p->a[i];    p->a[i]=p->a[j];    p->a[j]=t;   }}main(){ int i; struct S s = {10,{2,3,1,6,8,7,5,4,10,9}}; f(&s); for(i=0;i
    A

    1,2,3,4,5,6,7,8,9,10,

    B

    10,9,8,7,6,5,4,3,2,1,

    C

    2,3,1,6,8,7,5,4,10,9,

    D

    10,9,8,7,6,1,2,3,4,5,


    正确答案: A
    解析:
    将结构体变量的地址作为实参传递,函数调用可以修改实参结构体中成员的值。函数f的作用是,把p指向的struct中的数组a的元素按照从小到大的方式排序。答案选择A选项。

  • 第13题:

    以下程序中,能够通过调用函数fun,使main函数中的指针变量p指向一个合法的整型单元的是

    A.main( ) { int *p; fun(p); ┆ } int fun(int *p) { int s; p=&s;}

    B.main( ) { int *p; fun(&p); ┆ } int fun(int **p) { int s; *p=&s;}

    C.#include<stdlib.h> main( ) { int *p; fun(&p); ┆ } int fun(int **p) { *p=(int*)malloc(2);}

    D.#include<stdlib.h> main( ) { int *p; fun(p); ┆ } int fun(int *p) { p=(int*)malloc(sizeof(int));}


    正确答案:D

  • 第14题:

    以下程序的功能是:借助指针变量找出数组元素中最大值所在的位置并输出该最大值。请在输出语句中填写代表最大值的输出项。

    include<stdio.h>

    main( )

    {int a[10],*p,*S;

    for(p=a;p-a<10;p++)scanf(”%d”,p);

    for(p=a,s=a;p-a<10;p++)if(*p>*s)s=p;

    printf(”max=%d\n”,________);

    }


    正确答案:*s
    *s 解析:首先依次输入10个数,存入数组a中。循环语句依次查找数组的元素,当*P的值大于*s时,s=p即找到当前数组中最大值,然后再将其余元素与新的*S元素比较,最终求得最大值。所以填*s。

  • 第15题:

    以下程序调用findmax()函数返回数组中的最大值。请填空完成此函数。

    include〈iostream〉

    using namespace std;

    int findmax(int*a,int n)

    {

    int +p、*s;

    for(p=a,s=a;p-a〈n;p++)

    if(【 】)

    *s=*p;

    return(*S);

    }

    int main()

    {

    int x[5]={12,21,14,16};

    cout〈〈findmax(X,5)〈〈end1;

    return 0;

    }


    正确答案:*p>*s
    *p>*s 解析:函数findmax()的功能是找出数组中的最大值。在函数findmax()中,先定义两个整型指针p和s(指针s用于保存数组中的最大值,指针p用于指向数组的各个元素),并将指针p和s指向传入数组的首元素,然后通过for循环找出最大值。所以if语句的条件表达式应该为“*p*s”,即当p指向的元素值大于s所指向的元素值时,就把*p值保存在*s中。

  • 第16题:

    以下程序段中,能够通过调用函数fun(),使main()函数中的指针变量p指向一个合法的整型单元的是( )。

    A.main() {int*p; fun(p); … } int fun(int*p) {int s; p=&s; }

    B.main {int*p fun(&p); … } iht fun(int**p) {int s; *p=&s;}

    C.main() {int*p; fun(&p); } int fun(int**p) {*p=(int*)malloc(2);}

    D.main() {int*p; fun(p); } int fun(int*p) {p=(int*)malloc(sizeo(int));}


    正确答案:C
    解析:在选项A中,main()函数中定义了一个指针变量p,调用fun()函数时把p传给形参p,在函数中让p指向局部变量s,由于函数调用返回后,局部变量s将被释放,因此无法实现让实参p指向一个整型单元,故选项A错误。选项B中实现的也是让实参p,指向一个在函数fun()中定义的局部变量s,因此也是错误的;选项C在函数fun()中分配了两个字节的内存单元并把首地址赋值给形参p指向的变量,即main()函数的指针变量p中,由于整型变量占两个字节,因此,选项C是正确的;选项D在主函数中定义了一个指针地址变量p,并把指针变量的值传给形参变量p,在fun()函数中分配了一个整型单元并把首地址赋值给行参指针变量p,由于C语言中变量作为参数是传值的,所以并没有改变对应实参指针变量的值,因此选项D也是错误的。所以,C选项为所选。

  • 第17题:

    若有以下调用语句,则不正确的fun函数的首部是( )。 main() { … int a[50],n; … fun(n,&a[9]); … }

    A.void fun(int m,int x[])

    B.void fun(int s,int h[41])

    C.voidfun(int p,int*s)

    D.void fun(int n,iht a)


    正确答案:C
    解析:根据主函树中的函数调用可知,第一个实参为整型数据,第二个实参为整型数组中一个元素的地址值。因此函数fun()的第二个形参应该为一个指针,故应该选择C。实参不是将整个数组传递给形参,故选项A和B不正确;选项D的第二个形参的数据类型与实参的数据类型不符。

  • 第18题:

    以下函数findmax拟实现在数组中查找最大值并作为函数值返回,但程序中有错导致不能实现预定功能。

    #d越lie MIN-2147483647

    int findmax(int X[],int n)

    { int i,max;

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

    {max=MIN;

    if(max<x[i])max=x[i];}

    return max;

    }

    造成错误的原因是

    A.定义语句int i,max;中max未赋初值

    B.赋值语句max=MIN;中,不应给max赋MIN值

    C.语句if(max<x[i])max=X[i];中判断条件设置错误

    D.赋值语句max=MIN;放错了位置


    正确答案:D
    解析:对max赋初值,应该要放在循环语句之前,不然每次循环都将是从MIN开始比较。

  • 第19题:

    补充程序Ccon073.C,函数findmax返回数组中的最大元素。


    Printf("Themaxis%d\n",/**/findmax(a,10)/**/);
    Inti,/**/max=array[0]/**/

  • 第20题:

    主程序调用findmax函数求出数组中最大元素在数组中的下标,括号中需填写的内容是

    #include<stdio.h>

    findmax(int*s,int t,int *k)

    { int p;

    for(p=0, *k=p; p<t; p++)if(s[p]>s[*k])( ); }

    main()

    { int a[10],i,k;

    for(i=0; i<10;i++)scanf(" %d",&a[i]);

    findmax(a,10,&k);

    printf(" %d%d\n",k,a[k];) }

    A.k=p

    B.*k=p

    C.k=p-s

    D.*k=p-s


    正确答案:B
    解析:考查通过指针来引用一维数组的方法。数组元素可以通过数组首地址和下标的方式来引用,数组元素的下标是从0开始的,也可以将数组首地址赋给一个指针变量,通过指针和下标的方式来引用数组元素。 通过数组的首地址引用数组元素。

  • 第21题:

    以下程序调用fmdmax函数返回数组中的量大值: findmax(int *a,int n) { int *p,*s; for(p=a,s=a;p-a<n;p++) if(______)s=p; return(*s); } main() { int x[5]={12,21,13,6,18}; printf("%d\n",findmax(x,5)); } 在下划线处应填入的是( )。

    A.p>s

    B.*p>*s

    C.a[p]>a[s]

    D.p-a>p-s


    正确答案:B
    解析:在main()函数中定义了一个具有5个元素的x数组并赋初值,然后调用findmax()函数求数组中元素的最大值。调用时把数组元素x的首地址,传给了形参指针变量a,把5传给形参n。在函数findmax()中定义了两种指针变量p和s,其中。用来记录最大元素的地址,p作为循环控制变量,表示每个元素的地址。求最大值的算法是先将第一个元素(用s记下它的地址)做为最大值,然后用最大值(*s)与后面的每个元素比较(*p),若后面的元素大,则用s记下它的地址,所以下划线应填“*s*p”或“*p>*s”。所以,4个选项中B为所选。

  • 第22题:

    试题14

    以下程序调用fun函数把x中的值插入到a数组下标为k的数组元素中。主函数中,n存放a数组中数据的个数。请填空。

    #include <stdio.h>

    void fun(int s[], int *n, int k, int x)

    { int i;

    for(i=*n-1; i>=k; i- - ) s[ ___ ]=s[i];

    s[k]=x;

    *n=*n+______;

    }

    main()

    { int a[20]={1,2,3,4,5,6,7,8,9,10,11}, i, x=0, k=6, n=11;

    fun(a, &n, k, x);

    for(i=0; i<n; i++) printf(“%4d”,a[i]); printf(“\n”);

    }


    正确答案:
    试题14分析
    因为是把x中的值插入到a数组下标为k的数组元素中,所以首先要将k及其后的元素往后移一位,方法是s[i+1]=s[i],插入之后,因为多了一个元素,要将n中值增1。
    试题14答案
     【14】i+1
    【15】1

  • 第23题:

    单选题
    以下函数findmax拟实现在数组中查找最大值并作为函数值返回,但程序中有错导致不能实现预定功能。#define MIN -2147483647int fingmax (int x[],int n){ int i,max; for(i=0;i
    A

    定义语句int i,max;中,max未赋初值

    B

    赋值语句max=MIN;中,不应给max赋MIN值

    C

    语句if(max<x[i])max=x[i];中,判断条件设置错误

    D

    赋值语句max=MIN;放错了位置


    正确答案: A
    解析:
    本题中for循环中首先将MIN值赋值给max,然后用x[i]与max的值比较。每次都是将MIN值与x[i]值进行比较,所以无论x[i]的值是什么,都不会影响if的判断语句,max=x[i]始终执行。所以函数返回的是数组中最后一个元素的值。程序的错误在于max=MIN的位置,for循环之前应先执行max=MIN。所以答案选择D选项。