- JAVA面試題:3道問(wèn)答題! 推薦度:
- 相關(guān)推薦
java面試題3
九、C++部分:(共14題:基礎(chǔ)10道,中等1道,較難3道)
188、以下三條輸出語(yǔ)句分別輸出什么?【基礎(chǔ)】
char str1[] = "abc";
char str2[] = "abc";
const char str3[] = "abc";
const char str4[] = "abc";
const char* str5 = "abc";
const char* str6 = "abc";
cout << boolalpha << (str1==str2) << endl; //輸出什么?
cout << boolalpha << (str3==str4) << endl; //輸出什么?
cout << boolalpha << (str5==str6) << endl; //輸出什么?
答:輸出為:false、false、true。
189、以下反向遍歷array數(shù)組的方法有什么錯(cuò)誤?【基礎(chǔ)】
vectorarray;
array.push_back(1);
array.push_back(2);
array.push_back(3);
//反向遍歷array數(shù)組:
for(vector::size_type i=array.size()-1; i>=0; --i){
cout << array[i] << endl;
}
答:for循環(huán)中的變量i的類型不應(yīng)定義為vector::size_type,
因?yàn)樵擃愋蜑闊o(wú)符號(hào)數(shù)值類型,故循環(huán)條件將恒成立,為死循環(huán),應(yīng)將其類型定義為有符號(hào)的int類型。
190、以下代碼有什么問(wèn)題?【基礎(chǔ)】
cout << (true ? 1 : "1") << endl;
答:運(yùn)算符中兩個(gè)可選值的類型不同。
191、以下代碼有什么問(wèn)題?【基礎(chǔ)】
typedef vectorIntArray;
IntArray array;
array.push_back(1);
array.push_back(2);
array.push_back(2);
array.push_back(3);
//刪除array數(shù)組中所有的2
for(IntArray::iterator itor=array.begin(); itor!=array.end();
++itor){
if(2==*itor) {
array.erase(itor);
}
}
答:for循環(huán)中的if語(yǔ)句后的array.erase(itor)語(yǔ)句,它將迭代器itor所指向的元素刪除后會(huì)自動(dòng)下移一位,故應(yīng)在其后加上語(yǔ)句:itor--;
192、以下代碼中的兩個(gè)sizeof用法有問(wèn)題嗎?【基礎(chǔ)】
void upperCase(char str[]){ //將str中的小寫(xiě)字母轉(zhuǎn)換成大寫(xiě)字母
for(int i=0; i
if(a<=str[i] && str[i]<=z)
str[i] -= (a-A);
}
}
int main(){
char str[] = "aBcDe";
cout << "str 字符串長(zhǎng)度為:" << sizeof(str)/sizeof(str[0]);
cout << endl;
upperCase(str);
cout << str << endl;
return 0;
}
答:在upperCase方法中,for循環(huán)的sizeof(str)的值將總是4,所以該方法只能將參數(shù)中的字符串的前四個(gè)字符轉(zhuǎn)換成大寫(xiě)字母。
193、以下代碼能夠編譯通過(guò)嗎?為什么?【基礎(chǔ)】
unsigned int const size1 = 2;
char str1[size1];
unsigned int temp = 0;
cin >> temp;
unsigned int const size2 = temp;
char str2[size2];
答:能;
194、以下代碼有什么問(wèn)題?【基礎(chǔ)】
struct Test{
Test(int){}
Test(){}
void fun(){}
};
void main(void){
Test a(1);
a.fun();
Test b();
b.fun();
}
答:main函數(shù)的返回類型應(yīng)為int;不能對(duì)b調(diào)用fun()方法。
195、以下代碼中的輸出語(yǔ)句輸出0嗎?為什么?【基礎(chǔ)】
struct CLS{
int m_i;
CLS(int i):m_i(i){ }
CLS(){ CLS(0);}
};
int main(){
CLS obj;
cout <
}
答:輸出不是0;
196、C++中的空類,默認(rèn)產(chǎn)生哪些類成員函數(shù)?【基礎(chǔ)】
答:空類中默認(rèn)包含的成員函數(shù)如下:
class Empty{
public:
Empty(); //缺省構(gòu)造函數(shù)
Empty( const Empty& ); //拷貝構(gòu)造函數(shù)
~Empty(); //析構(gòu)函數(shù)
Empty& operator=( const Empty& ); //賦值運(yùn)算符
Empty* operator&(); //取址運(yùn)算符
const Empty* operator&() const; //取址運(yùn)算符const
};
197、統(tǒng)計(jì)一篇文章中單詞個(gè)數(shù)!净A(chǔ)】
答:代碼如下:
include
#include
using namespace std;
int main(){
ifstream fin("t.txt");
if(!fin){
cout<<"can open file"<
return -1;
}
int count = 0;
char buf[256];
memset(buf, 0, 256);
while(1){
fin2>>buf;
if(fin2.eof())
break;
count++;
}
cout<<"The number of the words is : "<
fin2.close();
return 0;
}
198、寫(xiě)一個(gè)函數(shù),完成內(nèi)存之間的拷貝!局械入y度】
答:代碼如下:
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(){
char str[] = "0123456789";
mymemcpy(str+1, str+0, 9);
cout << str << endl; //將輸出"0012345678"
return 0;
}
199、非C++內(nèi)建類型A和B,在哪幾種情況下B能隱式轉(zhuǎn)化為A?【較難】
答:a)class B : public A{……}//B公有繼承自A,可以是間接繼承的
b)class B{operator A();}//B實(shí)現(xiàn)了隱式轉(zhuǎn)化為A的轉(zhuǎn)化
c)class A{ A(const B&);}//A實(shí)現(xiàn)了non-explicit的參數(shù)為B構(gòu)造函數(shù)
(可以有其他帶帶默認(rèn)值的參數(shù))
d)A& operator= (const A&);//賦值操作,雖不是正宗的隱式類型轉(zhuǎn)換,
但也可以勉強(qiáng)算一個(gè)
200、以下代碼有什么問(wèn)題?【較難】
void char2Hex(char c){ //將字符以16進(jìn)制顯示
char ch = c/0x10 +