更多“有以下程序int fun1(double a){return a*=a;}int fun2(double x,double y){double a=0,b=0;a=fun ”相关问题
  • 第1题:

    有以下程序 int fun1 (double a){return a*=a;} int fun2 (double x,double y) { double a=0,b=0; a=fun1(x);b=fun1(y); return(int)(a+b); } main() {double w;w=fun2(1.1,2.0);......} 程序执行后变量W中的值是______。

    A.5.21

    B.5

    C.5

    D.0


    正确答案:C
    解析:此题考核的是数值类型的定义与强制转换。本题在进行调用函数fun2()时,又对函数fun1()进行了调用,由于函数 fun1()定义为整型,所以第一次调用fun1()时返回的值为1,然后再将1赋值给a,此时由于a为double型,则系统自动类型转换,将1转换成了1.000000赋值给了变量a,以此类推,得b的值为4.000000,然后诵过“return(int)(a+b);”将a+b的值强制转换为int型5返回给主函数,此时又由w的类型为double,所以返回的整型值5又被转换为double型。故输出结果为5.0。

  • 第2题:

    若同时定义了下列四个选项格式的函数和模板,fun(8,3.1)调用的是()

    A.template<class T1,class T2)fun(T1,T2)

    B.fun(double,int)

    C.fun(double,int)

    D.fun(double,char)


    template

  • 第3题:

    变量dx、dy和dz的声明和初始化如下: double dx = (double) x; double dy = (double) y; double dz = (double) z; 若float和double分别采用IEEE 754单精度和双精度浮点数格式,sizeof(int)=4,则对于任意int型变量x、y和z,以下哪个关系表达式是永真的?

    A.dx*dx >= 0

    B.(double)(float) x == dx

    C.dx+dy == (double) (x+y)

    D.(dx+dy)+dz == dx+(dy+dz)

    E.dx*dy*dz == dz*dy*dx

    F.dx/dx == dy/dy


    B

  • 第4题:

    若主函数有变量定义:int x=1 ; double y=2.3 ; 且有合法的函数调用语句f (y , x); 则下列关于函数f的原型声明中一定错误的是 。

    A.void f(double, int);

    B.int f(int , int);

    C.int f(double, double);

    D.void f(double, int, int);


    void f(double, int, int);

  • 第5题:

    变量dx、dy和dz的声明如下: double dx = (double) x; double dy = (double) y; double dz = (double) z; 已知float和double分别采用IEEE 754单精度和双精度浮点数格式,sizeof(int)=4,对于任意int型变量x、y和z,以下哪些C语言关系表达式是非永真的?

    A.dx*dx >= 0

    B.(double)(float) x == dx

    C.dx+dy == (double) (x+y)

    D.(dx+dy)+dz == dx+(dy+dz)

    E.dx*dy*dz == dz*dy*dx

    F.dx/dx == dy/dy


    (double)(float) x == dx;dx+dy == (double) (x+y);dx*dy*dz == dz*dy*dx;dx/dx == dy/dy