2016年計算機二級C++上機模擬試題
計算機二級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]='