一套编程题 选择题41-80

41.   下列正确的选项是(    )。
A、继承是创建一个具有别的类的属性和行为的新类的能力   
B、C语言支持面向对象的程序设计           
C、空白符是一种可以被编译的符号    
D、标示符不宜过长,一般设定为16个字符
答案:A
解析:C 空白符被忽略掉
      D 标识符具体支持的长度根据编译器的不同而不同

42.   下列关于C++语言的发展说法错误的是(    )。
A、C++语言起源于C语言    
B、C++语言最初被称为“带类的C”    
C、在1980年C++被命名    
D、在1983年C++被命名
答案:C

43.   下面说法错误的选项是(     )。
A、引用表达式是一个左值表达式,因此它可以出现在形参和实参的任何一方
B、若一个函数返回了引用,那么该函数的调用也可以被赋值
C、所有函数都可以返回引用              
D、引用返回值时,不生成值的副本
答案:C
解析:比如析构函数

44.   下列表示引用的方法中,(     )是正确的。
已知:int k=1000;
A、int &x=k; 	    B、char &y;    C、int &z=1000;  D、float &t=&k;
答案:A
解析:B声明引用时必须赋值
	 C非const引用不能用常量赋值
	 D 类型不同

45.   下列程序的执行结果为(     )。
#include<iostream.h>
void mian()
{
 		int n=10;
 		int* pn=&n;
 		int* &rn=pn;
 		(*pn)++;
 		cout<<"n="<<n<<endl;
 		(*rn)++;
 		cout<<”n=”<<n<<endl;
}
A、 n=11          n=12
B、 n=11          n=11
C、 n=10          n=11              
D、 n=11          n=10
答案:A
解析:(*pn)++ 相当于 n++ ,所以n的值被修改为11
	 接下来,同理,(*rn)++ 相当于再一次的n++,所以n的值被修改为12

46.   下列引用的定义中,(     )是错误的。
A、int i;      int &j=i;      
B、int i;      int &j;      j=i;
C、float i;      float &j=i;
D、char d;        char &k=d;
答案:B
解析:引用被声明时必须初始化

47. (     )是给对象取了一个别名,他引入了对象的同义词。
A、指针  
B、引用  
C、枚举 
D、结构
答案:B

48.   下列表示引用的方法中,(     )是正确的。
已知:int m=10;
A、int &x=m;           
B、int &y=10;            
C、int &z;           
D、float &t=&m;
答案:A
解析:同样是对引用的考察

49.   下面程序的运行结果是(     )。
#include<iostream.h>
void fun(int &a,int &b)
{
 		int p;
 		p=a;
 		a=b;
 		b=p;
}
void exchange(int &a,int &b,int &c)
{
 		if(a<b)fun(a,b);
 		if(a<c)fun(a,c);
 		if(b<c)fun(b,c);
}
void main()
{
 		int a,b,c;
 		a=12;
 		b=639;
 		c=78;
 		exchange(a,b,c);
 		cout<<"a="<<a<<",b="<<b<<",c="<<c<<endl;
}
A、a=639,b=78,c=12       
B、a=12,b=639,c=78    
C、a=639,b=12,c=78       
D、a=78,b=12,c=639
答案:A
	解析:fun()函数交换传入的两个参数的值
    	 exchange()函数把传入的参数按照从大到小的顺序排列
  
50.   下面的程序输出结果为(    )。
#include<iostream.h>
void main()
{
 		int *ir;
 		int i;
 		ir=&i;
 		i=17;
 		cout<<"int i="<<i<<endl;
 		cout<<"int ir="<<*ir<<endl;
}
A、int i=17      int ir=0        
B、int i=0       int ir=17
C、int i=17      int ir=17
D、程序语法错误,没有输出结果
答案:C
解析:对指针的简单考察

51.   对定义重载函数的下列要求中,( )是错误的。
A、要求参数的个数不同     
B、要求参数中至少有一个类型不同
C、要求参数个数相同时,参数类型不同  
D、要求函数的返回值不同
答案:D
解析:重载规则:
		1)必须在同一作用域中
		2)基于形参表不同而构成重载。
		3)基于指针(或引用)形参是否为const也可以构成重载
4)在类中,基于成员函数是否为const可以构成重载(成员函数的const就是把隐含
的this指针const了)


52.   下面函数调用语句中实参的个数是()。
xxx((v1,v2),(v3,v4,v5),v6);
A、3     B、4            C、5         D、6
答案:A
解析:括号操作符

53.   系统在调用重载函数时往往根据一些条件确定哪个重载函数被调用,在下列选项中,不能作为依据
的是( )。
A、参数个数    B、参数的类型       C、函数名称              D、函数的类型
	答案:D

54.   若要定义一个只允许本源文件中所有函数使用的全局变量,则该变量需要使用的存储类别是()       
A、extern      B、register        C、auto         D、static
	答案:D

