35、一个交换两个浮点数的函数swap,并在主函数中调用这个 函数进行两个浮点数的交换,但结果未正确输出,只修改哪一行代码来使程序正确()。 Void swap(float a,float b) { float temp=a; a=b; b=temp; } void main() { float a=1,b=2; swap (a, b ); }A.第1行B.第2行C.第6行D.第7行

题目

35、一个交换两个浮点数的函数swap,并在主函数中调用这个 函数进行两个浮点数的交换,但结果未正确输出,只修改哪一行代码来使程序正确()。 Void swap(float a,float b) { float temp=a; a=b; b=temp; } void main() { float a=1,b=2; swap (a, b ); }

A.第1行

B.第2行

C.第6行

D.第7行


相似考题
更多“35、一个交换两个浮点数的函数swap,并在主函数中调用这个 函数进行两个浮点数的交换,但结果未正确输出,只修改哪一行代码来使程序正确()。 Void swap(float a,float b) { float temp=a; a=b; b=temp; } void main() { float a=1,b=2; swap (a, b ); }”相关问题
  • 第1题:

    下列程序的招待结果是【 】。 include float temp;float & fn2(float r){ temp=r*

    下列程序的招待结果是【 】。

    include <iostream. h>

    float temp;

    float & fn2(float r)

    {

    temp=r* r* 3.14;

    return temp;

    }

    void main( )

    {

    float a=fn2(5.0);

    float& b=fn2(5.0)

    b=20;

    cout<<temp<<end1;

    }


    正确答案:20
    20 解析:本题考察全局变量和引用的综合使用。在主函数中,b实际上是temp的一个引用。因此在给b赋值20的时候,输出的temp就是20。

  • 第2题:

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

    [说明]

    编写一个函数,输入为偶数时,调用函数求1/2+?/+…+1/n,当输入n为奇数时,调用函数1/1+1/3+…+1/n (利用指针函数)。

    [函数]

    include "stdio. h",

    main()

    {

    float peven (),podd (),dcall ();

    float sum;

    int n;

    while (1)

    {

    scanf("%d",&n);

    if (n>1)

    break;

    }

    if(n%2==0)

    {

    printf("Even="):

    (1);

    }

    else

    {

    pfinff("Odd=");

    (2);

    }

    printf("%f",sum);

    }

    float peven (int n)

    {

    float s;

    int i

    s=1;

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

    (3);

    return (s);

    }

    float podd (n)

    int n;

    {

    float s;

    int i;

    s=0;

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

    (4);

    return (s);

    }

    float dcall(fp,n)

    float (*fp) ();

    int n;

    {

    float s;

    (5);

    returu (s);

    }


    正确答案:(1)array+10 (2)array+1 (3)*p>*max (4)k=*max (5)*p=array[0]
    (1)array+10 (2)array+1 (3)*p>*max (4)k=*max (5)*p=array[0]

  • 第3题:

    下面程序应能对两个整型变量的值进行交换。以下正确的说法是 include void swap

    下面程序应能对两个整型变量的值进行交换。以下正确的说法是 #include<iostream.h> void swap(int p,int q) { int t; t=p; p=q; q=t;} void main( ) { int a=10,b=20; cout<<a<<" "<<b; swap(&a,&b); cout<<a<<" "<<b;}

    A.该程序完全正确

    B.该程序有错,只要将语句swap(&a,&b);中的参数改为a,b即可

    C.该程序有错,只要将swap( )函数中的形参p和q以及t均定义为指针(执行语句不变)即可

    D.以上说法都不对


    正确答案:D
    解析:本题应该把swap()函数改成这样:swap(int*P,int*q){intt;t=*p;*p=*q;*q=t;}执行程序时,先将a的地址传递给指针变量p,b的地址传递给指针变量q,然后将*p(a的值)的值传递给t,将*q(b的值)传递给*p,将t的值传递给*q,从而将a值和b值互换。

  • 第4题:

    有下列函数定义: fun(float h) { printf("%f,%f\n",h,h*h);) 该函数的类型是( )。

    A.int类型

    B.float类型

    C.void类型

    D.函数无类型说明,定义有错


    正确答案:A
    本题考查函数值的类型,在函数定义时,由于函数没有说明其类型,系统默认一律自动按整型(int)处理。

  • 第5题:

    以下4个程序中,不能实现两个实参值进行交换的是 ( )。

    A.void swap (float *p, float *q) { float *t ,a; t = &a; t = p; *p = *q; *q = *t; } void main () { float x = 8.0;y = 9.0; swap (&x, &y); cout<<x<<", "<<y<<

    B.void swap (float *p, float *q) { float a; a = *p; *p = *q; *q = a; } void main() { float x = 8.0;y = 9.0; swap (&x, &y); cout<<x<<", "<<y<<end1;

    C.void swap (float *p, float *q) { float x; x = *p; *p = *q; *q = x; } void main() { float a,b.; *a = 8.0;*b = 9.0; swap (a, b) ;

    D.void swap (float &p, float &q) { float a; a = p; p = q; q = a; } void main() { float a = 8.0,b = 9.0; swap (a,b); cout<<x<<", "<<y<<


    正确答案:C
    解析:本题考核指针和引用作为函数形参。做此类题时,应学会整体比较,要不然花费的时间不亚于一个大的编程题。①首先,这4个程序都是调用swap函数,而且目的都一致,交换传入的两个实参值。②分析被调函数swap()。在选项A、B和C中都是指针作为形参,只有在选项D中,函数swap()是以引用作为形参。由指针和引用作为函数形参的特点可知,只要调用了函数,就能达到交换两个实参变量的值,所以这几个被调函数没有问题。③再看主函数。在选项C中,没有定义指针类型变量,而是直接给指针变量赋值:“floata,b;*a=8.0;*b=9.0;”,这显然是非法的。想直接开辟存储空间,交换两个常量值,是不可能的。所以只有选项C是错误的。

  • 第6题:

    下面程序的运行结果为( )。 #include<iostream.h> void swap(int&a,int B. int temp; temp=a++: a=b: b=temp; } void main { im a=2,b=3; swap(a,B.; eout<<a<<”,”<<b<<endl; }

    A.2,3

    B.3,2

    C.2,2

    D.3,3


    正确答案:D
    本题考查的是引用调用,因为函数swap01用调用参数a,所以在swap函数中a的变化会改变主函数中a的值,即a自加l,但b的值并未改变。

  • 第7题:

    下列函数的定义,正确的是( )。

    A.float sum(x,y) {float x,y;……}

    B.float sum(float x,float y); {……}

    C.float sum(float x,float y) {……}

    D.float sum(floatx,floaty) {……}


    正确答案:C
    解析:选项A函数形参需指定类型;选项B函数头不能以分号结尾;选项D函数形参需指定类型。

  • 第8题:

    下面程序的运行结果为includeVoid swap(int &a,int b){int temp;temp=a++;a=b;

    下面程序的运行结果为 #include<iostream,h> Void swap(int &a,int b) { int temp; temp=a++; a=b; b=temp; } void main() { int a=2,b=3; swap(a,b); cout <<a <<”,” <<b <<end1 }

    A.2,3

    B.3,2

    C.2,2

    D.3,3


    正确答案:D
    解析:本题考查的是引用调用,因为函数swap引用调用参数a,所以在swap函数中a的变化会改变主函数中9的值,即a自加1,但b的值并未改变。

  • 第9题:

    对下面的程序,说法正确的是()。includeusing namespace std;void sum(float m, float

    对下面的程序,说法正确的是( )。 #include<iostream> using namespace std; void sum(float m, float n) { float sum=m+n; } main() { cout<<sum(5.3,6.5)<<endl;}

    A.该程序是错误的,错误之处在于没有对sum()函数进行说明

    B.程序书写规整,无语法错误,是正确的

    C.该程序语法无错误,但在调用函数sum()时出错,因为sum()函数被定义为viod类型,但却被主函数调用,因而是错误的

    D.虽然sun()函数被定义为void类型,但调用时也不会出错,程序能够编译通过


    正确答案:C
    解析:void类型的函数的返回值类型是不确定的,不能使用函数的返回值。

  • 第10题:

    下面程序的运行结果为( )。 include using namespace std; void swap(int &

    下面程序的运行结果为( )。 #include<iostream> using namespace std; void swap(int &a,int &b){ int temp; temp=a; a=b; b=temp; } void main(){ int a=2,b=3; swap(a,b); cout<<a<<"," <<b<<ENDL; }

    A.2,3

    B.3,2

    C.2,2

    D.3,3


    正确答案:B
    解析:函数形参是引用方式,则在函数体内形参改变,对应的实参也改变。

  • 第11题:

    自定义函数fact的功能是计算k的阶乘,函数原型可以写作“floatfact(int)”。按照以下各小题的要求写出相应的函数原型。 ⑴自定义函数f1的功能是计算平面上任意两点之间的距离。 ⑵自定义函数swap的功能是交换调用函数中两个float类型实参变量的值。


    正确答案:(1)floatf1(float,float,float,float)
    (2)voidswap(float*,float*)或voidswap(float&,float&)

  • 第12题:

    问答题
    请根据以下各小题的要求设计C应用程序(包括界面和代码)。  下列给定的程序中,函数fun的功能是:把主函数中输入的3个数,最大的放在a中,最小的放在c中。例如,输入的数为55 12 34,输出结果应当是:a=55.0,b=34.0,c=12.0。  请改正程序中的错误,使它能得到正确结果。  注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。  试题程序如下:#include #include void fun(float *p,float *q,float *s){ float *k; k = (float *)malloc(sizeof(float)); if(*p<*q) {  /**********found**********/  k=*p;*p=*q;*q=k; } /**********found**********/ if(*s<*p) {  /**********found**********/  k=*s; *s=*p; *p=k; } if(*q<*s) {  /**********found**********/  k=*q; *q=*s; *s=k; } free(k);}main(){ float a,b,c; printf(Input a b c: ); scanf(%f%f%f,&a,&b,&c); printf(a = %4.1f, b = %4.1f, c = %4.1f,a,b,c); fun(&a,&b,&c); printf(a = %4.1f, b = %4.1f, c = %4.1f,a,b,c);}  

    正确答案:

    (1)错误:{k=*p;*p=*q;*q=k;}
    正确:{*k=*p;* p=*q;*q=*k;}
    (2)错误:if(*s<*p)
    正确:if(*s>*p)
    (3)错误:{k=*s;*s=*p;*p=k;}
    正确:{*k=*8;*s=*p;*p=*k;}
    (4)错误:{k=*q;*q=*s;*s=k;}
    正确:{*k=*q;*q=*s;*s=*k;}
    解析:

      错误1、3、4:函数定义了一个int型指针变量k作为交换的辅助变量,此时不能直接用k,应该用指针指向的变量*k。所以第1、3、4处错误都应把k改成*k。
      错误2:*p存储最大值,*s存储最小值,所以应该把q和s所指向的值与*p进行比较,如果比*p大则与*p交换,所以if(*s<*p)应改为if(*s>*p)。

  • 第13题:

    下面各被调用函数首部书写正确的是( )

    A.void sub(float x;float y);

    B.void sub(float x,y)

    C.void sub(float x,float y)

    D.void sub(float x,float y);


    正确答案:C

  • 第14题:

    下列程序的执行结果是______。 include float temp; float&fn2(float r) { temp=

    下列程序的执行结果是______。

    include<iostream.h>

    float temp;

    float&fn2(float r)

    {

    temp=r*r*3.14;

    return temp;

    }

    void main( )

    {

    float a=fn2(5.0);

    float&b=fn2(5.0);

    b=20;

    cout<<temp<<endl;

    }


    正确答案:20
    20 解析:本题考察全局变量和引用的综合使用。在主函数中,b实际上是temp的一个引用。因此在给b赋值20的时候,输出的temp就是20。

  • 第15题:

    下面程序输出的结果是( )。 include using namespace std; void swap(int

    下面程序输出的结果是( )。 #include <iostream> using namespace std; void swap(int &a,int &b){ int temp; temp=a; a=b; b=temp; } void main(){ int x=2; int y=3; swap(x,y); cout<<x<<y; }

    A.23

    B.32

    C.ab

    D.ba


    正确答案:B
    解析:函数的参数是引用,故能实现引用调用。

  • 第16题:

    有下列函数定义: fun(float h) { printf("%f,%f\n",h,h*h);) 该函数的类型是( )。A.int类型SX

    有下列函数定义: fun(float h) { printf("%f,%f\n",h,h*h);) 该函数的类型是( )。

    A.int类型

    B.float类型

    C.void类型

    D.函数无类型说明,定义有错


    正确答案:A
    本题考查函数值的类型,在函数定义时,由于函数没有说明其类型,系统默认一律自动按整型(int)处理。

  • 第17题:

    以下程序的输出结果是 void fun(float*p1,float*p2,float*s) { s=(float*)calloc(1,sizeof(float)); *s=*p1+*p2++;} main() { float a[2]={1.1,2.2},b[2]={10.0,20.0},*s=a; fun(a,b,s); printf("%5.2f\n",*s);}

    A.11.1

    B.12

    C.21.1

    D.1.1


    正确答案:D
    解析:本题主要考查了一维数组名用作函数实参进行的运算,数组名作实参相当于传递的是地址,这样在函数中对形参进行的操作可以影响到实参。

  • 第18题:

    若各选项中所有变量已正确定义,函数fun中通过return语句返回一个函数值,以下选项中错误的程序是______。

    A.mam() {…… x=fun(2,10); ……} fioat fun(int a,int b) { ……}

    B.float fun (int a,int b) {……} main() {…… x=fun(i,j); ……}

    C.float fun (int int); main() {…… x=fun(2,10); ……} float fun (int a,int b){ ……}

    D.main() { float fun (int i, int j); …… x=fun(i,j); ……} float fun (int a,int b){ ……}


    正确答案:A
    解析:C语言程序是由—个主函数和若干个其他函数组成的,主函数的函数名为:main(),main()函数在程序中的位置是任意的。C语言程序是从main()函数开始执行,当程序中定义了多个函数时,通常情况下是先定义后调用,若被调函数定义在主调函数之后,则必须先声明后调用。在选项A中,先执行main()函数,此时对fun()函数进行调用,由于fun函数在此调用之前无定义也无声明,故无法正常识别调用,所以选项A的程序错误。

  • 第19题:

    下面程序的执行结果是()。includeusing namespace std;class building {public:buildi

    下面程序的执行结果是( )。 #include<iostream> using namespace std; class building { public: building() {} building(unsigned stories, float breadths, float lengths) { story = stories; breadth = breadths; length = lengths;} void getstory(void) { cout<<"story is:"<<story<<endl;} void getarea(void) { area = length*breadth*story;cout<<"area is:"<<area<<endl;} private: unsigned story; float length; float breadth; float area; }; void main(void) { building b1,b2;building b3(10u,16.6,58.8); b1.getstory(); b1.getarea(); b2.getstory(); b2.getarea(); b3.getstory(); b3.getarea();}

    A.story is:0 area is:0 story is:0 area is:0 story is:10 area is:9760.8

    B.story is:null area is:null story is:null area is:null story is:10 area is:9760.8

    C.前两个对象输出的结果是不定的,后一个对象的结果正确

    D.前两个对象没有初值,因此程序编译时出错


    正确答案:C
    解析:该题是关于构造函数重载的,由于前两个对象没有赋初值,值不定。

  • 第20题:

    下列重载函数中,正确的是( )。

    A.void fun(int a,float b);void fun(int C,float d)

    B.void fun(int a,float b);void fun(float a,int b)

    C.float fun(int a,float b);int fun(int b,float a)

    D.int fun(int a,int b);float fun(int a,int b)


    正确答案:B

  • 第21题:

    下面程序输出的结果是( )。 include using namespace std; int test(int n1

    下面程序输出的结果是( )。 #include<iostream> using namespace std; int test(int n1,int n2) {return n1 +n2;} float test (int f1,float f2){return f1-f2;} float test(float x,float y){return(x+y)/2;} float test(float x,int y){return(x+y)*2;} void main(){ int a1=10; float a2=2.5f; cout<<test(a1,a2); }

    A.12.5

    B.7.5

    C.6.25

    D.25


    正确答案:B
    解析:此处为函数的重载,第一个参数为int,第二个参数为float,故执行第二个函数。

  • 第22题:

    若下列各选项中所有变量已正确定义,函数fun通过return语句返回一个函数值,以下选项中错误的程序是( )。

    A.main( ) {...... x = fun(2,10);......} float fun(int a, int b){......}

    B.float fun( int a,int b){......} main( ) {......x = fun(i,j);......}

    C.float fun(int, int); main( ) {......x=fun(2,10);......} float fun(iht a, int b){......}

    D.main( ) { float fun(int i, int j); ...... x = fun(i,j);......} float fun(int a,int b) {......}


    正确答案:A
    解析:C语言程序从main函数开始执行,当程序中定义了多个函数时,通常情况下是先定义后调用。若被调用函数定义在主调函数之后,则必须先声明后调用。在选项A)中,先执行main函数,并调用了fun函数,而fun函数在此调用之前无定义也无声明,故无法正常识别调用,所以错误。

  • 第23题:

    单选题
    下列重载函数中,正确的是(  )。
    A

    void fun(int a,float b);void fun(int C,float d)

    B

    void fun(int a,float b);void fun(float a,int b)

    C

    float fun(int a,float b);int fun(int b,float a)

    D

    int fun(int a,int b);float fun(int a,int b)


    正确答案: D
    解析:
    函数重载是指同一函数名可以对应多个函数实现。进行函数重载时,要求同名函数在参数个数上不同,或者参数类型上不同,只有返回类型不同的函数不能重载。

  • 第24题:

    单选题
    已知主函数中通过如下语句序列实现对函数模板swap的调用:int a[10],b[10];swap(a,b,10);下列对函数模板swap的声明中,会导致上述语句序列发生编译错误的是(  )。
    A

    template<typename T>
    void swap(T a[],T b[],int size);

    B

    template<typename T>
    void swap(int size,T a[],T b[]);

    C

    template<typename T1,typename T2>
    void swap(T1 a[],T2 b[],int size);

    D

    template<class T1,class T2>
    void swap(T1 all,T2 b[],int size);


    正确答案: C
    解析:
    函数模板swap的声明应将第一、二个参数设为数组变量,第三个参数为整型变量。