- 相關(guān)推薦
計算機二級考試C++上機考試試題
計算機二級考試臨近,不知道各位同學(xué)都準(zhǔn)備得怎么樣呢?接下來應(yīng)屆畢業(yè)生小編為大家精心準(zhǔn)備了計算機二級考試C++上機考試試題,希望能夠給大家?guī)韼椭?
一、程序改錯題
使用VC++6.0打開考生文件夾下的源程序文件1.cpp。本程序要求輸入一個字符串,然后將其中的小寫字母改成大寫字母,字符可能輸入多行,當(dāng)輸入字符“?”時,默認(rèn)字符輸入結(jié)束,最后把結(jié)果輸出到屏幕中。
注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)構(gòu),錯誤的語句在//******error******的下面。
試題程序:
#include
voidmain()
{
inti=0;
charstr[120];
cout<<"Enterastringendwith’?’."< //********error********
cin.getline(str,120);
//********error********
while(str)
{
//********error********
if(str[i])=’a’)
str[i]=str[i]-’a’+’A’;
i++;
}
cout< return;
}
二、簡單應(yīng)用題
使用VC++6.0打開考生文件夾下的源程序文件2.cpp。完成函數(shù)fun(char*sl,char*s2)的空出部分。函數(shù)fun(char*s1,char*s2)的功能是將在字符串s1中下標(biāo)為偶數(shù)的字符,緊隨其后重復(fù)出現(xiàn)一次,放在一個新串s2中,s2中字符按原字符串中字符的順序排列。(注意0為偶數(shù))
例如:當(dāng)s1中的字符串為“abcdef”時,s2中的字符串應(yīng)為“aaccee”。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include(iostream.h)
voidfun(char*s1,char*s2)
{
}
voidmain()
{
charsi[100】,s2【1OO];
cout<<"Pleaseenterstringstrin9:"< cin.getline(s1,100);
fun(s1,s2);
cout<<"Theresultis:"< return;
}
三、綜合應(yīng)用題
使用VC++6.0打開考生文件夾下的源程序文件3.cpp,其中定義了用于表示日期的類Date,但類Date的定義并不完整,按要求完成下列操作,將類的定義補充完整。
(1)定義私有成員變量year、month、day。分別表示年、月、日,類型為int。請在注釋1后添加適當(dāng)?shù)恼Z句。
(2)完成構(gòu)造函數(shù),分別給year、month、day賦值,請在注釋2后添加適當(dāng)?shù)恼Z句。
(3)完成重載符號“十=”的定義,請在注釋3后添加適當(dāng)?shù)恼Z句。
(4)完成print打印函數(shù),輸出到屏幕和文件的格式相同,請在注釋4后添加適當(dāng)?shù)恼Z句。
注意:僅在函數(shù)指定位置添加語句,請勿改動主函數(shù)main與其他函數(shù)中的任何內(nèi)容。
程序正常運行,輸出的結(jié)果為2008年11月813。
試題程序:
#include(iostream.h)
#include(fstream)
#include(iomanip)
#include usingnamespacestd;
voidWriteFile(intc)
{
ofstreamout1;
out1.open("3.txt",ios_base::app);
out1< out1.close();
}
voidWriteFile(char*str)
{
ofstreamoutl;
out1.open("3.txt",ios_base::app);
out1< out1.close();
}
voidClearFile()
{
ofstreamout1;
out1.open("3.txt");
out1.close();
}
classDate
{
public:
Date(inty,intm,intd)
{
//********1********
}
voidprint();
//********2********
{
month+=m;
inti=month/12:
intj=month;
if(j==0)
{year+=(i-1);
month=12;
}
else
{
year+=i:
month=j;
}
return*this;
}
private:
//********3********
};
voidDate::print()
{
//********4********
WriteFile(year):
WriteFile("年");
WriteFile(month);
WriteFile("月");
WriteFile(day);
WriteFile("日");
}
intmain()
{
ClearFile();
DateOly_day(2008,8,8);
Olyday+=3:
Oly_day.print();
return0;
}
上機考試試題答案與解析
一、程序改錯題
(1)應(yīng)改為“ein.getline(str,120,’?’);”。
(2)應(yīng)改為“while(str[i])”。
(3)應(yīng)改為“if(str[i]>=’a’&&str[i]<=’2’)”。
【解析】本題中要求以輸入字符“?”為結(jié)束符,用于字符輸入的流成員函數(shù)getline函數(shù)讀入一行字符,格式為“cin.getline(字符數(shù)組,字符個數(shù),終止標(biāo)志字符)”,所以第1處改為“cin.getline(str,120,’?’);”。第2處的“while(str)”語句應(yīng)該是判斷字符串str中的每一個字符是否為結(jié)束符,若不是結(jié)束符,在循環(huán)中判斷每一個字符是否為小寫,若為小寫,則轉(zhuǎn)換。所以應(yīng)該修改為“while(str[i])”。第3處的“if(str[i]>=’a’)”語句是判斷字符str[i]是否為小寫字符,而現(xiàn)有的語句只是判斷字符是否大于’a’,但是小寫字符應(yīng)該是’a’到’2’,所以修改為“if(str[i]>=’a’&&str[i]>=’z’)”。
二、簡單應(yīng)用題
inti;
for(i=0;s1[i]!=0;i++)//循環(huán)判斷每一個字符
{
if(i%2==0)//判斷字符串中下標(biāo)為偶數(shù)位置
{
s2[i]=s1[3];
s2[i+1]=s1[i];
s2[i+2]=’