C++笔试题库之编程、问答题 150~200道(三)

2014-11-23 23:42:02 · 作者: · 浏览: 26
<

}


system(“pause”);


}




182完成程序,实现对数组的降序排序



#include


using namespace std;



void sort(int* arr, int n);



int main()



{


int array[]={45,56,76,234,1,34,23,2,3};


sort(array, 9);


for(int i = 0; i <= 8; i++)//曾经在这儿出界


cout<

cout<

system(“pause”);


}



void sort(int* arr, int n)


{


int temp;


for(int i = 1; i < 9; i++)


{


for(int k = 0; k < 9 – i; k++)//曾经在这儿出界


{


if(arr[k] < arr[k + 1])


{


temp = arr[k];


arr[k] = arr[k + 1];


arr[k + 1] = temp;


}


}


}


}



183. 以下两条输出语句分别输出什么?[C++难]


float a =1.0f;


cout << (int)a << endl;


cout << (int&)a << endl;


cout << boolalpha << ( (int)a == (int&)a ) << endl; // 输出什么?


float b =0.0f;


cout << (int)b << endl;


cout << (int&)b << endl;


cout << boolalpha << ( (int)b == (int&)b ) << endl; // 输出什么?


1


1065353216


boolalpha0


0


0


boolalpha1



51. 以下反向遍历array数组的方法有什么错误?[STL易]


vector array;


array.push_back( 1 );


array.push_back( 2 );


array.push_back( 3 );


for( vector::size_type i=array.size()-1; i>=0; –i ) // 反向遍历array数组


{


cout << array[i] << endl;


}



184 写一个函数,完成内存之间的拷贝。[考虑问题是否全面]


答:


void* mymemcpy( void *dest, const void *src, size_t count )


{


char* pdest = static_cast( dest );


const char* psrc = static_cast( src );


if( pdest>psrc && pdest

{


for( size_t i=count-1; i!=-1; –i )


pdest[i] = psrc[i];


}


else


{


for( size_t i=0; i

pdest[i] = psrc[i];


}


return dest;


}


int main( void )


{


char str[] = “0123456789″;


mymemcpy( str+1, str+0, 9 );


cout << str << endl;



system( “Pause” );


return 0;


}



185 对于C++中类(class) 与结构(struct)的描述正确的为:


A,类中的成员默认是private的,当是可以声明为public,private 和protected,


结构中定义的成员默认的都是public;


B,结构中不允许定义成员函数,当是类中可以定义成员函数;


C,结构实例使用malloc() 动态创建,类对象使用new 操作符动态分配内存;


D,结构和类对象都必须使用new 创建;


E,结构中不可以定义虚函数,当是类中可以定义虚函数.


F,结构不可以存在继承关系,当是类可以存在继承关系.


答:A,D,F



186.两个互相独立的类:ClassA 和 ClassB,都各自定义了非静态的公有成员函数 PublicFunc() 和非静态的私有成员函数 PrivateFunc();


现在要在ClassA 中增加定义一个成员函数ClassA::AdditionalPunction(ClassA a,ClassB b);则可以在AdditionalPunction(ClassA x,ClassB y)的实现部分(函数功能体内部)


出现的合法的表达是最全的是:


A,x.PrivateFunc();x.PublicFunc();y.PrivateFunc();y.PublicFunc();


B,x.PrivateFunc();x.PublicFunc();y.PublicFunc();


C,x.PrivateFunc();y.PrivateFunc();y.PublicFunc();


D,x.PublicFunc();y.PublicFunc();


答:B



186.C++程序下列说法正确的有:


A,对调用的虚函数和模板类都进行迟后编译.


B,基类与子类中函数如果要构成虚函数,除了要求在基类中用virtual 声名,而且必须名字相同且参数类型相同返回类型相同


C,重载的类成员函数都必须要:或者返回类型不同,或者参数数目不同,或者参数序列的类型不同.


D,静态成员函数和内联函数不能是虚函数,友员函数和构造函数也不能是虚函数,但是析构函数可以是虚函数.


答:A


***************************************************************************



187 头文件的作用是什么


答:一、通过头文件来调用库功能。在很多场合,源代码不便(或不准)向用户公布,只要向用户提供头文件和二进制的库即可。用户只需要按照头文件中的接口声明来调用库功能,而不必关心接口怎么实现的。编译器会从库中提取相应的代码。


二、头文件能加强类型安全检查。如果某个接口被实现或被使用时,其方式与头文件中的声明不一致,编译器就会指出错误,这一简单的规则能大大减轻程序员调试、改错的负担。



188、以下为Windows NT下的32位C++程序,请计算sizeof的值(10分)



char str[] = “Hello” ;


char *p = str ;


int n = 10;


请计算


sizeof (str ) = 6 (2分)


sizeof ( p ) = 4 (2分)


sizeof ( n ) = 4 (2分)void Func ( char str[100])


{


请计算


sizeof( str ) = 4 (2分)


}



void *p = malloc( 100 );


请计算


sizeof ( p ) = 4 (2分)




3写出下列程序的运行结果。



unsigned int i=3;


cout<


189.写出下列程序所有可能的运行结果。



int a;


int b;


int c;



void F1()


{


b=a*2;


a=b;


}



void F2()


{


c=a+1;


a=c;


}



main()


{


a=5;


//Start F1,F2 inparallel


F1(); F2();


printf(“a=%d\n”,a);


}a=11



190一个链表的操作,注意代码的健壮和安全性。要求:


(1)增加一个元素;


(2)获得头元素;


(3)弹出头元素(获得值并删除)。




191.unsigned short array[]={1,2,3,4,5,6,7};


int i = 3;


*(array + i) =


答:


4



192


class A


{


virtual void func1();


void func2();


}


Class B: class A


{


void func1(){cout << “fun1 inclass B” << endl;}


virtual void func2(){cout << “fun2 inclass B” << endl;}


}


A, A中的func1和B中的func2都是虚函数.


B, A中的func1和B中的func2都不是虚函数.


C, A中的func2是虚函数.,B中的func1不是虚函数.


D, A中的func2不是虚函数,B中的func1是虚函数.



答:


A



193输出下面程序结果。


#include


class A


{


public:


virtual void print(void)


{


cout<<”A::print()”<

}


};


class B:public A


{


public:


virtual void print(void)


{


cout<<”B::print()”<

};


};


class C:public B


{


public:


virtual void print(void)


{


cout<<”C::print()”<

}


}