函数与指针练习
1、以下叙述屮正确的是
A)函数名允许用数字开头
B)函数调用时,不必区分函数名称的大小写
0调用函数时,函数名必须与被调用的函数名完全一致
D)在函数体中只能出现一次return语句
2、函数调用语句:fun( (expl, exp2), ( expl, exp2, cxp3)); 含有的实参个数是
A) 2 B) 4 0 5 D) 1
3、有以下程序
★include
main()
{ int findmax(int, int, int), m;
I
I
m=f indmax (a, b, c);
int k=5; void f (int *s)
{ *s=k; }
mainO
{ int m=3, *p=&m;
f(p);
printf (z,%d, m, *p);
}
程序的运行结果是
A)5,5 B) 3,3 C) 3,5 D) 5,3
7、以下关于C语言函数参数传递方式的叙述正确的是
A)数据只能从实参单向传递给形参
B)数据可以在实参和形参之间双向传递
0 数据只能从形参单向传递给实参
D) C语言的函数参数既可以从实参单向传递给形参,也可以在实参和形参之间双向传递,可视情况选择使用
8、有以下程序
int findmax(int x,int y, int z)
{ … }
则以下叙述正确的是
A)在maini^i数中声明了findmax函数
B)在mdin函数屮定义了 f indmax函数
C)在main函数中两次调川了findmax函数
D)在main函数内.外重复定义了findmax函数
4、以下叙述中正确的是
A)用户自己定义的函数只能调用库函数
B)实用的C语言源程序总是由一个或多个函数组成
0不同函数的形式参数不能使用相同名称的标识符
[))在C语言的函数内部,可以定义局部嵌套函数
5、以下程序中函数f的功能是:当flag为1时,进行由小到大排序;当flag为0时,进行由大到小排序。
#inelude
void f(int b[], int n, int flag)
{
int i,j,t;
for (i=0; i for (j=i+l; jvn; j++) if(flag?b[i]>b[j]:b[i] { t=b[i]; b[i]=b[j]; b[j]=t; } } main() { int a[10]={5A3,2,1,6,7,8,9,10}, i; f(&a[2], 5, 0); f(a, 5,1); for (j=0; i<10; i++) printf(”%d,“, a[i]); } 程序运行后的输出结果是 A)1,2,3,4,5,6,7,8,9,10, B)3,4,5,6,7,21,8,9,10, 0 5,4,3,2,1,6,7,8,9,10, D) 10,9,8,7,6,5,4,3,2,1, 6、有以下程序^include #include void fun( int x, int y, int *z ) { *z = y-x; } main() int a, b, c; fun (10, 5, &a ) ; fun (7, a, &b ); fun (a, b, &c ); printf (,z%d, %d, %d\n z,, a, b, c ); } 程序运行后的输出结果是 A)-5,-12, -7 B) 5,2,3 0 -5,-12,-17 D) 5, -2, -7 9、有以下程序: #include { int t; t=a; a=b; b=t; ) main() { int c[10] = { 1234567,890}, i; for (i=0; i<10; for(i=0; i<10; ) 程序的运行结果是( A) 1,2,3,4,5,6,7,8,9,0, 0 0,9,&7,6,5,4,3,2,l, 10、有以下程序 #include {int *c; c=a;a=b;b=c; } main() {int x=3, y=5, *p=&x, *q=&y; fun(p,q); printf, %d,%d,”,*p,*q); fun(&x,&y); printf("%d/%d\n,,/p,*q); } 程序运行后的输岀结果是 i+=2) fun(c[i], c[i+l]); i++) printf(H%d, ”,c[i]); )。 B) 2,1,4,3,6,5,&7,0,9, D) 0,1,2,3,4,567,8,9, A) 3,53,5 B) 3,5,5,3 0 5,33,5 D) 5,3,5,3 11、有以下程序 #include void fun( int a, int b, int c ) { a=b; b=c; c=a; } main() { int a=10, b=20, c=30; fun( a, b, c ); printf(”%d,%d,%d\n”,c,b,a); } 程序运行后的输出结果是 A) 10,20,30 B) 30,20,10 0 20,30,10 D) 0,0,0 12、有以下程序 #include void fun( int x, int y, int *c, int *d ) { *c = x+y; *d = x-y; } main() { int a=4, b=3, c=0, d=0; fun ( a, b, &c, &d ); printf( "%d %d\n", c, d ); } 程序的输出结果是 A) 0 0 B) 4 3 C) 3 4 D) 7 1 13、有以下程序 #include void fun( int *p, int *q ) { int t; t = *p; *p = *q; *q=t; *q = *p; } main() { int a=0, b=9; fun ( &a, &b ); printff "%d %d\n", a,b ); } 程序的输出结果是 A) 9 0 B) 0 0 0 9 9 D) 0 9 14、若有以下函数首部 int fun(double x[10]z int *n) 则下面针对此函数的函数声明语句中正确的是 A) int fun(double , int); B) int fun(double *, int *); C) int fun (double *x, int n); D) int fun (double x, int *n); 15、有以下程序 itincludo void fun( int *s, int t, int *k ) { int p; for( p=0, *k=p; p if( s[p]>s[*k] ) *k = p; } main() { int a[10] = { 11, 12, 13, 14, 15, 16, 20, 1 & 19, 10 },k ; fun( a, 10, &k ); printf (,z%d, %d\n,z, k, a[k]); } 程序运行后的输出结果是 A) 6,20 B) 10,9 C) 7,20 D) 10, 10 16、在一个C源程序文件中所定义的全局变量,其作用域为()0 A) 由具体定义位置和extern说明来决定范围 B) 所在程序的全部范围 O所在函数的全部范围 D)所在文件的全部范围 17、有以下程序 #inelude int d=l; void fun( int p) { int d=5; d += p++; printf("%d “, d ); } main() { int a=3; fun( a ); d += a++; printf(“%d\n“,d); } 程序的输岀结果是 A) 8 4 B) 9 6 0 9 4 D) 8 5 18、有以下程序 #include int a=l, b=2; void funl( int a, int b ) { printf( ”%d %d “ b ); } void fun2() { a=3; b=4; } main() { funl(5,6); fun2(); printff "%d %d\n",a, b ); } 程序运行后的输出结果是 A) 5612 B) 3456 0 1256 D) 5 634 19、有以下程序 #include int b=2; int fun(int *k) { b=*k+b; return (b);} main() { inta[10]={l,2,3,4,5,6,7,8},i; for(i=2;i<4;i++) {b二fun(&a[i])+b; printf("%d ",b);} printf(”\n”); } 程序运行后的输出结果是 A) 8 10 B) 10 28 C) 10 12 D) 10 16 20、有以下程序 #include int fun(intA) { int b=0; static int c=3; a =( c++,b++); return ( a ); } main() { int a = 2, i, k; for( i=0; i<2; i++ ) k = fun( a++); printf( “%d\n”,k); } 程序的输出结果是 A) 4 B) 0 C) 1 D) 2 21、以下关于地址和指针的叙述中正确的是 A) 可以収变量的地址赋值给同类型的指针变量 B) 可以取常量的地址赋值给同类型的指针变量 0可以取一个指针变最的地址赋给本指针变量,这样就使得指针变量指向自身 D)所有指针变量如果未赋初值,则自动赋空值NUI丄 22、以下关于指针的叙述正确是 A) 所有类型的指针变量所占内存的大小是-?样的 B) 指钊?变量所占内存的大小与其类型有关,char型指针变量只占1个字节,double型指针变量占8个字节 0指针变量可直接指向任何类型的变量,而不会出现编译或运行错误 D)指针变量既可以直接指向结构体,也可直接指向结构体屮某个成员,而不会出现编译或运行错误 23、以下定义语句中正确的是 A) int a=b=0; B) char A=65+l,b='b'; C) float a=l,*b=&a,*c=&b; D) double a=0.0; b=l.l; 24设已有定义:float x;,则以下对指针变filp进行定义且赋初值的语句中正确的是()。 A) int *p=(float)x;B) float *p=&x; C) float p=&x;D) float *p=1024; 25、若有定义语句:double x, y, *px, *py;执行了px = &x;py=&y;之后,正确的输入语句是()o A)scanf(”%lf %le", px, py); B)scanf("%f %f' &x, &y); 0 scanf(H%f%r, x, y); D) scanf(M%lf%ir, x, y); 26、有以下程序 #include void f( int *q ) {int i=0; for ( ;i<5; i++) (*q)++; } main() {int a[5] ={1,2,3,4,5}, i; f(a); for (i=0;i<5; i++) printf("%d/'z a[i]); } 程序运行后的输岀结果是 A) 6, 2, 3, 4, 5, B) 2, 2, 3, 4, 5, 0 1, 2Z 3, 4, 5, D) 2, 3, 4, 5, 6, 27、有以下程序 #inelude { char ch[ ] ="uvwxyz"/*pc; pc=ch; printf(”%c\n”, *(pc+5)); } 程序运行后的输出结果是 A) z B) 0 C)元素ch⑸的地址D)字符y 的地址 28、若有以下程序段 char str[4][12] {"aaa", "bbbb", "ccccc", "dddddd"}, *str讥4]; int i; for( i=0; i<4; i++) strp[i]=str[i]; 则以下错误引 用字符出的选项是(英中0Wk<4) A) strp B) str[k] C) strp[k] D) *strp 29、有以下程序: # include void fun( int a[J, int n) { int i, t; for(i=0; i a[n— 1 —1J; a[n— 1 —i]=t;} } main() { int kllOJ = { 1,2,3,4,5,6,7,8,9,10}, i; fun(k,5); for(i = 2;i<8; printf(n\n n); } 程序的运行结果是( A) 321678 B) 876543 28、有以下程序 #include #include *s ) { s=( int * )malloc( sizeof(int)); *s = *pl + *(p2++); } main() { int a[2]={l,2 }, b[2]={10,20}, *s=a; fun( a,b z s ); printf("%d\n", *s ); } a[i] = i++)printf(M%d H, k[i]); )o 0 1098765 D) 345678 程序运行后的输出结果是 A) 11 B) 10 C) 1 D) 2 29、有以下程序 #inelude char *p = s; while( *p != 0 ) p++; return ( p-s); } main() { printf("%d\n", fun("OABCDEF")); } 程序运行后的输出结果是 A) 1 B) 6 C) 7 D) 0 30、有以下程序 #include #include void fun ( char *s ) { char a[10); strcpy( a, "STRING"); s = a; } main() { char f PROGRAM”; fun( p ); printf(“%s\n”,p); } 程序运行后的输岀结果是(此处□代表空格) A) STRING B) STRING□□口口 C) STRING□□口D) PROGRAM 31、以下选项中正确的语句组是 A) char *s; s二{“BOOK!"}; B) char *s; s-'BOOK!”; C) char s[10]; s="BOOK!H; D) char s[]; s 二” BOOK!”; 方法 指针函数和函数指针的区别 关于函数指针数组的定义 为函数指针数组赋值 函数指针的声明方法为: 数据类型标志符 (指针变量名) (形参列表); 注1:“函数类型”说明函数的返回类型,由于“()”的优先级高于“*”,所以指针变量名外的括号必不可少,后面的“形参列表”表示指针变量指向的函数所带的参数列表。例如: int func(int x); /* 声明一个函数 */ int (*f) (int x); /* 声明一个函数指针 */ f=func; /* 将func函数的首地址赋给指针f */ 赋值时函数func不带括号,也不带参数,由于func代表函数的首地址,因此经过赋值以后,指针f就指向函数func(x)的代码的首地址。 注2:函数括号中的形参可有可无,视情况而定。 下面的程序说明了函数指针调用函数的方法: 例一、 #include C++指针函数习题 一、选择题 1.以下程序的运行结果是()。 sub(int x, int y, int *z) { *z=y-x; } void main() { int a,b; sub(10,5,&a); sub(7,a,&b); cout< #include<> 函数练习题 【1.54】对函数形参的说明有错误的是____。 A) int a(float x[],int n) B) int a(float *x,int n) C) int a(float x[10],int n) D) int a(float x,int n) 【1.55】如果一个变量在整个程序运行期间都存在,但是仅在说明它的函数内是可见的,这个变量的存储类型应该被说明为____。 A)静态变量B) 动态变量C) 外部变量D) 内部变量 【1.56】在一个C源程序文件中,?若要定义一个只允许在该源文件中所有函数使用的变量,则该变量需要使用的存储类别是。 A) extern B) register C) auto D) static 【1.57】在C语言中,函数的数据类型是指____。 A)函数返回值的数据类型B) 函数形参的数据类型 C) 调用该函数时的实参的数据类型D) 任意指定的数据类型 【1.58】已知如下定义的函数: fun1(a) { printf("\n%d",a); } 则该函数的数据类型是____。 A)与参数a的类型相同B) void型 C) 没有返回值D) 无法确定 【1.59】定义一个函数实现交换x和y的值,并将结果正确返回。能够实现此功能的是____。 A) swapa(int x,int y) B) swapb(int *x,int *y) { int temp;{ int temp; temp=x;x=y;y=temp;temp=x;x=y;y=temp; } } C) swapc(int *x,int *y) D) swapd(int *x,int *y) { int temp;{ int *temp; temp=*x;*x=*y;*y=temp;temp=x;x=y;y=temp; } } 【1.60】求一个角的正弦函数值的平方。能够实现此功能的函数是____。 A) sqofsina(x) float x; { return(sin(x)*sin(x)); } B) double sqofsinb(x) float x; { return(sin((double)x)*sin((double)x)); } C) double sqofsinc(x) { return(((sin(x)*sin(x)); } D) sqofsind(x) float x; 指向函数的指针 函数指针是指指向函数而非指向对象的指针。像其他指针一样,函数指针也指向某个特定的类型。函数类型由其返回类型以及形参表确定,而与函数名无关: bool (*pf)(const string &,const string &); 这个语句将pf声明为指向函数的指针,它所指向的函数带有两个const string &类型的形参和bool 类型的返回值。 注意:*pf两侧的括号是必需的。 1.typedef简化函数指针的定义: 函数指针类型相当地冗长。使用typedef为指针类型定义同义词,可将函数指针的使用大大简化: Typedef bool (*cmpfn)(const string &,const string &); 该定义表示cmpfn是一种指向函数的指针类型的名字。该指针类型为“指向返回bool类型并带有两个const string 引用形参的函数的指针”。在要使用这种函数指针类型时,只需直接使用cmpfcn即可,不必每次都把整个类型声明全部写出来。 2.指向函数的指针的初始化和赋值 在引用函数名但又没有调用该函数时,函数名将被自动解释为指向函数的指针。假设有函数: Bool lengthcompare(const string &,const string &); 除了用作函数调用的左操作数以外,对lengthcompare的任何使用都被解释为如下类型的指针: bool (*)(const string &,const string &); 可使用函数名对函数指针初始化或赋值: cmpfn pf1=0; cmpfn pf2=lengthcompare; pf1=legnthcompare; pf2=pf1; 此时,直接引用函数名等效于在函数名上应用取地址操作符: cmpfcn pf1=lengthcompare; cmpfcn pf2=lengthcompare; 注意:函数指针只能通过同类型的函数或函数指针或0值常量表达式进行初始化或赋值。 将函数指针初始化为0,表示该指针不指向任何函数。 指向不两只函数类型的指针之间不存在转换: string::size_type sumLength(const string &,const string &); bool cstringCompare(char *,char *); //pointer to function returning bool taking two const string& cmpFcn pf;//error:return type differs pf=cstringCompare;//error:parameter types differ pf=lengthCompare;//ok:function and pointer types match exactly 3.通过指针调用函数 指向函数的指针可用于调用它所指向的函数。可以不需要使用解引用 C++语言程序设计中函数指针的分析与研究摘要:指针作为c++语言程序设计中的一个重要概念,其应用也是c++语言程序设计中的非常重要的一个内容。指针作为一种特殊的数据结构类型,它可以有效地表示数据之间复杂的逻辑结构关系。灵活正确地运用指针可以给程序的设计带很多的便捷,其中效果最为显著的就是函数指针的应用,通过使用函数指针,可以在调用函数时可以获得多个返回值以及实现对内存地址的直接处理等。本文从对c++语言程序设计中的函数指针的介绍谈起,然后详细说明了使用c++语言程序设计函数指针需要注意的问题,最后就c++语言程序设计中函数指针的应用技巧进行了系统的分析。 关键词:c++语言程序设计;函数指针;分析研究 中图分类号:tp311.11 文献标识码:a文章编号:1007-9599 (2011) 24-0000-01 analysis and research of function pointers for c++ language programming zhang suxia (shandong rural credit cooperatives,qingdao266550,china) abstract:pointer as c++ language programming is an important concept,its application is the c++ programming language is very important content.pointer as a special type of data structure,which can effectively express complex data between the logical structure of the relationship.flexible 指针习题及答案 一.选择题 1.变量的指针,其含义是指该变量的 B 。 A)值B)地址C)名D)一个标志 2.已有定义int k=2;int *ptr1,*ptr2;且ptr1和ptr2均已指向变量k,下面不能正确执行的赋值语句是 B 。 A)k=*ptr1+*ptr2 B)ptr2=k C)ptr1=ptr2 D)k=*ptr1*(*ptr2) 3.若有说明:int *p,m=5,n;以下程序段正确的是 D 。 A)p=&n ; B)p = &n ; scanf(“%d”,&p); scanf(“%d”,*p); C)scanf(“%d”,&n); D)p = &n ; *p=n ; *p = m ; 4.已有变量定义和函数调用语句:int a=25;print_value(&a);下面函数的输出结果是 D 。 void print_value(int *x) { printf(“%d\n”,++*x); } A)23 B)24 C)25 D)26 5.若有说明:int *p1, *p2,m=5,n;以下均是正确赋值语句的选项是 C 。 A)p1=&m; p2=&p1 ; B)p1=&m; p2=&n; *p1=*p2 ; C)p1=&m; p2=p1 ; D)p1=&m; *p1=*p2 ; 6.若有语句:int *p,a=4;和p=&a;下面均代表地址的一组选项是 D 。 A)a,p,*&a B)&*a,&a,*p C)*&p,*p,&a D)&a,&*p,p 7.下面判断正确的是 C 。 A)char *a=”china”; 等价于char *a; *a=”china” ; B)char str[10]={“china”}; 等价于char str[10]; str[ ]={“china”;} C)char *s=”china”; 等价于char *s; s=”china” ; D)char c[4]=”abc”,d[4]=”abc”; 等价于char c[4]=d[4]=”abc” ; 8.下面程序段中,for循环的执行次数是 C 。 char *s=”\ta\018bc” ; for ( ; *s!=’\0’ ; s++) printf(“*”) ; A)9 B)7 C)6 D)5 9.下面能正确进行字符串赋值操作的是 C 。 A)char s[5]={“ABCDE”}; B)char s[5]={‘A’,’B’,’C’,’D’,’E’}; C)char *s ; s=”ABCDE” ; D)char *s; scanf(“%s”,s) ; 10.下面程序段的运行结果是 C 。 char *s=”abcde” ; s+=2 ; printf(“%d”,s); A)cde B)字符’c’C)字符’c’的地址D)不确定11.设p1和p2是指向同一个字符串的指针变量,c为字符变量,则以下不能正确执行的赋值语句是 B 。 A)c=*p1+*p2 B)p2=c C)p1=p2 D)c=*p1*(*p2) 12.设有程序段:char s[ ]=”china”; char *p ; p=s ;则下面叙述正确的是 D 。A)s和p完全相同 函数指针与指针函数的关系 【函数指针】 在程序运行中,函数代码是程序的算法指令部分,它们和数组一样也占用存储空间,都有相应的地址。可以使用指针变量指向数组的首地址,也可以使用指针变量指向函数代码的首地址,指向函数代码首地址的指针变量称为函数指针。1.函数指针定义 函数类型(*指针变量名)(形参列表); “函数类型”说明函数的返回类型,由于“()”的优先级高于“*”,所以指针变量名外的括号必不可少,后面的“形参列表”表示指针变量指向的函数所带的参数列表。例如: int (*f)(int x); double (*ptr)(double x); 在定义函数指针时请注意: 函数指针和它指向的函数的参数个数和类型都应该是—致的; 函数指针的类型和函数的返回值类型也必须是一致的。 2.函数指针的赋值 函数名和数组名一样代表了函数代码的首地址,因此在赋值时,直接将函数指针指向函数名就行了。 例如, int func(int x); /* 声明一个函数*/ int (*f) (int x); /* 声明一个函数指针*/ f=func; /* 将func函数的首地址赋给指针f */ 赋值时函数func不带括号,也不带参数,由于func代表函数的首地址,因此经过赋值以后,指针f就指向函数func(x)的代码的首地址。 3.通过函数指针调用函数 函数指针是通过函数名及有关参数进行调用的。 与其他指针变量相类似,如果指针变量pi是指向某整型变量i的指针,则*p等于它所指的变量i;如果pf是指向某浮点型变量f的指针,则*pf就等价于它所指 的变量f。同样地,*f是指向函数func(x)的指针,则*f就代表它所指向的函数func。所以在执行了f=func;之后,(*f)和func代表同一函数。 由于函数指针指向存储区中的某个函数,因此可以通过函数指针调用相应的函数。现在我们就讨论如何用函数指针调用函数,它应执行下面三步: 首先,要说明函数指针变量。 例如:int (*f)(int x); 其次,要对函数指针变量赋值。 例如:f=func; (func(x)必须先要有定义) 最后,要用(*指针变量)(参数表);调用函数。 例如:(*f)(x);(x必须先赋值) 【例】任意输入n个数,找出其中最大数,并且输出最大数值。 main() { int f(); int i,a,b; int (*p)(); /* 定义函数指针*/ scanf("%d",&a); p=f; /* 给函数指针p赋值,使它指向函数f */ for(i=1;i<9;i++) { scanf("%d",&b); a=(*p)(a,b); /* 通过指针p调用函数f */ } printf("The Max Number is:%d",a) } f(int x,int y) { int z; 指针函数与函数指针的区别 一、 在学习arm过程中发现这“指针函数”与“函数指针”容易搞错,所以今天,我自己想一次把它搞清楚,找了一些资料,首先它们之间的定义: 1、指针函数是指带指针的函数,即本质是一个函数。函数返回类型是某一类型的指针 类型标识符 *函数名(参数表) int *f(x,y); 首先它是一个函数,只不过这个函数的返回值是一个地址值。函数返回值必须用同类型的指针变量来接受,也就是说,指针函数一定有函数返回值,而且,在主调函数中,函数返回值必须赋给同类型的指针变量。 表示: float *fun(); float *p; p = fun(a); 注意指针函数与函数指针表示方法的不同,千万不要混淆。最简单的辨别方式就是看函数名前面的指针*号有没有被括号()包含,如果被包含就是函数指针,反之则是指针函数。来讲详细一些吧!请看下面 指针函数: 当一个函数声明其返回值为一个指针时,实际上就是返回一个地址给调用函数,以用于需要指针或地址的表达式中。 格式: 类型说明符* 函数名(参数) 当然了,由于返回的是一个地址,所以类型说明符一般都是int。 例如:int *GetDate(); int * aaa(int,int); 函数返回的是一个地址值,经常使用在返回数组的某一元素地址上。 int * GetDate(int wk,int dy); main() { int wk,dy; do { printf(Enter week(1-5)day(1-7)\n); scanf(%d%d,&wk,&dy); } while(wk<1||wk>5||dy<1||dy>7); printf(%d\n,*GetDate(wk,dy)); 1.指针 (1) 有以下程序 void f( int y,int *x) {y=y+*x; *x=*x+y;} main( ) { int x=2,y=4; f(y,&x); printf(“%d %d\n”,x,y); } 执行后输出的结果是【1】。 (2) 下面程序的运行结果是:[2] 。 void swap(int *a,int *b) { int *t; t=a; a=b; b=t; } main() { int x=3,y=5,*p=&x,*q=&y; swap(p,q); printf(“%d%d\n”,*p,*q); } (3) 设有以下程序: main() { int a, b, k=4, m=6, *p1=&k, *p2=&m; a=pl= =&m; b=(*p1)/(*p2)+7; printf(“a=%d\n”,a); printf(“b=%d\n”,b); } 执行该程序后,a的值为【3】,b的值为【4】。 (4) 下列程序的输出结果是【5】。 void fun(int *n) { while( (*n)--) printf(“%d”,++(*n)); } main() { int a=100; fun(&a); } (5) 以下函数用来求出两整数之和,并通过形参将结果传回,请填空。 void func(int x,int y, [6] z) { *z=x+y; } (6) 函数void fun(float *sn, int n)的功能是:根据以下公式计算S,计算结果通过形参指针sn 传回;n通过形参传入,n的值大于等于0。请填空。 void fun( float *sn, int n) { float s=0.0, w, f=-1.0; int i=0; for(i=0; i<=n; i++) { f= [7] * f; w=f/(2*i+1); s+=w; } [8] =s; } (7) 以下函数的功能是,把两个整数指针所指的存储单元中的内容进行交换。请填空。 exchange(int *x, int *y) { int t; t=*y; *y= 【9】; *x= 【10】; } (8) 下面函数要求用来求出两个整数之和,并通过形参传回两数相加之和值,请填空。 int add(int x,int y, 【11】z) { 【12】=x+y;} 2.函数 (1) 给出年、月、日,问是星期几(星期日~六用0~6表示)。 #include 1、选择题 1、___A__只能访问静态成员变量。 A 静态函数 B 虚函数 C 构造函数 D 析构函数 2、下列的各类函数中,__C___不是类的成员函数。 A 构造函数 B 析构函数C友元函数 D 拷贝构造函数 3、友元的作用_A__。 A 提高程序的运行效率 B 加强类的封装性 C 实现数据的隐藏性 D 增加成员函数的种类 4、类模板的使用实际上是将类模板实例化成一个具体的_D____。 A 类 B 对象 C 函数 D 模板类 5、下列函数中,___C__不能重载。 A 成员函数 B 非成员函数 C 析构函数 D 构造函数 6、___C__是一个在基类中说明的虚函数,它在该基类中没有定义,但要求任何派生类都必须定义自己的版本。 A 虚析构函数B虚构造函数C纯虚函数 D 静态成员函数 7、__A___是istream的派生类,处理文件输入;___C__是iostream的派生类,可以同时处理文件的I/O。 A、ifstream B、ostream C、fstream D、ofstream 8、对于派生类的构造函数,在定义对象时构造函数的执行顺序为: 先执行__A___,再执行__B___,后执行__C___。 A 成员对象的构造函数 B 基类的构造函数 C 派生类本身的构造函数 9、局部变量可以隐藏全局变量,那么在有同名全局变量和局部变量的情形时,可以用__A___提供对全局变量的访问。 A 域运算符 B 类运算符 C 重载 D 引用 10、一个__C___允许用户为类定义一种模式,使得类中的某些数据成员及某些成员函数的返回值能取任意类型。 A 函数模板 B 模板函数 C 类模板 D 模板类 11、系统在调用重载函数时,往往根据一些条件确定哪个重载函数被调用,在下列选项中,不能作为依据的是___D__。 A 参数个数 B 参数的类型 C 函数名称D函数的类型 12、如果一个类至少有一个纯虚函数,那么就称该类为__A___。 A 抽象类 B 虚基类 C 派生类 D 以上都不对 13、进行文件操作时需要包含__B___文件。 A iostream B fstream C stdio.h D stdliB、h 14、在C++中,打开一个文件,就是将这个文件与一个__B___建立关联;关闭一函数指针
C指针函数习题
函数及指针练习题
指向函数的指针详解
C++语言程序设计中函数指针论文
c语言指针习题及答案69923
函数指针与指针函数的区别
指针函数与函数指针的区别
习题六指针与函数
C++考试题(选择题)
指向函数的指针