设存在函数 int sum(int,int)返回两个参数的和,若求20、45、100三个数的和,下列表达式不正确的是【 】A.int m=sum(20,45,100) ;B.int m=sum(sum(20,45),100);C.int m=sum(20,sum(45,100));D.int m=sum(45,sum(20,100));

题目

设存在函数 int sum(int,int)返回两个参数的和,若求20、45、100三个数的和,下列表达式不正确的是

【 】

A.int m=sum(20,45,100) ;

B.int m=sum(sum(20,45),100);

C.int m=sum(20,sum(45,100));

D.int m=sum(45,sum(20,100));


相似考题
更多“设存在函数 int sum(int,int)返回两个参数的和,若求20、45、100三个数的和,下列表达式不正确的是【 ”相关问题
  • 第1题:

    下列说法不正确的是

    A.int *fun();----fun是一个返回int指针的函数

    B.int (*fun)();---fun是一个返回int指针的函数

    C.int (*array[5])();----array是一个有5个元素的数组,每一个元素都是一个函数指针,指向一个返回int的函数

    D.int (*fun(int))(int);----fun是带有一个int参数的函数,返回值是一个函数指针,这个指针指向带有一个int参数并返回int的函数


    正确答案:B
    解析:该函数中fun是一个函数指针。指向一个返回int的函数。

  • 第2题:

    ( 8 )有如下的函数定义:

    int Xfun(int *a, int n){

    int x=*a;

    for(int *pa=a+1; pa<a+n; pa++)

    if(*pa>x) x=*pa;

    return x;

    }

    若执行了语句

    int x[5]={23,46,78,55,16};

    后,通过表达式 Xfun(x,5) 调用该函数,则得到的返回值为 【 8 】 。


    正确答案:

  • 第3题:

    设存在函数intmax(int,int)返回两参数中较大值,若求22,59,70三者中最大值,下列表达式不正确的是()

    A、intm=max(22,max(59,70));

    B、intm=max(max(22,59),70);

    C、intm=max(22,59,70);

    D、intm=max(59,max(22,70));


    参考答案:C

  • 第4题:

    请编写一个函数int fun (int nFirst, int nSecond),求两个数的最小公倍数并返回这个值。

    注意:部分源程序已存在文件test13_2.cpp中。如输入7和8时,结果是56。

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

    文件test13_2的内容如下;

    include<iostream.h>

    int fun(int nFirst,int nSecond);

    void main()

    {

    int nFirst,nSecond;

    cout<<"Please input the first one";

    cin>>nFirst;

    cout<<" Please input the second one";

    cin>>nSecond;

    cout<<"最小公倍数:"<<fun(nFirst,nSecond)<<endl;

    }

    int fun(int nFirst,int nSecond)

    {

    }


    正确答案:int fun(int nFirstint nSecond) { int nMaxnMin; if (nFirst>nSecond) { nMin = nFirst; nMin = nSecond; } else { nMax=nSecond; nMin=nFirst; } int nMod=nMax%nMin; while(nMod) { nMax=nMin; nMin=nMod; nMod=nMax%nMin; } int nMultiple=nFirst*nSecond/nMin; return nMultiple; }
    int fun(int nFirst,int nSecond) { int nMax,nMin; if (nFirst>nSecond) { nMin = nFirst; nMin = nSecond; } else { nMax=nSecond; nMin=nFirst; } int nMod=nMax%nMin; while(nMod) { nMax=nMin; nMin=nMod; nMod=nMax%nMin; } int nMultiple=nFirst*nSecond/nMin; return nMultiple; } 解析:本题考查的是考生利用基本的控制语句解决实际问题的能力。注意算法的设计,其中%是取余操作。

  • 第5题:

    请编写一个函数inline long sum(int n),用递归函数完成运算:sum(n)=1*1+2*2+…n*n,递归表达式为 sum(n)=sum(n-1)+n2。

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

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

    文件test10_2.cpp的内容如下:

    include<iostream.h>

    inline long sum(int n)

    {

    }

    void main()

    {

    int n;

    cout<<"输入n:";

    cin>>n;

    cout<<"结果为:"<<sum(n)<<endl;

    }


    正确答案:inline long sum(int n) { if(n==1) return 1; else return n*n+sum(n-1); }
    inline long sum(int n) { if(n==1) return 1; else return n*n+sum(n-1); } 解析:本题考查的是考生对递归函数掌握的熟练程度。递归的终止条件为n=1时,值为1。

  • 第6题:

    有如下的运算符重载函数定义:double operator+(int i,int k){return double(i+k);}但定义有错误,对这个错误最准确的描述是( )。

    A.#NAME?

    B.两个int型参数的和也应该是int型,而这里将+的返回类型声明为double

    C.没有将运算符重载函数声明为某个类的友元

    D.C++已经提供了求两个int型数据之和的运算符+,不能再定义同样的运算符


    正确答案:D
    解析:此题考查的是运算符的重载。c++语言规定,不能作为非成员函数重载的运算符有=、[]、()、->以及所有的类型转换运算符,故选项A)错误;运算符重载对返回值类型没有限制,故选项B)错误;C++并不强制要求非成员重载的运算符一定是某个类的友元,所以选项C)错误:题目中重载的“+”运算符的两个参数都是int类型,而C++已经提供了求两个血型数据之和的运算符+,编译器无法区分应该调用哪一个,所以应该选择选项D)。

  • 第7题:

    avg函数的功能是求整型数组中的前若干个元素的平均值,设数组元素个数最多不超过10,则下列函数说明语句错误的是

    A)int avg(jnt *a,int n.);

    B)int avg(int a[10],int n);

    C)int avg(int a,int n);

    D)int avg(int a[ ],int n);


    正确答案:C
    【答案】C
    【知识点】数组名作为函数参数的使用方法
    【解析】C语句中的两个形参均为整形变量不能接收数组元素中的值。

  • 第8题:

    下面的程序中定义了两个方法求自然数1~100的和。具体如下:int suml(int n);利用循环求1~n的和,int sum2(int n);利用递归方法求和1~n的和;在main()方法中调用这两个方法求1~100的和并显示。在程序的每条横线处填写一个适当的语句,使程序的功能完整。

    public class Sum{

    public static void main(String args[])

    {

    //1.调用suml(int n),求1~100的和

    System.out.println("1~100的和:"+sum1(100));

    //2,调用sum2(int n),求1~100的和

    System.out.println("1~100的和:"+sum2(100));

    }

    static int suml(int n)

    {

    int result=0;

    for(int i=1;i<=n;i++)

    ________________

    retrun result;

    }

    static int sum2(int n)

    {

    if(______________)

    return 1;

    else

    _____________

    }

    }


    正确答案:result+=i; n==1 return n+sum2(n-1);
    result+=i; n==1 return n+sum2(n-1); 解析:本题主要考查递归调用的算法及for循环语句的使用。解答本题的关键是热练掌握递归调用的算法及for循环语句的使用.在本题中,result+=i;语句的功能是累加求和,if(n==1)语句的功能是判断当n==1时,累加和为1,return n+sum2(n-1);语句的功能是递归调用sum2(int n)方法求和。

  • 第9题:

    编写函数int fun(int lim, int aa[MAX]),该函数的功能是求出小于或等于lim的所有素数并放在aa数组中,该函数返回所求出的素数的个数。

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

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

    试题程序:

    include<conio.h>

    include<stdio.h>

    define MAX 100

    int fun(int lim, int se[MAX])

    {

    }

    main()

    {

    int limit,i,sum;

    int aa[MAX];

    clrscr();

    printf("输入一个整数");

    scanf("%d",&limit);

    sum=fun(limit,aa);

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

    {

    if(i%10==0&&i!=0) /*每行输出10个数*/

    printf("\n");

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

    }

    }


    正确答案:int fun(int lim int aa[MAX]) { int ijk=0; for(i=2;i=lim;i++) /*求出小于或等于lim的全部素数*/ { for(j=2;ji;j++) if(i%j==0) break; if(j>=i) aa[k++]=i;; /*将求出的素数放入数组aa中*/ } return k; /*返回所求出的素数的个数*/ }
    int fun(int lim, int aa[MAX]) { int i,j,k=0; for(i=2;i=lim;i++) /*求出小于或等于lim的全部素数*/ { for(j=2;ji;j++) if(i%j==0) break; if(j>=i) aa[k++]=i;; /*将求出的素数放入数组aa中*/ } return k; /*返回所求出的素数的个数*/ } 解析:在做这道题时,我们只需掌握素数的基本算法就可以了,一般表示素数的方法如下:
    for (j=2;ji;j++)
    if(i%j==0) break;
    if(j>=i)

  • 第10题:

    本题定义了一个方法add(),用于求两个整形数的和。方法中有两个整形参数a和b,方法体中计算a和b的和sum,并将结果返回。程序中调用add()方法求整数24和34的和,并将结果打印输出。

    public class javal{

    public static void main(String[]args){

    int a=24,b=34;

    System.out.println(add(a,b));

    }

    public static int add( ){

    sum—a+b;

    }

    }


    正确答案:
    第1处:inta,intb第2处:intsum第3处:returnsum【解析】第1处是add方法的两个整型的形参;第2处是声明一个整型的变量sum;第3处是求得sum值后,返回sum。

  • 第11题:

    设存在函数int max(int,int)返回两参数中较大值,若求22,59,70三者中最大值,下列表达式不正确的是()。

    • A、int m = max(22,max(59,70));
    • B、int m = max(max(22,59),70);
    • C、int m = max(22,59,70);
    • D、int m = max(59,max(22,70));

    正确答案:C

  • 第12题:

    单选题
    设存在函数int max(int,int)返回两参数中较大值,若求22,59,70三者中最大值,下列表达式不正确的是()。
    A

    int m = max(22,max(59,70));

    B

    int m = max(max(22,59),70);

    C

    int m = max(22,59,70);

    D

    int m = max(59,max(22,70));


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

  • 第13题:

    ( 9 )下面的函数利用递归实现了求 1+2+3+ …… +n 的功能:

    int sum ( int n ) {

    if ( n==0 )

    return 0;

    else

    return n+sum ( n-1 ) ;

    }

    在执行 sum ( 10 )的过程中,递归调用 sum 函数的次数是【 9 】 。


    正确答案:

  • 第14题:

    ( 9 )有如下的函数定义:

    int Xfun(int x){

    int y=x;

    {int x=10; y+=x;}

    return x+y;

    }

    通过表达式 Xfun(5) 调用该函数,则得到的返回值为 【 9 】 。


    正确答案:

  • 第15题:

    设存在函数intmin(int,int)返回两参数中较小值,若求15,26,47三者中最小值,下列表达式中错误的是()

    A、intm=min(min(15,26),min(15,47));

    B、intm=min(15,26,47);

    C、intm=min(15,min(47,26));

    D、intm=min(min(47,26),16);


    参考答案:B

  • 第16题:

    请编写一个函数sum(int array[],int len),该函数返回数组array的所有整数元素的和,其中len为数组array的长度。

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

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

    程序输出结果如下:

    sum of array 15

    文件test34_2.cpp的内容如下:

    include <iostream.h>

    int sum(int array[],int len)

    {

    }

    void main()

    {

    static int a[5]-{1,2,3,4,5};

    int result=sum(a,5);

    cout<<"sum of array "<<result<<end1;

    }


    正确答案:int sum(int array[]int len) { int sum=0; for (int i=0;ilen;i++) sum=sum+array[i]; return sum; }
    int sum(int array[],int len) { int sum=0; for (int i=0;ilen;i++) sum=sum+array[i]; return sum; } 解析:本题主要考查考生对于数组访问和for循环语句的掌握。应该注意的是,长度为len的数组array的下标范围为0到 len-1,而不是从1到len,所以循环控制变量的初始值为0。

  • 第17题:

    有如下的函数定义:

    int Xfun(int*a,int n){

    int X*a;

    for(int*pa=a+1;pa if(*pa>x)x=*pa;

    retum x;

    }

    若在执行了语句:

    int x[5]=(23,46,78,55,16);

    后,通过表达式Xfun(x,5)调用该函数,则得到的返回值为______。


    正确答案:78。
    78。 解析:函数Xfun()的作用是找出最大的数。

  • 第18题:

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

    【函数2.1说明】

    递归函数sum(int a[], int n)的返回值是数组a[]的前n个元素之和。

    【函数2.1】

    int sum (int a[],int n)

    {

    if(n>0) return (1);

    else (2);

    }

    【函数2.2说明】

    有3个整数,设计函数compare(int a,int b,int c)求其中最大的数。

    【函数2.2】

    int compare (int a, int b, int c )

    { int temp, max;

    (3) a:b;

    (4) temp:c;

    }

    【函数2.3说明】

    递归函数dec(int a[],int n)判断数组a[]的前n个元素是否是不递增的。不递增返回 1,否则返回0。

    【函数2.3】

    int dec( int a[], int n )

    {

    if(n<=1) return 1;

    if(a[0]<a[1]) return 0;

    return (5);

    }


    正确答案:(1)a[n-1]+sum(an-1)或者a[0]+sum(a+1n-1); (2)return 0; (3)temp=(a>b)? (4)max=(temp>c)? (5)dec(a+1n-1);
    (1)a[n-1]+sum(a,n-1)或者a[0]+sum(a+1,n-1); (2)return 0; (3)temp=(a>b)? (4)max=(temp>c)? (5)dec(a+1,n-1); 解析:本题考查C语言函数和一些基本运算。
    下面我们分别来分析这几个函数。在函数2.1中,题目要求用此递归函数求数组前 n个元素之和。递归函数的特点是在函数体中不停地调用函数本身,只是将其函数的参数范围改变。题目中要求我们求数组前n个元素之和,我们可以这样理解,即前n个元素之和等于第n个元素加上前n-1个元素之和,现在的问题转化成如何求前n-1个元素之和。同样的道理,可以将求前n-1个元素之和转化成求前n-2个元素之和,直到这个数小于0。从函数2.1的代码中可以知道,在计算以前,首先判断n与0的关系,如果n小于0,说明数组中无元素,因此,返回0值;如果n大于等于0,说明数组中有元素,应该返回的结果是第n个元素加上前n-1个元素之和,而前n-1个元素之和是调用函数本身来计算的。因此,第(1)空和第(2)空的答案分别是a[n-1)+sum(a,n-1),return()。
    在函数2.2中,题目要求我们在三个数中取最大数,在数学中,我们从三个数中取最大数时,一般是首先拿其中两个数比较,取较大的数再与第三个数比较,再取其较大的数,这个数就是三个数中的最大数。从函数2.2的代码中知道,三个数a、b、c,两个整型变量temp与max。根据求三个数中最大数的数学过程和函数中已给出的代码可知,第(3)空处语句应该为temp=(a>b)?a:b,求得a、b中较大数并存放在变量temp中。第(4)空处语句为max=(temp>c)?temp:c。
    在函数2.3中,题目要求判断数组a[]的前n个元素是否是不递增的。不递增返回1,否则返回0。要判断前n个元素是否是不递增的,需要判断前n-1个元素是否是不递增的,以及第n个元素与第n-1个元素的关系。此处与函数2.1一样,用的都是递归函数,只是出口不同,在函数2.1中,只要数组中没有元素了,递归结束,这里只要第n个元素大于第n-1个元素,则返回0,递归结束。又由if(a[0]a[1])语句可知,在每次调用函数时,都将其数组中的第一个元素与第二个元素比较来作为递归的出口,如果结果为假,就说明数组的前面两项的关系是不递增的,在下次调用中不用再考虑第一项。因此第(5)空应该是dec(a+1,n-1)。

  • 第19题:

    请编写一个函数int sum(int n),该函数完成1+2+3+…+n的运算,并返回运算结果,其中n>0。注意:请使用递归算法实现该函数。

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

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

    文件test11_2.cpp的内容如下:

    include<iostream.h>

    int sum(int n)

    {

    }

    void main()

    {

    int n;

    cout<<"输入n:";

    cin>>n;

    int result;sum(n);

    cout<<"结果为:"<<result<<endl;

    }


    正确答案:int sum(int n) { if(n==1) return 1; else return n + sum(n-1); }
    int sum(int n) { if(n==1) return 1; else return n + sum(n-1); } 解析:本题考查的是考生对于递归函数的熟练应用。递归的终止条件为n=1时,返回值为1

  • 第20题:

    设函数findbig已定义为求3个数中的最大值。以下程序将利用函数指针调用findbig函数,请填空。main(){ int findbig(int,int,int); int (*f)(),x,y,z,big; f=; scanf("%d%d%d",&x,&y,&z); big=(*f)(x,y,z); printf("big=%d\n",big);}


    正确答案:findbig
    在main()函数中,int findbig();是对被调函数的说明,其功能是告诉系统在本函数中将用到该函数且返回整型值。int (*f)();说明f是一个指向函数的指针变量,此函数带回整型的返回值。赋值语句f=findbig;的作用是将函数findbig的入口地址赋给指针变量f,这时f就是指向函数findbig的指针变量。要注意的是,在给函数指针变量赋值时,只需给出函数名而不必给出参数,因为是将函数的入口地址赋给f,而不涉及实参与形参的结合问题。故本题答案为findbig。

  • 第21题:

    av9功能是求整形数组中的前若干个元素的平均值,设数组元素个数最多不超过则下列函数说明语句错误的是( )。

    A.int avg(int*a,int n);

    B.int avg(int a[lO],int n);

    C.int avg(int a,int n);

    D.int avg(int a[],int n);


    正确答案:C
    对于数组参数传递时C语言中内部都使用指针进行传递,而C选项中形参为两个int型的值,所以答案选择C。

  • 第22题:

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

    [说明1]

    函数int function(int a)的功能是判断指定的正整数是否为素数,若是,返回1,否则返回0。

    [C函数1]

    int function(int a)

    { int yes,i;

    i=2;yes=1;

    while(i<=a/2 && (1) ){

    if( (2) ) yes=0;

    i++;

    }

    return yes;

    }

    [说明2]

    函数int deleteARR(int*arr,intn)的功能是指定的有序数组压缩成各元素互不相同的有序数组,即相同数只保留一个,多余的被删除。函数返回值是互不相同的元素个数。

    [C函数2]

    int deleteARR(int*arr,int n)

    { int k,j;

    k=0;j=1;

    while(j<n){

    if( (3) )

    (4)=arr[j];

    j++;

    }

    return (5);

    }


    正确答案:(1) yes或yes==1或yes !=0 (2) a/i[*]i==a或a%i==0或!(a%i) (3) arr[k]!=arr[j] (4) arr[++k] (5) k+1或++k
    (1) yes或yes==1或yes !=0 (2) a/i[*]i==a或a%i==0或!(a%i) (3) arr[k]!=arr[j] (4) arr[++k] (5) k+1或++k 解析:对于函数1,增加了一个判断的标志yes,开始进入素数判别循环时置yes=1,则(1)应填“yes”或“yes==1”或“yes !=0”;一旦数n能被某个不等于零的真因子整除,退出循环,则(2)应填“a/i[*]i==a”或“a%i==0”或“!(a%i)”。
    对于函数2,用k记录数组arr[]中不同元素的个数,同时设置工作指针j,将arr[j]与已得到的互不相同元素的最后一个元素进行比较,若不相等,则将其作为已比较的互不相同元素的最后一个元素,所以(3)填“arr[k]!=art[j]”,(4)填“arr[++k]”。最后返回互不相同的元素个数k+1,即(5)填“k+1”或“++k”。

  • 第23题:

    单选题
    avg函数的功能是求整型数组中的前若干个元素的平均值,设数组元素个数最多不超过10,则下列函数说明语句错误的是(  )。
    A

    int avg(int *a,int n);

    B

    int avg(int a[10],int n);

    C

    int avg(int a,int n);

    D

    int avg(int a[],int n);


    正确答案: C
    解析:
    C项,函数第一个形参的数据类型是int型,只能传递单个整型数值。而a表示整型数组的首地址,不能直接传递给它,因此不符合题目要求,声明不正确。答案选择C选项。