55.   在C++中,关于下列设置参数默认值的描述中,正确的是()
A、不允许设置设置参数的默认值       
B、设置参数默认值只能在定义函数时设置
C、设置参数默认值时,应该实现设置右边的再设置左边的   
D、设置参数默认值时,应该全部参数都设置
答案:C

56.   若有下面函数调用语句:
 	fun(a+b,(x,y),fun(n+k,d,(a+b)));
在此函数调用语句中实参的个数是(	)。
A、3     	B、4        C、5      D、6
答案:A

57.   下列对重载函数的描述中,(	)是错误的。
A、重载函数中不允许使用默认参数     
B、重载函数中编译时根据参数表进行选择
C、不要使用重载函数来描述毫无相干的函数   
D、构造函数重载将会给初始化带来多种方式
答案:A

58.   在函数声明时,下列( )项是不必要的。
A、函数的类型     B、函数参数类型     C、函数的名字      D、返回值表达式
答案:D

59.   在函数的返回值类型与返回值表达式的类型的描述中,错误的是()。
A、函数返回值的类型是在定义函数时确定,在函数调用时是不能改变的  
B、函数返回值的类型就是返回值表达式的类型
C、函数返回值表达式类型与返回值类型不同时,函数表达式类型应转换成返回值类型
D、函数返回值类型确定了返回值表达式的类型
答案:B
解析:可隐式转换的类型

60.   下面变量和函数说明:
#include<iostream.h>
char ch='*';
void sub(int x,int y,char ch,double *z)
{
 		switch(ch)
  		{
   			case '+':*z=x+y;break;
   			case '-':*z=x-y;break;
   			case '*':*z=x*y;break;
   			case '/':*z=x/y;break;
  		}
}
下面合法的函数调用语句是( ) 。         
A、sub(10,20,ch,y);    
B、sub(1.2+3.2,'+',&z);   
C、sub(sub(1,2,'+',&y),sub(3,4,'+',&x),'-',&y);      
D)sub(a,b,&x,ch);
答案:B
解析:A,最后一个参数应该传指针
		C 前两个参数是函数的返回值,sub函数的返回值是void
		D 参数错乱

61.   下列程序的输出结果是(	)。
#include<iostream.h>
void sub1(char a,char b)
{
 		char c;
 		c=a;
 		a=b;
 		b=c;
}
void sub2(char *a,char b)
{
 		char c;
 		c=*a;
 		*a=b;
 	b=c;
}
void sub3(char *a,char *b)
{
 		char c;
 		c=*a;
 		*a=*b;
 		*b=c;
}
void main()
{
 		char a,b;
 		a='A';
 		b='B';
 		sub1(a,b);
 		putchar(A);
 		putchar(b);
 		a='A';
 		b='B';
 		sub2(&a,b);
 		putchar(a);
putchar(b);
 		a='A';
 		b='B';
 		sub3(&a,&b);
 		putchar(a);
 		putchar(b);
 		putchar('\n');
}
A、ABABAB     B、ABBBBA        C、ABBABA     D、ABABBA
答案:B
解析:考察指针值传递和地址传递问题

62. 下面程序的正确执行结果为。
#include<iostream.h>
int f(int);
void main()
{
 		int a=2,i;
 		for(i=0;i<3;i++)
 			cout<<f(A)<<" ";
 		cout<<endl;
}
int f(int A)
{
 		int b=0;
 		static int c=3;
 		b++;
 		c++;
 		return (a+b+c);
}
A、7 7 7      B、7 10 13      C、7 9 11      D、7 8 9
答案:D
解析:static的变量的声明周期问题,生命周期一直到程序结束

63.   下面程序的正确执行结果为(	)。
#include<iostream.h>
void fun(char **m)
{
 		m++;
 		cout<<*m<<endl;
}
void main()
{
 		static char *a[]={"MORNING","AFTERNOON","EVENING"};
 		char **n;
 		n=a;
 		fun(n);
}
A、为空      B、MORNING         C、AFTERNOON         D、EVENING
答案:C
解析:m++相当于a+1,指向数组的下一个元素

64.   下面程序的输出结果(	)。
#i nclude<iostream.h>
int fun(char *s)
{
 		char *p=s;
 		while(*p!='\0')
  			p++;
 		return (p-s);
}
void main()
{
 		cout<<fun("ABCDEF")<<endl;
}
A、3    B、6    C、8    D、0
答案:B
解析:函数fun的作用是:传入一个带有’\0’的字符串,然后获取字符个数

65.   当一个函数无返回值时,函数的类型应定义为(	)。
A、void     B、任意     C、int    D、无
答案:A

66.   下面叙述中不正确的是(	)。
A、在函数中,通过return语句传回函数值   
B、在函数中,可以有多条return语句
C、主函数名main()后面的一对圆括号中也可以带有形参   
D、调用函数必须在一条独立的语句中完成
答案:D
解析:可以在任意地方完成函数调用

