2016年计算机二级C++上机模拟试题
计算机二级的文章" target="_blank" >计算机二级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]='