1、国家二级 C+机试(操作题)模拟试卷 357及答案与解析 一、基本操作题 1 使用 VC6打开考生文件夹下的源程序文件 modi cpp,该程序运行时有错误,请改正错误,使得程序正常运行,并且要求最后一个 catch()必须抛出执行的任何异常。 程序通过抛出异常输出: error 0 ERROR 注意:不要改动 main函数,不能增行或删行,也不能更改程序的结构,错误的语句在 *error*的下面。 linclude int msin() try throw(“error”); *error* catch(char s) cout #include #include using namespa
2、ce std; Void WriteFile(char*s) void fun(char*s) void ClearFile() ofstream outl ; outl open(“modi2 txt”); out1 Close(); int main() C1earFile(); char s1 02 4; cout Class TestClass public: *1* data=d; next=NULL; void SetNext(TestClass*p) next=p; private: int data; TestClass*next; *2* *3* ; TestClass*fu
3、n(TestClass*h) TestClass *t, *s, *u, *v; s=h一 next; h一 next=NULL; while(s!=NULL) for(t=s, v=h; v!=NULL V一 datadata; u=v, v= V一 next); s=s一 next; if(v=h) h=t; else u一 neXt=v; t一 next=v: return h; void msin() TestClass*h=NULL; TestClass*q=NULL; do int data; coutdata; if(data=0)brea k; TestClass*p= new
4、 TestClass(data); if(h=NULL) h=q=p; else q一 SetNext(p); q=p; while(1); h=fun(h); for(; h!=NULL; ) q=h一 next; coutdata=A Si=a Si=z) 如果是小写字符,转换为大写字符 Si=si一 a+A; sia+A等于字符 si一 32 WriteFile(s); 【试题解析】 (1)本题要求实现两个函数的功能,其中 WriteFile(char*s)实现把字符串输入到文件中; fun(char*s)函数实现大写字母转换成小 写字母,把其中的小写字母转换成大写字母。其中大小写字母之
5、问的 ASC 码差为 32。 (2)从已给部分源程序的 main主两数开始入手,首先实现 WriteFile函数,然后再实现 fun函数,并在其中调用 WriteFile函数。 三、综合应用题 3 【正确答案】 (1)添加语句: Testclass(int d) (2)添加语句: friend Testclas s*fun(TestClass*); (3)添加语句: friend void main(); (4)添加语句: h=q; 【试题解析】 本题的 功能是将键盘输入的数字建立一个链表。在 VC环境下打开程序,根据题干给出的几条功能要求,对程序中给出注释下的内容逐个补全或修改。从已定源程序的 main主函数开始入手,可以看出程序通过调用类 TestClass和函数 fun实现各种输出操作。