2016年計算機二級C++上機模擬試題

來源:文萃谷 2.54W

計算機二級C++考試按照新大綱需要學習的內容有:C++語言概述、C++語言數據類型、運算符和表達式、基本控制語句、數組、指針與引用、函數、類和對象繼承、模板等內容。以下為大家整理了關於C++上機模擬考試題,希望能幫助到大家!

2016年計算機二級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]='