67.   下列( )的调用方式是引用调用。
A、形参是指针,实参是地址值   
B、形参和实参都是变量  
C、形参是数组,实参是变量    
D、形参是引用,实参是变量
答案:D
解析:函数参数是引用时,传递类型相同的实参时,相当于给实参起了一个别名

68.   在C++中,函数原型不能标识(	 )。
A、函数的返回类型     
B、函数参数的个数     
C、函数参数类型   
D、函数的功能
答案:D
解析:函数可以先声明,不实现

69.   下列标识符中,(	)是文件级作用域的。
A、函数形参    
B、语句标号      
C、外部静态类标识符      
D、自动类标识符
答案:C

70.   在传值调用中,要求(	)。
A、形参和实参类型任意,个数相等     
B、实参和形参类型都完全一致,个数相等
C、实参和形参对应的类型一致,个数相等
D、实参和形参对应的类型一致个数任意
答案:C

71.   有一个int型变量,在程序中频繁使用,最好定义它为( )。
A、register    B、auto     C、extern     D、static
答案:A

72.   考虑下面的函数原型:void testDefaulParam(int a,int b=7,char z='*');
下面函数调用中不合法的(	)。
A、testDefaulParam(5);       
B、testDefaulParam(5,8);
C、testDefaulParam(5,'#');      
D、testDefaulParam(0,0,'*');
答案:C
解析:因为有默认参数,所以调用testDefaulParam函数时只需要传递一个实参就可以了。如果传递
了更多的参数,仍然需要遵守参数传递原则。

73.   采用函数重载的目的在于。
A、实现共享    B、减少空间     C、提高速度     D、使用方便,提高可靠性
答案:D

74.   要求通过函数来实现一种不太复杂的功能,并且要加快执行速度,选用()。
A、内联函数    B、重载函数   C、递归函数     D、嵌套函数
答案:A
解析:注意内联函数所实现的功能应该尽量简单,太复杂的功能不适合用内联函数

75.   下面程序的输出结果是(	)。
#i nclude<iostream.h>
void fun(int i);
int main()
{
 		int n=2;
 		fun(n);
 		return 0;
}
void fun(int i)
{
 		static int x=1;
 		int y=1;
 		if(i>0)
 		{
  			++x;
  			++y;
  			cout<<x<<' '<<y<<' ';
  			fun(i-1);
 		}
}
A、语法错误,不能输出正确结果      
B、2 2 2 2   
C、2 2 3 3    
D、2 2 3 2
答案:D
解析:static变量的生命周期

76.   下面程序的输出结果为(	)。
#i nclude<iostream.h>
void prt(int *x,int *y,int *z)
{
 		cout<< ++*x << "," << ++*y << "," << *(z++) << endl;
}
int a=10;
int c=20;
int b=40;
void main()
{
 		prt(&a,&b,&c);
 		prt(&a,&b,&c);
}
A、11,42,31      12,21,41       B)11,41,20      12,42,20
C、11,21,40      11,21,41    	D、11,41,21      12,42,22
答案:B
解析:每一次输出都是先自加1后再输出

77.   下面程序的正确运行结果为(	)。
#include<iostream.h>
fun(int a,int B)
{
 		static int m=1,i=2;
 		i+=m+1;
 		m=i+a+b;
 		return(m);
}
void main()
{
 		int k=5,m=2,p;
 		p=fun(k,m);
 		cout<<p<<",";
 		p=fun(k,m);
 	cout<<p<<endl;
}
A、11,22    B、12,23     C、11,23     D、10,23
答案:C
解析:static变量的生命周期问题

78.   下面程序的输出结果是(	)。
#include<iostream.h>
void fun(int *s,int *y)
{
 		static int t=3;
 		*y=s[t];
 		t--;
}
void main()
{
 		int a[]={1,2,3,4};
 		int i,x=10;
 		for(i=0;i<4;i++)
 		{
  			fun(a,&x);
  			cout<<x<<",";
 		}
 		cout<<endl;
}
A、1,2,3,4    B、0,0,0,0     C、4,4,4,4   D、4,3,2,1
答案:D
解析:static变量的生命周期问题。

79.   下面程序的输出结果是(	)。
#include<iostream.h>
int fun(char *s)
{
 		char *p=s;
 		while(*p!='\0')
  			p++;
 		return (p-s);
}
void main()
{
 		cout<<fun("ABCDEFGHIJKLMNIPQRST")<<endl;
}
A、20    B、6     C、19    D、0
答案:A
解析:函数fun的作用时,传入一个带有’\0’的字符串,然后获取字符个数

80.   下面程序的输出结果是(	)。
#i nclude<iostream.h>
int x=10;
void fun(int c);
void main()
{
 	fun(x);
 		cout<<"x="<<x<<endl;
}
void fun(int x)
{
 		x=1;
}
A、x=0   B、x=1   C、x=10    D、语法错误,不能输出正确结果
答案:C
解析:值传递不会修改传入的实参的值

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值