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

题目
单选题
已知主函数中通过如下语句序列实现对函数模板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);

如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

以下程序调用函数swap将指针s和t所指单元(a和B)中的内容交换,请填空。 main() {int a=10,b=20,*s,*t; s=&a;t=&b; ( ) printf("%d%d",a,B); } swap(int*ss,int*tt) {int te; te=*ss; *ss=*tt; *tt=te; }


正确答案:swap(st);
swap(s,t); 解析:本题要在主函数中调用swap函数交换a、b的值,实现数据交换需要进行地址传递,所以函数的形参都应该是需要交换的数据的地址,程序中通过“s=&a;t=&b;”将指针变量s和t指向变量a、b的地址,因此,引用时直接引用指针变量s和t即可。

第2题:

下列程序的输出结果是【 】。include void swap(int *a, int *B) { int *t; t=a;a=b;b=t;

下列程序的输出结果是【 】。

include <stdio.h>

void swap(int *a, int *B)

{

int *t;

t=a;a=b;b=t;

}

main()

{

int i=3,j=5,*p=&i,*q=&j;

swap(p,q);printf("%d %d\n",*p,*q);

}


正确答案:3 5
3 5 解析:本题考查函数中实参和形参的传递,在C语言函数中实参和形参传递具有不可逆性,参数只能由实参传向形参,而不能由形参传向实参,虽然swap函数的功能是实现两个数的交换,但没有返回值,故最终的输出结果为3 5。

第3题:

以下程序的输出结果是 【 11 】 。

#include <stdio.h>

void swap(int *a,int *b)

{ int *t;

t=a; a=b; b=t;

}

main()

{ int i=3,j=5,*p=&i,*q=&j;

swap(p,q); printf("%d %d\n",*p,*q);

}


正确答案:

第4题:

下面程序应能对两个整型变量的值进行交换。以下正确的说法是 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值互换。

第5题:

已知一个函数模板定义为: template T1 FUN(T2 n){return n*5.0;} 若

已知一个函数模板定义为:

template<typename T1, typename T2>

T1 FUN(T2 n){return n*5.0;}

若要求以int型数据7为函数实参调用该模板函数,并返回一个double型数据,则该调用应表示为______。


正确答案:FUNdouble>(7)或FUNdoubleint>(7)
FUNdouble>(7)或FUNdouble,int>(7) 解析:此题考查的是函数模板的调用。本题模板函数的返回值类型为T1,形参类型为T2。题目要求用int型参数7调用,并返回一个double型数据。故调用格式为FUNdouble,int>(7)。也可省略T2的类型int,简写为FUNdouble>(7)。

第6题:

有以下程序: void swap1(int * a,int * b) {int* c=a; a=b,b=c; } void swap2(int * a,int * b) { int c=* a; * a=*b,*b=c; } main() {int a=10,b=15; swap 1(&a,&b) ; printf("%d,%d,",a,b) ; a=10,b=15; swap 2(&a,&b) ; printf("%d,%d",a,b) ; } 其输出结果为 ______。

A.15,10,10,15

B.15,10,15,10

C.10,15,10,15

D.10,15,15,10


正确答案:D
解析:C语言规定,实参变量对形参变量的数据传递是“值传递”,只由实参传给形参,而不能由形参传回来给实参。在内函数调用结束后,形参单元被释放,实参单元仍保留并维持原值。本题中swapl()函数中,虽然改变了形参指针的值,但实参指针的值并没有改变,所以执行第一个printf后应输出10,15,swap2()函数实现了交换两个变量a和b的值,因此执行第三个printf后输出交换后的值15,10,所以本题答案为D。

第7题:

以下程序的输出结果是______。include void swap(int *a, int *b){ int *t;}{ int i=3,j

以下程序的输出结果是______。

include <stdio.h>

void swap(int *a, int *b)

{ int *t;

}

{ int i=3,j=5,*p=&i,*q=&j;

swap(p,q); printf("%d %d\n",*p,*q);


正确答案:

第8题:

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

main()

{int a=10,b=20;

printf("(1)a=%d,b=%d\n",a,b);

swap(&a,&b);

printf("(2)a=%d,b=%d\n",a,b);

}

swap(int p,int q)

{int t;

t=p;p=q;q=t;

}

A.该程序完全正确

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

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

D.以上说法都不对


正确答案:D

第9题:

定义int*swap()指的是______。

A.一个返回整型值的函数swap()

B.一个返回指向整型值指针的函数swap()

C.一个指向函数swap()的指针,函数返回一个整型值

D.以上说法均错


正确答案:B
解析:一个函数可以带回一个整型值、字符值、实型值等,但也可以带回指针型数据,即地址。本题的定义中,包括括号和*号,由于0优先级高于*。故它是一个返回整型指针的函数。

第10题:

下面程序的输出结果是()。includeusing namespace std;void swap(int x[2]){int t; t=

下面程序的输出结果是( )。 #include<iostream> using namespace std; void swap(int x[2]) { int t; t=x[0]; x[0]=x[1]; x[1]=t; } void main() { int a[2]={4,8}; swap(a); cout<<a[0]<<" "<<a[1]; }

A.4 8

B.8 4

C.4 4

D.8 8


正确答案:B
解析:数组名作为函数参数属于地址传递,形参、实参共用同一内存空间。

更多相关问题