計算機二級C++考試按照新大綱需要學習的內容有:C++語言概述、C++語言資料型別、運算子和表示式、基本控制語句、陣列、指標與引用、函式、類和物件繼承、模板等內容。以下為大家整理了關於C++上機模擬考試題,希望能幫助到大家!
一、改錯題
使用VC6 開啟考生資料夾下的工程kt12_1 ,此工程包含一個源程式檔案kt12_ ,但該程式執行有問題,請改正函式中的錯誤,使該程式的輸出結果為:
100
源程式檔案kt12_ 清單如下:
#include
template
class pair
{
T value1,value2;
public:
pair(T first,T second)
{value1=first;value2=second;}
/*****************found*****************/
char getmax();
};
/*****************found*****************/
T pair::getmax()
{
T retval;
/*****************found*****************/
retval=value1>value2??value1:value2;
return retval;
}
void main()
{
pairmyobject(100,75);
cout<
}
【說明】題目裡的#include
如果改為#include
using namespace std;
會導致該題目中的pair 與標準庫的pair 重名,而報錯。
如果要改用標準庫,則該題目pair 的名字需要修改例如改為pair1
【參考答案】
(1 )將char getmax (); 改為:T getmax ();
(2 )缺少模板的宣告,前面需要加上:template
(3 )將retval = value1>value2?? value1 : value2;
改為:retval = value1>value2? value1 : value2;
【試題解析】
(1 )主要考查對模板使用的理解,該函式屬於模板類定義的一部分,對於返回值型別,應該使用模板類名稱T ,這樣編譯的時候才能被接受;
(2 )主要考查是模板的使用,前面的模板類已經宣告完成了,在類的外面定義類的成員函式時仍然需要使用模板的.宣告,這樣在後面的函式定義體中才能使用模板類;
(3 )主要考查對“ 表示式1? 表示式2 : 表示式3” 語句的掌握,這個語句是一個複合語句,先計算第一個表示式,如果為真則整個式子值為表示式2 的值,否則為表示式3 的值,題目中錯誤的使用了兩個問號。
#include
using namespace std;
template
class pair1
{
T value1,value2;
public:
pair1(T first,T second)
{value1=first;value2=second;}
/*****************found*****************/
T getmax();//char getmax();
};
/*****************found*****************/
template T pair1::getmax()//T pair1::getmax()
{
T retval;
/*****************found*****************/
retval=value1>value2?value1:value2;//retval=value1>value2??value1:value2;
return retval;
}
void main()
{
pair1myobject(100,75);
cout<
}
二、簡單應用題
請編寫函式fun() ,其功能是將s 所指字串中除了下標為奇數、同時ASCII 值也為奇數的字元之外,其餘的所有字元都刪除。字串中剩餘的字元所形成的一個新的字串放在t 所指的陣列中。
例如:s 所指字串中的內容為ABCDEFG12345 ,其中字元A 的ASCII 碼值雖為奇數,但元素所在的下標為偶數,因此必需刪除;字元1 的ASCII 碼值為奇數,所在陣列中的下標也為奇數,不刪除,最後t 所指的陣列中的內容應是135 。
請勿修改主函式main 和其他函式中的任何內容,僅在函式fun 的花括號中填寫若干語句。
檔案kt12_ 的內容如下:
#include
#include//#include
#include
#include//#include
using namespace std;
void fun(char*s,char t[])
{
}
void main()
{
char s[100],t[100];
cout<<"Please enter string S:"<
gets(s);
fun(s,t);
puts(t);
}
【參考答案】
void fun(char *s,char t[ ])
{ int i,j=0,n;
n=strlen(s);
for(i=0;i
if(i%2!=0&&s[i]%2!=0)
{ t[j]=s[i];j++;}
t[j]='